2009-10-15 5 views
2

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

Вот пример того, что один из наших таблиц может выглядеть следующим образом:

 
ClientID | SurveyID | AnswerKey | AnswerVal 
------------------------------------------- 
1  | 1  | Fname  | Fred 
1  | 1  | Lname  | Flintsone 
1  | 1  | Email  | [email protected] 
1  | 2  | Fname  | Mickey 
1  | 2  | Lname  | Mouse 
1  | 2  | Phone  | 555-3343 

мы называем их «вертикальные столы», но я не знаю, если это правильно.

+0

хотел бы узнать также! – mauris

+0

Где-то на какой-то странице в Википедии я больше не могу найти, они рассказывают о конструкциях баз данных, используемых для моделирования медицинских случаев, где может быть много возможных полей симптомов, это выглядело именно так. – Kev

ответ

7

я, вероятно, относятся к тому, как таблица Key-Value-Pair

2

Я бы назвал этот рисунок базы данных. Извините, что немного абразивный, но этот вид дизайна пахнет как анти-шаблон.

+0

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

0

Извините, но вы можете подумать о нормализации своей таблицы ... это может привести к поддерживаемому коду (и более понятному). Используйте силу реляционных таблиц!

4

«Какое имя для этой схемы таблиц?»

Crap.

Рассмотрите, что вам нужно было бы сделать, чтобы наложить ограничение типа на, скажем, поле AnswerValue для электронной почты.

Рассмотрите усилия, связанные с применением, возможно, требуемых ограничений «полноты», требующих, чтобы какой-либо определенный набор полей был представлен в каком-либо обследовании.

Рассмотрите усилия, связанные с созданием отдельных строк (из которых я предполагаю, что можно заранее знать, какие столбцы должны быть включены, потому что вы знаете, для какого пользователя вы работаете, таким образом, вы знаете, какие поля он интересует) ,

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

И я уверен, что есть еще ...

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