我有一個考試問題: 我的名字是D.我是三個小孩的父親,A,B和C.我有一個父母Z.我的父母有一個父母X我有一個兄弟,Y.我存儲在一個Mysql數據庫中。親子關係可能的mysql數據庫表結構
CREATE TABLE `test_tree` (
`idperson` int(11) NOT NULL,
`name` varchar(45) DEFAULT NULL,
`prime` int(11) DEFAULT NULL,
`product` int(11) DEFAULT NULL,
PRIMARY KEY (`idperson`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
INSERT INTO `temp`.`test_tree`
(`idperson`,
`name`,
`prime`,
`product`)
VALUES
('1', 'x', '2', '2'),
('2', 'z', '3', '6'),
('3', 'y', '17', '102'),
('4', 'd', '5', '30');
注:總理和產品用於計算我的家庭的父母子女關係。 Prime =下一個可用素數 Product =(prime *父級產品)。素數的每個產品只能被這些素數分開。
問題:可以用來創建樹的其他方法是什麼,它們與當前的解決方案相比如何?
我答:
Solution 1:
**test_tree**
-id pk
-parent_id fk (references id)
-name
Solution 2:
**person**
-id pk
-name
**relation**
-child_id fk (references person.id)
-parent_id fk (references person.id)
For me, solution 2 has redundant table.
ü可以給我建議其他的方法來創建表這樣的關係?
你建議的方式是我會這麼做的。 – 2012-08-01 17:31:17
謝謝,但問題也說:最多3個替代品。因此,必須有其他解決方案不是嗎? – rockstar 2012-08-01 17:33:24
確信你可以將關係存儲在一個單獨的表中,如果你有更復雜的關係需要映射,這可能會更合適。或者我最喜歡的是將樹結構存儲在NoSQL數據庫中,在這種情況下,您的案例將整個樹存儲對象表示。 – 2012-08-01 17:36:35