2012-07-04 5 views
0

У меня есть имена полей, f1, f2, f3, f4, f5, f6. Эти имена полей должны отображаться в зависимости от значений других имен полей.дизайн базы данных динамический стол

Пример, f3, должно быть показано, если f2 значение «COND1» f4 должно быть показано, если f3 значение «COND

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

может кто-то точка, как проектировать к базе данных Благодаря

ответ

2

Динамическая таблица для РСУБД является анти-модель. не делать это.

Возможно, базы данных NoSQL могут быть более подходящими для вашего случая использования - вот для чего они созданы.

Или, если вы настаиваете на реляционных отношениях, вам необходимо сделать свою базу данных динамической структурой - что-то вроде таблиц с ключом и управлять структурой. То есть структуры таблиц будут содержать как метаданные структуры, так и данные.

Если ваша структура достаточно проста, вам нужна только одна дополнительная таблица с составным ключом - исходным идентификатором и именем параметра.

1

Если только условие поле == значение, то я считал бы это:

| Field Table | 
|-------------| 
| id   | 
| fieldName | 
|-------------| 

| Conditional Table | 
|-------------------| 
| id    | 
| comparisonField | 
| comparisonValue | 
| displayField  | 
|-------------------| 

Так условие 1 будет иметь значение 1, 2, "COND1", 4 показать поле 4, если поле 2 == «COND1»

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

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