您認爲哪種方法是定義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