Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование и разработка баз данных. Лаборат...doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
3.07 Mб
Скачать

7Создание физической модели данных

7.1Выбор сервера

Физический уровень представления модели зависит от выбранного сервера. Для выбора СУБД служит редактор Target Server (меню Database/Choose Database... доступно только на физическом уровне) (рис. 27).

Рис. 27. Диалог Target Server

ERwin поддерживает практически все распространенные СУБД, всего более 20 реляционных и нереляционных БД. Диалог Target Server позволяет задать тип данных и опцию NULL для новых колонок, а также правила ссылочной целостности, принимаемые по умолчанию. Тип данных можно выбрать в раскрывающемся списке Default Datatype, который автоматически заполняется типами данных, поддерживаемых выбранным сервером.

Группа кнопок Default Non-Key Null Option позволяет разрешить или запретить значения NULL для неключевых колонок.

Окно выбора Allow special chars in names позволяет разрешить или запретить использование специальных символов и пробелов в именах таблиц. Эта опция действует только для тех СУБД, которые поддерживают использование специальных символов.

При смене СУБД ERwin предлагает автоматически преобразовать тип данных, связанный с каждым атрибутом, на ближайший, доступный для новой СУБД. Для автоматического преобразования следует в ответ на запрос нажать Yes.

7.2Таблицы и колонки

Для внесения новой таблицы в модель на физическом уровне служит кнопка на палитре инструментов. Связи между таблицами создаются так же, как на логическом уровне. Щелкнув правой клавишей мыши по таблице и выбрав во всплывающем меню пункты Table Properties или Columns, можно вызвать редакторы для задания свойств таблиц и колонок.

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

Редактор Tables позволяет задать свойства любой таблицы модели, отличные от значения по умолчанию, в том числе имя таблицы, синонимы, правила валидации, процедуры и т. д. (рис. 28).

Рис. 28. Диалог Table Editor

Приложение 3. Примеры кода на языке sql

На рис. 1 изображена модель данных для базы данных управления проектами на предприятии.

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

Внешний ключ связи СОТРУДНИК–НАЗНАЧЕНИЕ носит имя НомерСотрудника, а не ИдСотрудника, хотя указывает он по-прежнему на ИдСотрудника.

Имеется два ограничения ссылочной целостности.

  1. Значение атрибута НАЗНАЧЕНИЕ.ИдПроекта должно существовать среди значений атрибута ПРОЕКТ.ИдПроекта.

  2. Значение атрибута НАЗНАЧЕНИЕ.ИдСотрудника должно существовать среди значений атрибута ПРОЕКТ.ИдСотрудника.

Процедуры обеспечения ссылочной целостности обозначены на рис. 1. В связи ПРОЕКТ–НАЗНАЧЕНИЕ разрешены каскадное обновление и удаление, а в связи СОТРУДНИК–НАЗНАЧЕНИЕ – только каскадное обновление.

Удаление строк из таблицы СОТРУДНИК ограничено: запись о сотруднике можно удалить только в том случае, если у него нет ни одного назначения. В противном случае необходимо будет удалить имеющиеся назначения или передать их другому сотруднику, и только потом можно будет удалить строку данного сотрудника.

Поскольку каждый проект должен иметь минимум одно назначение, вставка строк в таблицу ПРОЕКТ ограничена: всякий раз, когда в таблицу ПРОЕКТ добавляется строка, необходимо создавать для нее новую строку в таблице НАЗНАЧЕНИЕ. Для этого будет использоваться триггер.

Рассмотрим теперь действия с таблицей НАЗНАЧЕНИЕ. Обновление столбца ИдПроекта ограничено: назначение, сделанное в рамках определенного проекта, нельзя переместить в другой проект. Кроме того, последнее назначение проекта не может быть удалено. В связи СОТРУДНИК–НАЗНАЧЕНИЕ таких ограничений нет.

а

б

Рис. 1. База данных управления проектами на предприятии:

а — модель данных; б — реляционная схема