Дополнительные описания связей
При разработке базы данных, помимо определения типов связей между объектами предметной области, а в моделировании между сущностями, фиксируются дополнительные характеристики каждой связи. К таким характеристикам относятся мощность (кардинальность) связи, смысловое наполнение (глагольная форма) связи, правила ссылочной целостности.
Пол мощностью (кардинальностью) связи понимается возможное количество экземпляров соответствующего объекта (сущности), связанных с одним экземпляром другого объекта (сущности).
Для определения мощности (кардинальности) связи необходимо проанализировать данные множества документов и вспомогательные сведения
из предметной области но взаимосвязи двух рассматриваемых структурных элементов (информационных объектов). Этот анализ должен показать количество значений одного информационного объекта в связи с одним экземпляром значения другого объекта. При этом необходимо рассматривать связь в обоих направлениях: от первого информационного объекта ко второму и наоборот. Подобный анализ связи позволит определить верхнюю границу мощности (кардинальности), но не даст практически никаких сведений о нижней границе. Для ее определения важно проанализировать процесс составления документа, а именно его наполнение сведениями, и выявить первоочередность заполнения данными соответствующих информационных объектов.
Важно понимать, что экземпляр информационного объекта считается созданным, когда будет заполнен хотя бы один его атрибут. Именно это правило работы с документами позволяет разработчику точно выявить нижнюю границу мощности (кардинальности) связи. Эта граница определяет возможность существования экземпляра объекта (сущности), не обладая необходимой связью со связанным объектом (сущностью), с возможными значениями "О" или "1".
Таким образом, при установлении мощности (кардинальности) связи (рис. 2.43) разработчик определяет количество экземпляров каждого объекта (сущности), которые могут быть связаны с одним экземпляром другого объекта (сущности), указывая эти сведения на схематичном представлении связи между двумя объектами (сущностями).
Рис. 2.43. Пример установления связи с указанной мощностью (кардинальностью) |
Для корректного определения мощности (кардинальности) связи необходимо, как и при определении типа связи, провести анализ связи со стороны каждого связываемого объекта (сущности) на предмет количества связанных экземпляров. Так, в рассматриваемом примере связи "Заказ - Клиент" можно сделать следующие рассуждения:
• рассмотрение связи от заказа к клиенту:
- верхняя граница мощности (кардинальности) "1" — заказ может быть сформирован не более чем одним клиентом, что подтверждается требованиями предметной области и документом "Заказ", где указывается только один клиент (покупатель) и указание какого-либо дополнительного клиента не предусматривается,
- нижняя граница мощности (кардинальности) "1" — заказ нс может быть сформирован, если клиент еще не определен, что подтверждается требованиями предметной области, по которым именно клиент указанием своих персональных данных определяет, что заказ сформирован и ему может быть присвоен уникальный номер;
• рассмотрение связи от клиента к заказу:
— верхняя граница мощности (кардинальности) "п" — клиент, неоднократно заказывая товары в магазине, может в разное время сформировать несколько заказов, что сформирует историю заказов клиента. Это подтверждается нс только требованиями предметной области, но и атрибутивным составом документа "Заказ", где указываются дата формирования заказа и уникальный номер заказа, которые однозначно определяют состав заказа клиента, но не ограничивают возможности существования множества заказов для одного клиента. Наряду с этим, невозможно определить максимальное количество заказов, которые может сформировать клиент, поскольку в предметной области нет ограничений на количество сделанных клиентом заказов в единицу времени и на продолжительность деятельности магазина,
— нижняя граница мощности (кардинальности) "О" — по требованиям предметной области для формирования заказа клиент должен быть авторизован и информационная система должна иметь сведения о клиенте, который формирует заказ, чтобы сразу закрепить его за этим клиентом. Это говорит о том, что клиент может присутствовать в качестве экземпляра объекта (сущности) "Клиент", но не иметь сформированных для него заказов, что и позволяет использовать указанное значение нижней границы мощности (кардинальности).
Такие рассуждения при установлении связей дают разработчику более точные сведения о сути происходящих в предметной области процессов и систематизируют информацию о том, по каким правилам должны храниться данные связанных объектов.
Другим характеристическим элементом связи между объектами является смысловое наполнение связи, которое в моделях базы данных представляется глагольной формой, обозначающей определенное действие, выполняемое одним объектом над другим. Данное описание связи необходимо не только для понимания сути деятельности в предметной области, но и для точной интерпретации данных, которые будут храниться в базе данных и описываться определенной структурой. Зачастую атрибуты объектов (сущностей) не обладают однозначной самостоятельной интерпретацией в предметной области и существуют в связке с другими атрибутами. Это существенно усложняет процесс корректного установления связи и правильного структурирования объектов (сущностей). К тому же, смысловое наполнение связи дает дополнительные сведения для определения ее мощности (кардинальности), где учитывается, каким образом взаимодействуют объекты в предметной области.
Например, рассматривая объект "Товар" в связке с объектами "Заказ" и "Склад", мы имеем различную смысловую нагрузку по этим связям, определяющую смысловое наполнение структуры соответствующих объектов. При рассмотрении связи "Товар — Заказ" смысловым наполнением будет: "наполняет" — в направлении к объекту "Заказ", "содержит" — в направлении к объекту "Товар" (рис. 2.44).
Правильность и точность формулировки смыслового наполнения связи позволяют разработчику максимально правильно определить правила работы со связанными данными и самой связью между объектами (сущностями). Указанные в примере глагольные формы характеризуют, что объект "Товар" в данной связке является субъектом для заказа и наполняет его, требуя указания характеристических атрибутов для связки, определяющих сведения, например, о количестве заказанных товаров в конкретном заказе. Также смысловое наполнение позволяет подтвердить обоснованность связывания этих двух объектов друг с другом. Для связи между объектами "Товар" и "Склад" будут использоваться другие смысловые описания, которые охарактеризуют суть атрибута "Количество товара на складе", который не должен по своей сути совпадать с атрибутом "Количество товара в заказе".
Зачастую, в целях сокращения наименований атрибутов, многие слова разработчиками опускаются, что приводит к потере правильного смысла соответствующих атрибутов, как, например, произошло с атрибутом "Количество". Если сто использовать в таком виде, то в конечном счете может сложиться ситуация, когда разработчик объединит этот атрибут в некой общей сущности, что приведет к некорректности структур данных по отношению к предметной области. Чтобы этого не произошло, смысловое наполнение связи дает достаточно информации и определяет правильность интерпретации соответствующих атрибутов.
В итоге этого рассмотрения разработчик получает достаточно полные сведения о взаимодействии объектов в предметной области и правилах хранения и обработки соответствующих данных. Для представления моделей взаимосвязей информационных объектов и базы данных используются различные нотации, где обязательно применяются правила, описанные в данном разделе, по установлению и характеризации связей между объектами (сущностями).