Дизайн базы данных - несколько типов объектов показаны иерархически? - PullRequest
0 голосов
/ 21 сентября 2011

Я боролся и искал решение об этом в течение нескольких дней, но я не могу найти какие-либо "лучшие практики" или хорошие объяснения того, как добиться того, чего я хочу.

Допустим, у меня естьбаза данных, состоящая из следующих таблиц (только пример):

Customers (Fields: Id, CustomerName, Location)

Products (Fields: Id, ProductName, ProductCode)

Groups (Fields: Id, GroupName)

Затем мне нужно связать их вместе, чтобы показать в виде дерева.Например;

Customer1
    |
    |-Group1
    |    |-Product1
    |    |-Product2
    |
    |-Group2
         |-Product2
         |-Product3
         |-Group3
              |
              |-Product1
              |-Product4

Как я уже сказал, это всего лишь пример.Реальное решение состоит из других типов.

Поскольку продукты могут появляться в нескольких местах, мне нужно создать «таблицу ссылок» для отображения иерархических данных.

Итак, я создал другую таблицу, похожую наthis;

Id (int)
ParentId (int)
ObjectType (int)
GroupId (int)
ProductId (int)
CustomerId (int)

Причина для поля ObjectType состоит в том, чтобы узнать, в какой базе данных мне нужно проверить имя элементов и т. д. для отображения в древовидном представлении.

Мой вопрос сейчас:Есть ли другой способ создать эту базу данных?Я занимаюсь разработкой на C # с использованием LINQ и т. Д.

1 Ответ

0 голосов
/ 21 сентября 2011

из вашего примера, каждый уровень дерева должен быть новой таблицей ссылок.

вы не показываете, если группа 1 повторяется для более чем одного клиента, должно ли содержание группы 1 также повторяться. но я предполагаю, что содержимое группы 1 одинаково независимо от того, какие клиенты связаны.

если вы действительно можете связать что-либо с чем-либо, то objectType - это то, что вам нужно ... но у вас будет что-то вроде:

parentId
ParentObjectType
childId
childObjectType
...