2012-08-01 2 views
0

У меня есть один экзаменационный вопрос: Меня зовут 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 и продукты используются для расчета родительских отношений с дочерью моей семьи. 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. 

Может у предложить мне другие способы создания таблицы для такого отношения?

+0

Способ, которым вы предложили, - это то, как я это сделал. –

+0

спасибо, но вопрос также говорит: max 3 alternatives.so должны быть другие решения, не так ли? – rockstar

+1

уверен, что вы можете хранить отношения в отдельной таблице, что, вероятно, было бы более уместным, если бы у вас были более сложные отношения, которые вы должны были сопоставить. Или моим фаворитом было бы сохранить древовидную структуру в базе данных NoSQL, и в этом случае вы сохраните объектное представление дерева в полном объеме. –

ответ

1

Вы указали «Вложенную модель набора» для представления иерархии.

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


В статье Википедии приводится пример, а также ссылки на другие ссылки с большим количеством примеров.

+0

Может ли вы дать один образец решения для этого вопроса с вышеуказанным вопросом? – rockstar

Смежные вопросы