【发布时间】: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