Я не уверен, что это хороший способ построить семейное дерево вообще.Использование «идентификатора отца», как вы делаете
- , позволяет отслеживать только одного родителя - не очень подходит для каких-либо серьезных исследований предков
- затрудняет внесение изменений - вам придется пересчитатьу всего удостоверения личности, если сделано исправление
- есть проблема, о которой упоминает @stefgosselin - как насчет семей с более чем 10 детьми?
Единственный плюс, который я могу видеть, это то, что это ужасно легкозапросить всех потомков одного предка, но это само по себе не стоит ИМО.
Я бы использовал обычные идентификаторы автоинкремента и дал бы каждой записи столбец parent
(или father
и * 1015).*, конечно, или для учета однополых родителей, parent1
и parent2
).Этот столбец будет содержать идентификатор родительской записи.
Тогда вы могли бы просто выполнять такие запросы, как
SELECT * FROM table WHERE father = `530`
, и запросы предков становились бы немного сложнее, но все остальное становится намного проще.