у города есть руководитель мэрии,
Например, если у города есть руководитель мэрии, и председатель обкома партии:
SCITY - справочник городов
|
cityid
|
|
manid_mer
|
FK sman - люди
|
manid_partyboss
|
FK sman- люди |
...
|
|
то это можно выразить иначе:
SCITY- справочник городов |
cityid
|
|
|
|
...
|
|
SBOSS - справочник начальников (один город - много начальников)
|
bossid
|
|
cityid
|
FK scity
|
bstypeid
|
FK cbstype - виды начальников
|
manid
|
FK sman - люди
|
и дополнительный справочник, отражающий, в сущности, понятия _mer и_partyboss первоначального варианта:
CBSTYPE - виды начальников |
bstypeid
|
|
bstypename |
Название (мэр, партийный лидер и т.д.)
|
Когда же разумно применять такое преобразование? Например, трудно представить себе, что у вектора появится третья вершина, или что у бухгалтерской проводки появится что-то кроме дебета и кредита - следовательно, таблица 1-N не нужна. А вот новые начальники в городе могут появиться запросто - например, военный комендант, если произойдет военный переворот, и командир партизанского военного округа, возглавляющий ему сопротивление. Баррикады, стрельба, переделка структуры БД... А с 1-N таблицей нам и структуру базы данных менять не надо, только дополнить справочник CBSTYPE!
Содержание Назад Вперед