Классика баз данных - статьи

       

у города есть руководитель мэрии,


Например, если у города есть руководитель мэрии, и председатель обкома партии:









































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!


Содержание  Назад  Вперед