2014-03-07 4 views
0

Я хочу хранить данные о гейрахике на SQL Server, и мне интересно, каким будет самый эффективный способ сделать это.Самый эффективный способ хранения архивных данных

Пример набора данных будет:

Department Manager #1 
    Product Manager #1 
    Team Leader #1 
     Team Member #1 
     Team Member #2 
     Team Member #3 
    Team Leader #2 
     Team Member #1 
     Team Member #2 
     Team Member #3 

etc... 
+2

Эффективный способ? Место хранения? Читает? Вставки? Легко объединяется? Любое решение будет иметь компромиссы. –

+0

Каков наиболее приемлемый способ сделать это? Я предполагаю, что между ними должен быть хороший баланс. – Matt

+0

Да, но есть ограничения для любого - если вы используете одну таблицу на уровень, то сложность уровня сложна. Если вы используете саморегулярную историю, то запрос трудно. –

ответ

3
Person Table 
- ID 
- ParentID 

Pros:

  • Вы можете поддерживать неограниченное глубину
  • легко редактировать

Минусы:

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

0

Самый общий ответ для хранения каждого типа объекта в таблице Diferent, поэтому на основе ваших данных, вам необходимо: 1 Стол для менеджеров Deparment 1 Таблица для менеджеров продуктов 1 Таблица для Team Leader 1 Стол для Члены команды.

В таблице «Члены команды» вам нужен один внешний ключ для каждой из других таблиц. Вы также можете сохранить все данные в одной таблице, но вы, вероятно, будете иметь дублированные данные. Надеюсь, что эта помощь.

+1

-1. Неверная вселенная и получение разговоров по HT во многих проектах, если только таблицы не являются принципиально разными. РАБОТА нет. – TomTom

Смежные вопросы