Мы имеем пять сущностей, информация о которых будет храниться в базе данных «Облака». Но еще не определены связи между данными. Например, пока непонятно, как связаны между собой книги и конкретные издательства.
Связь (relationship) – это функциональная зависимость между двумя сущностями (возможна связь сущности с самой собой). Если между некоторыми сущностями существует связь, то экземпляры одной сущности ссылаются или некоторым образом связаны с экземплярами другой сущности. Например, связь между издательствами, с одной стороны, и книгами, в производстве которых они принимают участие, с другой стороны.
На логическом уровне можно установить:
связь многие-ко-многим (M:N Relation);
неидентифицирующую связь один-ко-многим (1:N Relation);
идентифицирующую связь один-ко-многим (1:N Identifying Relation);
связь один-к-одному (1:1 Relation);
иерархия супертип-подтип.
Связь один-к-одному отображает такой характер связей между сущностями, когда каждому экземпляру одной сущности соответствует только один экземпляр другой, и наоборот. Например, муж женат только на одной жене, а жена, в свою очередь, состоит в браке только с одним мужем.
Наиболее часто в реляционной модели используется связь типа один-ко-многим. В таком случае один и только один экземпляр первой сущности связан со многими экземплярами второй сущности. Первая сущность называется родительской. Вторая сущность – дочерней. Например, связь между книгами и издательствами: каждая книга имеет единственного издателя, в то время как издательство может выпустить много книг.
Связь многие-ко-многим представляет ситуацию, где экземпляры одной сущности связаны с одним или большим количеством экземпляров второй сущности, и наоборот, экземпляры второй сущности связаны с одним и большим количество экземпляров первой сущности. Например, как связаны авторы конкретной книги? Каждый автор может написать много книг, и каждая книга в свою очередь может быть написана несколькими авторами.
Различают зависимые и независимые сущности. Тип сущности определяется ее связью с другими сущностями. Экземпляры независимой сущности могут быть уникально идентифицированы без определения связей с другими сущностями. А зависимая сущность, наоборот, не может быть уникально идентифицирована без определения связей с другими сущностями.
Идентифицирующая связь устанавливается между независимой (родительский конец связи) и зависимой (дочерний конец связи) сущностями. Экземпляр зависимой сущности определяется только через отношение к родительской сущности.
При установлении неидентифицируемой связи дочерняя сущность остается независимой. То есть неидентифицирующая связь служит для связывания независимых сущностей.
Связь должна иметь ими, выражаемое глаголом или глагольной фразой, например, «издательство выпускает книги». Глагол («выпускает») выражает некоторое ограничение, или бизнес-правило, и облегчает чтение диаграммы.
Сущность может быть расщеплена на два или большее число взаимно исключающих подтипов, каждый из которых включает общие атрибуты и связи. Эти общие атрибуты явно определяются один раз на более высоком уровне. В подтипах могут определяться собственные атрибуты и связи. В принципе, подтипизация может продолжаться на более низких уровнях, но опыт показывает, что в большинстве случаев оказывается достаточно двух-трех уровней.
Тип сущности, на основе которого определяются подтипы, называется супертипом. Подтипы должны образовывать полное множество, т. е. любой экземпляр супертипа должен относиться к некоторому подтипу [DM17].