Синтез таблиц базы данных на основе ER-модели. Характеристика конфликтов при генерации таблиц и их устранение.

На основе модели «сущность-связь» может быть автоматически синтезирована структура БД. Генерация осуществляется в соответствии со следующими правилами:каждая сущность преобразуется в табл,имя сущности становится именем табл;атрибуты сущности преобразуются в колонки табл,имена атрибутов становятся именами колонок;ключевые атрибуты становятся первичными ключами табл;если для сущности была определена ключевая связь,то первичный ключ табл для связанной сущности копируется и объединяется с ключом таблицы для рассматриваемой сущности;связиМ:1 и 1:1приводят к копированию первичных ключей табл для сущности,находящейся на одной стороне связи,в табл для сущности, находящейся на другом конце связи,если связь М:1,то ключи табл для сущности, находящейся на конце «один» копируются в табл для сущности,находящейся на конце «многие».

Рассмотренные правила генерации структуры БД являются достаточно общими,не учитывают обработку случаев конфликта имен и явно не отражают обработку “цепочек” ключевых связей.Кроме того,как правило различают логические и физические имена.Первые выступают как имена сущностей и атрибутов,а вторые используются при генерации в качестве имен табл и атрибутов.Использование физических имен вызвано тем,что многие СУБД накладывают ограничения на длину имени и набор допустимых символов.

Современные СУБД требуют,чтобы имена колонок в табл БД были уникальными.Конфликт имен возникает при совпадении имен колонок в результате копирования атрибутов одной сущности в табл для другой сущности (при обработке связей).

Типовыми случаями, приводящими к конфликту имен, являются следующие:наличие в модели двух связанных сущностей с совпадающими именами атрибутов,наличие между двумя сущностями более чем одной связи;рекурсивные связи.

Для разрешения конфликта имен используются следующие стандартные приемы:добавление в качестве префикса к имени атрибута имени сущности;добавление к имени атрибута порядкового номера;использование имени (физического имени) связи.