我有一个考试问题:
我的名字叫D。我是三个孩子A,B和C的父亲。我有一个父母Z。我的父母有父母X,我有一个兄弟Y。我存储在Mysql DB中。

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和产品用于计算我家庭的亲子关系。
素数=下一个可用素数
产品=(素数*父产品)。素数的每个乘积只能除以这些素数。

问题:可用于创建树的其他方法还有哪些?它们与当前解决方案相比如何?

我的回答:

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.


您能建议我其他方式创建这种关系的表吗?

最佳答案

您已经省略了用于表示层次结构的“嵌套集模型”。

http://en.wikipedia.org/wiki/Nested_set_model



维基百科文章提供了一个示例,以及带有大量示例的其他参考的链接。

关于mysql - 父子关系的可能的mysql数据库表结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11764437/

10-12 17:09
查看更多