【问题标题】:MySql object linkingMySql 对象链接
【发布时间】:2017-04-18 10:18:39
【问题描述】:

我的问题可能很简单,但我不确定最佳答案是什么。

我有一个表(对象 1)需要与几个不同的表(其他对象)相关联。所以我看到了两种方法。要么创建一个包含以下内容的链接表:

lnkObject1Objects

  • lnkObjectObjectId - PK
  • object1Id - FK(必填字段)
  • object2Id - FK(非必填字段)
  • object3Id - FK(非必填字段)
  • object4Id - FK(非必填字段)

所以在这种情况下,字段 object1Id 仅填写,但仅填写字段 object2-4Id 之一。

我看到的第二种解决方案是创建 3 个不同的链接表

lnkObject1Object2

  • lnkObject1Object2Id - PK
  • ObjectId1 - FK(必需)
  • ObjectId2 - FK(必需)

lnkObject1Object3

  • lnkObject1Object3Id
  • PK ObjectId1 FK(必需)
  • ObjectId3 - FK(必需)

lnkObject1Object4

  • lnkObject1Object4Id
  • PK ObjectId1 - FK(必需)
  • ObjectId4 - FK(必需)

我赞成第一个选项,因为对于编程这可能更容易,但对于数据库设计,第二个解决方案更好。我会错过任何其他出色的解决方案吗?或者是否有一个很大的论据可以用于其中一个?

【问题讨论】:

    标签: mysql database database-design


    【解决方案1】:

    您可以创建一个带有类型列的表来维护与对象 1 链接的所有对象,如下所示

    这将是理想的,因为 DB 中没有空值。

    【讨论】:

    • 是的,这是可能的,但是您不能在 otherObjectId 列上创建外键,因为它可以映射到多个表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    相关资源
    最近更新 更多