Хотел написать универсальный каркас для веб приложений, но столкнулся с проблемой проектирования БД. Задумка в следующем: Есть категории, типы, элементы(ноды). Ноды могут быть любого типа и относится к любой категории. У ноды может быть связь с дочерними элементами. Например: нода типа "город", включает в себя ноды с типами "улица" и "река". Не соображу как построить базу для таких отношений.
Очевидным решением является использование Документ-ориентированной СУБД. Если же задача требует использования именно Реляционной СУБД, то логичным решением, на мой взгляд, будет реализация Документ-ориентированной схемы в контексте Реляционной СУБД.
Для этого можно использовать следующую модель:
Соответственно каждая конкретная Нода (Node) это запись в таблице Node, определяющая только имя класса, который будет использоваться для инкапсуляции данных при загрузке из базы. Таблица Value, в свою очередь, содержит не только данные типа "Свойство - Значение", но и ссылку на Ноду, к которой эти данные относятся, а так же идентификатор объекта.
Остается реализовать только загрузчик, который будет соответствовать следующей семантике:
interface ObjectRepository{
public Entity find(id, Entity);
}
Реализовать это не сложно, но нужно помнить, что решение довольно "тяжелое", так как лишено плюсов Реляционной и Документ-ориентированной СУБД. К счастью, качественный слой абстракции позволит всегда оптимизировать структуру такой БД перенеся часть сущностей в отдельные таблицы.
В Drupal сделано похожим образом. Только там node это посты, а вот taxonomy - это термины которые можно структурировать parent->child. Еще отдельно табл для настроек типа key->value
Сделать две таблицы.
В первой хранить все узлы:
node_id|node_name
1 |City
2 |Street
3 |River
4 |House
5 |Fish
Во второй обозначать связи
child_id|parent_id
2 |1
3 |1
4 |2
5 |3
вопрос должен изначально состоять не в структуре базы. вы сначала в теории проработайте ваши обьекты, какие у них будут свойства и т.д. Потом будете думать как составить модель данных. Иначе у вас получится бред и ущербная модель данных в базе. Иначе говоря структура базы должна отражать взаимосвязь моделей объектов системы в рамках мировоззрения бд.
На текущий уровень вашего вопроса вам достаточно 2 таблицы. В одной список нодов - такие таблицы называют справочники. и вторая - связь между нодами (колонка код нода, колонка кому подчиняется). Но поверьте опыту, с текущим подходом в дальнейшем возникнут проблемы.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
2 день пытаюсь найти решение в интернете не получается, многое что перепробовал надеюсь вы мне помочь сможете использую Xampp)
Здравствуйте, пишу регистрацию для сайтаПодключаю базу данных и пишет ошибка:
Мне нужно добавить узел в бинарное дерево, чтобы вышло так: "Binary Tree is a kind of orderly table"Условие задачи:
Visual Studio 2015Хочу посмотреть код через дизассемблер