我有一个考试题:我叫 D。我是三个孩子 A、B 和 C 的爸爸。我有一个父母 Z。我的父母有一个父母 X,我有一个兄弟 Y。我存放在一个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 和 products 用于计算我家的父子关系。Prime = 下一个可用的素数 Product = (prime * product of parent)。每个素数的乘积只能除以那些素数。
问题:可用于创建树的其他方法是什么?它们与当前解决方案相比如何?
我的回答:
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.
你能建议我为这种关系创建表的其他方法吗?