|
|
|
Создаем структуру БД: параметрический внешний ключ
|
|||
|---|---|---|---|
|
#18+
Нарисовал структуру БД в IBExpert. Получилось так, что поле Т1.П1 таблицы Т1 должно будет интерпретироваться программой как ссылка (ВК) на поле Т2.П1 таблицы Т2, если значение поля Т1.П2 равно, к примеру, 1, как ссылка на поле Т3.П1 таблицы Т3, если значение поля Т1.П2 равно 2 и как ссылка на поле Т4.П1 таблицы Т4, если значение поля Т1.П2 равно 3. Иными словами, значения поля Т1.П1 могут и повторяться, но, в зависимости от значения поля Т1.П2 будет являтся ссылкой на поле той или иной таблицы. 2 и 3 нормальные формы вроде выдержены, но что-то подсказывает, что такая структура может стать причиной багов. Если есть специалисты в области разработки БД, стоит ли оставлять так, либо как-то перестраивать структуру БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2009, 10:26 |
|
||
|
Создаем структуру БД: параметрический внешний ключ
|
|||
|---|---|---|---|
|
#18+
вариант: Создать родительскую таблицу Т0 и вынести туда общие поля (если есть) для дочерних таблиц Т2, Т3 и Т4 Для каждой записи дочерних таблиц Т2, Т3, Т4 есть единственная запись в родительской Т0. Т0.Тип - поле типаж дочерней таблицы. Ключа к дочерним нет. У всех дочерних есть ключ к Т0. Можно использовать PK дочерних как FK к родительской, то есть ИД дочерних и родительской будут совпадать. Соответственно Т1 ссылается на Т0. У Вас тоже нормальный вариант, я его называю использование "абстрактной таблицы T0" (по аналогии с ООП). С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2009, 10:57 |
|
||
|
Создаем структуру БД: параметрический внешний ключ
|
|||
|---|---|---|---|
|
#18+
Спасибо, вариант действительно более удачный. А использование "абстрактной" таблицы Т0 настораживает тем, что по сути часть структуры БД переносится на программную часть, вызывая дополнительную проверку при обращении, хотя, наверное это задача триггера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2009, 11:08 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36112633&tid=1543135]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 441ms |

| 0 / 0 |
