Я новичок в разработке баз данных и просто хотел несколько мнений относительно того, собираюсь ли я сделать это логически. Я создаю простую базу данных MySQL, через которую пользователи будут загружать элементы в ранее существующее (неизменяемое) иерархическое дерево.Рекомендации по созданию иерархической базы данных MySQL
В качестве простого примера:
Раздел 1
Подкласс 1.1
Подраздел 1.1.1
Район 1.1.2
Подкласс 1.2
Подраздел 1.2.1
Подраздел 1.2.2
Раздел 2
подкласса 2.1
Район 2.1.1
Район 2.1.2
подкласс 2.2
Подраздел 2.2.1
Подраздел 2.2.2
Структура дерева не изменится, пользователи будут просто загрузить продукты, которые подпадают под действие подразделений (в пути конкретной отрасли для организации большого количества продуктов). Я провел исследование списков смежности и вложенных наборов, но я склоняюсь к 3 отдельным таблицам, каждый из которых ссылается на первичный ключ своего родителя (видя, что верхние уровни дерева практически никогда не меняются). Когда новый продукт будет загружен, он будет ссылаться на всех трех своих родителей (если он подан в подразделение 1.1.2, он обязательно является частью раздела 1, раздел 1). Окончательное дерево будет состоять из 4 разделов с 10 разделами в каждом разделе и 10 подразделений в каждом подразделении. Это имеет смысл в качестве стартовой стратегии?
Взаимодействие с базой данных более или менее ограничено введением информации и категоризацией ее точно, а затем с возможностью показать, сколько продуктов было подано в любом разделе, подразделении или подразделении.Библиотека будет отображаться в нескольких раскрывающихся списках, а при нажатии на элемент списка будет отображаться сохраненная информация.
Любые рекомендации или ссылки на литературу/учебники были бы оценены!
Если у вас никогда не будет более 3 уровней, вы можете пойти «дешево» и просто иметь '(section_id, div_id, subdiv_id)' и хранить все это в одной таблице. он был бы уязвим для ошибок иерархии, таких как 'seC# 1, div 2.1, subsec 1.1.1'. –
Я согласен с Marc B, что ваша структура технически иерархична, но ее структура недостаточно динамична, чтобы гарантировать передовую структуру данных. вы могли бы избежать ошибок категорий с помощью простых ограничений. –
Большое спасибо Марку и Дэвиду! Дэвид, не могли бы вы расширить то, что вы подразумеваете под простыми ограничениями? Marc B, если все продукты должны быть отнесены к подразделу (например, «Apple Apple Macintosh Apple Orchard», подаваемому под AmericanFruit> Apples> Macintosh), я сразу же говорю, что у меня будет одна таблица, которая описывает неизменное дерево, и затем вторую таблицу, которая содержит определенную информацию и идентификатор для «Apple Macintosh Apple Apple Orchard» и ссылку на его родительский subdiv_id? Я надеюсь, что это ясно :) – TheNally