0

私の名前は D です。私は 3 人の子供、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');

注: プライムと製品は、私の家族の親子関係を計算するために使用されます。素数 = 次に利用可能な素数積 = (素数 * 親の積)。素数の各積は、それらの素数でしか割ることができません。

質問: ツリーを作成するために使用できる他の方法は何ですか?また、現在のソリューションとどのように比較しますか?

私の答え:

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.

そのような関係のテーブルを作成する他の方法を提案できますか?

4

1 に答える 1

1

階層を表すための「ネストされたセット モデル」を省略しました。

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


ウィキペディアの記事には、例と、多くの例を含む他の参考文献へのリンクが記載されています。

于 2012-08-01T18:00:52.033 に答える