У меня есть один экзаменационный вопрос: Меня зовут 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.
Может у предложить мне другие способы создания таблицы для такого отношения?
Способ, которым вы предложили, - это то, как я это сделал. –
спасибо, но вопрос также говорит: max 3 alternatives.so должны быть другие решения, не так ли? – rockstar
уверен, что вы можете хранить отношения в отдельной таблице, что, вероятно, было бы более уместным, если бы у вас были более сложные отношения, которые вы должны были сопоставить. Или моим фаворитом было бы сохранить древовидную структуру в базе данных NoSQL, и в этом случае вы сохраните объектное представление дерева в полном объеме. –