2015-01-13 82 views
0

我有一個主表peopleSQL複雜的雙向分層關係

id name 
1 I 
2 Bro 
3 Mom 
4 Father 

,我需要人與人之間的關係服務。爲此,我有一個表relations

id people_id relation_id type 
1 1   2    2 //brothers 
2 3   1    3 //sun 
3 3   4    1 //married 

的問題是如何保持這種複雜的一種關係?

例如,用戶3與1有關係,但由於關係3-4,用戶4與1具有相同的關係。另一個ex,1-2關係爲012,關係3-2產生關係etc ...

也許這是複製所有關係或改變設計的好方法嗎?

+2

您正在使用哪些DBMS? Postgres的?甲骨文? –

+1

我認爲你應該明確記錄所有關係。如果3&4是第二次婚姻而4與1沒有實際關係呢? –

+1

如果你想'模擬'家族樹',那麼你的設計有問題,你可以找到太多關於在互聯網上爲家譜設計一個數據庫[這裏](http://www.databaseanswers.org/) data_models/genealogy /)是一個樣本 – jfun

回答

0

如果您有父母和子女關係,則不需要擁有兄弟關係類型。這可以通過程序來解決,因爲同一個父親或母親的所有孩子關係都將成爲兄弟姐妹。

你的關係類型應該是:

  • 已婚父母到

你確實需要,不過婚姻倒數行。