Изменения

Перейти к: навигация, поиск

Модель сущность-связь

3313 байт добавлено, 19:23, 4 сентября 2022
м
rollbackEdits.php mass rollback
|Дополнительный ключ $n$ (англ. ''key'')
|}
 
'''Замечания:'''
* Так как любой атрибут обладает либо свойством обязательности, либо свойством необязательности, будем считать атрибуты необязательными по умолчанию, не указывая это свойство явно.
* Основной ключ можно выделить, подчеркнув атрибуты, входящие в него, сплошной линией.
== Связи ==
! style="background-color:#F0F8FF;" |Обозначение
|-
|style="padding: 10px3px" |Один|[[Файл:Db onemandatory.png|100px50px]]
|-
|style="padding: 10px3px" | Много|[[Файл:Db many.png|100px50px]]
|-
|Обязательный
|[[Файл:Db mandatory.png|100px50px]]
|-
|style="padding:20px3px"| Необязательный|[[Файл:Db optional.png|100px50px]]
|}
! style="background-color:#F0F8FF;" |По умолчанию
|-
|style="padding: 2px"|[[Файл:Many to many.png|200px120px]]
|Многие ко многим
|style="padding: 10px2px"|Единственность, необязательность
|-
|style="padding: 2px"|[[Файл:One to many.png|200px120px]]
|Один ко многим
|Единственность, обязательность
|-
|style="padding: 2px"|[[Файл:One to one.png|200px120px]]
|Один к одному
|Единственность, обязательность
|-
|}
 
'''Замечание:''' В дальнейшем будем считать, что значениями по умолчанию будет «один» и «необязательный».
== Ассоциации ==
Также существуют '''обобщенные ограничения''' (англ. ''generic''), позволяющие зафиксировать произвольное подмножество.
[[Файл:Все ограничения.png|600px]]
 
=== Выразительная мощность ограничений ===
* Для ассоциаций с двумя концами:
** Чен = Мерис = Обобщенные
* Для ассоциаций с тремя концами:
** Чен + Мерис = Обобщенные
* Для ассоциации с четырьмя и более концами:
** Чен + Мерис < Обобщенные
== Слабые сущности ==
|definition =
'''Слабой сущностью''' называется сущность, у которой недостаточно атрибутов для идентификации.}}
Слабая сущность обозначается двойным прямоугольникомс двойной границей.
{{Определение
|definition =
== Альтернативные нотации ==
Выше рассматривалась нотация '''Crow's foot''', предложенная Гордоном Эверестом.
===Нотация Питера Чена===
Модель Сущность-связь была предложена Питером Ченом в 1976 году, им же была предложена следующая графическая нотация:
 
[[Файл:Нотация Питера Чена.png|600px]]
 
===UML-нотация===
Для каждой таблицы явно подписывается, что она обозначает (ассоциацию, сущность и т.д.). Ограничения прописываются в виде $i..k$ (например, $1..n$), это позволяет наложить ограничение $2..n$, что было невозможно в Crow's foot.
 
[[Файл:UML-нотация.png|400px]]
 
===Object Definition Language===
Позволяет задавать схему базы данных кодом.
 
Рассмотрим пример. У студента есть идентификатор <code>Id</code>, имя <code>Name</code>, а также ссылка на группу <code>group</code>. Явно указываем, что противоположностью этой ссылки является соответствующее поле класса <code>Group</code>: <code>inverse Group::students</code>.
 
У группы есть <code>Id</code> и смножество студентов <code>students</code>, учащихся в группе. Указываем, что у студентов ссылка хранится в поле <code>group</code>.
 
В данном примере выражена связь один ко многим: студент зачислен в одну группу, в каждой группе есть несколько студентов.
 
'''class''' Student {
int Id;
string Name;
Group group inverse Group::students;
}
'''class''' Group {
int id;
Set<Student> students inverse Student::group;
}
1632
правки

Навигация