Должен ли отец знать о детях или наоборот? - PullRequest
1 голос
/ 30 июля 2011

Должен ли отец знать о детях или наоборот?

То есть в ситуации, когда у меня есть два вида объектов (предметы и категории), у каждого есть свои особенности и поля, и между ними есть связь, что у каждого предмета есть категория, в которой он находится.

Я хочу спросить двумя способами о том, что должно произойти, теоретически и в php + mysql.

Должны ли категории знать обо всех элементах, находящихся в нем, или каждый элемент должен знать о своей категории?

В php + mysql точный вопрос заключается в том, должен ли я для каждого элемента в своей строке сохранять идентификатор своей категории или создать специальную таблицу для этого отношения (каждая строка содержит идентификатор категории и идентификатор элемента)?

1 Ответ

3 голосов
/ 30 июля 2011

Лучшая практика - дети знают о родителях (например: parent_id). Альтернатива не масштабируема и очень обременительна для вашей системы. Вы можете легко выполнить запрос, чтобы НАЙТИ детей, хотя - SELECT * FROM items WHERE item_category = x. Причина этого в том, что при добавлении или удалении элементов категория не затрагивается. Он не становится другой категорией, потому что вы назначаете ему элемент или удаляете элемент из него, поэтому не должно быть никакого значения, какие элементы ему назначены.

Это отличается от настройки тегирования. В методе присвоения категории «один ко многим» элементы попадают в одну «категорию», но могут иметь много «функций». Функция тегирования является отношением «многие ко многим» и требует таблицы соответствия, которую вы упомянули. Присвоение родительских категорий требует только одного «родительского» поля в таблице элементов.

...