您认为哪种方法是定义1:1关系(如配偶)的最佳方式?在数据库中表示1:1关系的最佳方式是什么
在我的实际数据库中,我有一张人们的桌子,其中一些人将被分类为与桌子上的其他人“共同”(因此该人将因此与原始人联合)。 '联合'将用于确定每个人的付款。
我能有这样的事情
PERSON
------
Person_ID (PK)
Name
Phone
Joint_With_ID (FK)
其中Joint_With_ID要么是空或包含它们的联合与记录的PERSON_ID(和这个人的记录中包含的第一人的PERSON_ID),但我我不喜欢故意的空值。
我也可以有两个表
PERSON PERSON_JOIN
------ -----------
Person_ID (PK) Joined_ID (PK)
Name Person_ID
Phone Joined_With_Person_ID
,并在PERSON_JOIN两个记录的每对夫妇是共同 即
Person_ID Joined_With_Person_ID
5 8
8 5
两种情况提高PERSON1的可能性被记录为联合person2,但没有与person1联合的person2的记录。
我甚至可以在每个加入的PERSON_JOIN中只有一条记录,并且在尝试查看某个人是联合和谁时使用SQL来搜索这两个字段。但那太可怕了!
那么......最好的方法是什么?
*“并在PERSON_JOIN两个记录的每对夫妇是联合” *所以没有区别在元组{5,8}和{8,5}之间的信息中?我问,因为你在谈论付款,在一些应用程序中,这两个元组意味着两件不同的事情。 – 2014-10-11 16:53:08
是的,我更喜欢那种方法,但是你说的话是正确的,也让我担心 - 因此我的问题。应用程序需要知道某人是否与其他人一起决定是否支付联合费用或个人费用。如果他们是联合的,那么加入双方将支付联合费用。但是,正如你所说,其中一个元组是冗余的,只要用于查看一个人是否加入的sql可以考虑这两个字段。我宁愿以某种方式将其构建到架构中。 – user3209752 2014-10-11 17:45:36
我没有说其中一个元组是冗余的。我说过,在一些应用中,这两个元组意味着不同的东西。 – 2014-10-11 17:58:43