Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #52, МАРТ 2005 г.

Информационное моделирование в ERwin

Лавров Владислав (l-vv@r66.ru)

Спецвыпуск: Хакер, номер #052, стр. 052-028-5


1. тип связи (идентифицирующая или неидентифицирующая связь);

2. родительская сущность;

3. дочерняя (зависимая) сущность;

4. мощность связи;

5. допустимость пустых, или неопределенных, (null) значений.

Связь называется идентифицирующей, если экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в первичный ключ дочерней. Зависимая сущность при такой связи изображается на диаграмме прямоугольником с округлыми углами.

Для определения связей в ERwin выбирается нужный тип, затем мышью указывается родительская и дочерняя сущности. Идентифицирующая связь изображается сплошной линией, неидентифицирующая - пунктирной. Линии заканчиваются точкой со стороны дочерней сущности.

Теперь самое время применить всю эту мутную теорию на практике :). Требуется связать сущности "Поставщики" и "Поставщики_Контакты". Сущность "Поставщики" содержит данные о фирмах-поставщиках, каждый из которых имеет наименование, адрес, реквизиты и пр. В сущности "Поставщики_Контакты" будут хранить контактные данные представителей фирм-поставщиков. В этом случае отдельные экземпляры (все контактные лица) определятся только по своей принадлежности к конкретной фирме-поставщику, то есть через связь с экземплярами сущности "Поставщики". Связь идентифицирующая, поэтому ее следует установить на диаграмме. После этого шага первичный ключ "Код поставщика" родительской сущности "Поставщики" автоматически войдет в состав дочерней сущности "Поставщики_Контакты".

Очевидно, что сущность "Сотрудники" является родительской. Нет сотрудников - нет заказов. Каждый заказ сопровождает только один сотрудник фирмы-продавца (еще бы, подпустил бы он кого-нибудь к оформлению своего заказа :)).

Установка типа связи тоже не составит особого труда. Пару щелчков мыши - и связь присутствует. В глаза сразу бросятся два отличия от предыдущего варианта: линия связи сплошная, ключ из сущности "Сотрудники" перешел в сущность "Заказы" в качестве неключевого. Такой атрибут в дочерней сущности называется внешним ключом, и он служит для поиска и поддержания ссылочной целостности данных. Но об этом позже.

Мощность связи (Cardinality) представляет собой отношение количества экземпляров родительской сущности к соответствующему количеству экземпляров дочерней сущности. Мощность связи записывается в виде 1:N. ERwin предоставляет четыре варианта для N, которые изображаются дополнительным символом у дочерней сущности:

- ноль, один или больше (по умолчанию);

- ноль или один;

- один или более;

- ровно N, где N - конкретное число.

Допустимость пустых (null) значений в неидентифицирующих связях ERwin изображает пустым ромбиком на дуге связи со стороны родительской сущности.

Как обеспечить целостность данных?

Целостность означает правильность и непротиворечивость информации в базе данных. Есть целостность сущностей и целостность по ссылкам. С первым видом все понятно: ввел первичный ключ, и все экземпляры сущности стали отличимыми друг от друга. Сложнее обеспечить непротиворечивость данных при их обработке. Для этого надо задать какие-то процедуры обработки ключевых атрибутов (первичного и внешнего ключей), оформив правила поддержки ссылочной целостности.

Назад на стр. 052-028-4  Содержание  Вперед на стр. 052-028-6