2016-10-05 3 views
0

Я провел исследование в Интернете некоторое время, но не смог найти такую ​​же ситуацию. Мне нужно следующее:о базе данных таблицы дизайна

У меня есть 20 групп, и каждая группа имеет свой собственный шаблон документа. Например, в первой группе шаблон имеет 26 содержимого: A, B, C, D, E ..... Z. Но не все из этих 26 содержимого будут отображаться.

Например, документ 1 отобразит 10 содержимого, а документ отобразит 15 содержимого. Во второй группе шаблон содержит 30 содержимого: aa1, bb2, cc3, ..... yy30. Каждый документ будет отображать определенное содержимое в зависимости от переданных параметров, как и первая.

Я создам метод с параметрами и документы будут сгенерированы на основе переданных параметров.

Как мне создать таблицы базы данных на сервере sql? 1) Использовать A, B, C, D .... Z в качестве столбцов, значения будут либо истинными (show), либо false (not show)? Но каждая группа имеет разные шаблоны. Например, вторая группа будет иметь столбцы aa, bb, cc ..... Итак, мне нужно создать 20 таблиц для 20 групп? Это не хорошая стратегия? Записи будут понравится:

   A  B  C 
doc1  true true false 
doc2  true true false 

2) Использование А, В, С, D ... Z как строки, значения будут либо истинными (показать) или ложным (не показывать)? Тогда у них будет много избыточных записей. Например, документ 1 группы 1 будет содержать:

doc1 A true 
doc1 B true 
doc1 C false 
... 
doc2 
doc2 
... 
doc 

Просьба помочь дать совет. Благодаря!

+0

Какой уровень нормализации вы хотите? – nicomp

+0

это не имеет значения. Мы не заботимся об уровне нормализации – user3656901

ответ

0

Я понимаю, о вашей ситуации, как в:

  • У вас есть 20 групп
  • Каждая группа имеет набор содержимого
  • Каждая группа имеет несколько шаблонов документов
  • Каждый шаблон документа имеет несколько содержимое по мере необходимости.

Учитывая, что вы не заботитесь о нормализации; вам необходимо создать отдельную таблицу:

Таблица шаблонов (Группа, Документ, Контент) и добавлять строки только для содержимого, которое отображается (т. е. true в вашем примере) для документа группы.

Group Document Content 
----- -------- ------- 
G1  Doc1  A 
G1  Doc1  B 
G1  Doc2  A 
G1  Doc2  B 
... 
G2  Doc1  AA 
G2  Doc1  BB 
G2  Doc2  BB 
G2  Doc2  EE 
... 
+0

Недостатком этого подхода является то, что если есть новая группа, нам придется вставить в таблицу множество строк записей. правильно? – user3656901

+0

Нам не нужен первичный ключ в этом случае? – user3656901

+0

@ user3656901, Чтобы реализовать изменение, я считаю, что добавлять, редактировать и удалять строки более гибким способом по сравнению с созданием, изменением или удалением таблиц или столбцов. В общем, я предпочитаю дизайн базы данных, где DML может помочь реализовать изменения до и, если не требуется DDL. – Rupesh