Реляционная модель данных. Ключи — различия между версиями
(→Надключи) |
(→Надключи) |
||
Строка 40: | Строка 40: | ||
== Ключи == | == Ключи == | ||
=== Надключи === | === Надключи === | ||
+ | |||
+ | ==== Определения ==== | ||
{{Определение | {{Определение | ||
Строка 53: | Строка 55: | ||
}} | }} | ||
Надключ является '''идентификатором''' кортежа. | Надключ является '''идентификатором''' кортежа. | ||
+ | |||
+ | ==== Пример ==== | ||
+ | |||
+ | {| class="wikitable" style="float:right; margin-left:0.8em; clear:right;" | ||
+ | |+ Пример таблицы с паспортными данными | ||
+ | |- | ||
+ | ! SId | ||
+ | ! PassS | ||
+ | ! PassNo | ||
+ | ! LastName | ||
+ | ! FirstName | ||
+ | |- | ||
+ | |1 | ||
+ | |0000 | ||
+ | |123456 | ||
+ | |Иванов | ||
+ | |Иван | ||
+ | |- | ||
+ | |2 | ||
+ | |0001 | ||
+ | |098765 | ||
+ | |Петров | ||
+ | |Петр | ||
+ | |- | ||
+ | |3 | ||
+ | |0001 | ||
+ | |654321 | ||
+ | |Сидоров | ||
+ | |Сидр | ||
+ | |- | ||
+ | |4 | ||
+ | |0007 | ||
+ | |567890 | ||
+ | |Плюшкин | ||
+ | |Иван | ||
+ | |} | ||
+ | |||
+ | Сколько надключей в таблице с паспортными данными? | ||
+ | |||
+ | Очевидно, что <tex>SId</tex> и <tex>\{PassS, PassNo\}</tex> сами по себя являются надключами. | ||
+ | Тогда рассмотрим все возможные множества, которые содержат любой из этих надключ: | ||
+ | * Все для <tex>SId</tex>: <tex>1+C_4^1+C_4^2+C_4^3+C_4^4= 16</tex> | ||
+ | * Все без SId для <tex>\{PassS, PassNo\}</tex>: <tex>1+C_2^1+C_2^2= 4</tex> | ||
+ | |||
+ | Итого: <tex>16 + 4 = 20</tex> | ||
=== Ключи === | === Ключи === |
Версия 14:17, 29 декабря 2020
Определение: |
Реляционная модель данных — это модель данных, построенная на логике первого порядка [1], где все данные представлены в виде кортежей, связанных отношениями. |
Содержание
Отношение
Определение и пример
Определение: |
Отношение — это кортеж с именем, состоящий из (Заголовок, Тело), где:
|
Заданное отношение соответствует тому, что мы называли расширением предиката [2] в логике первого порядка.
Пример отношения
{id: int, name: string} {{id: 10, name: Иванов}, {id: 20}}
Отношения и математика
Отношения и таблицы
Изоморфизму — нет, различиям — да!
Таблицы | Отношения |
---|---|
Столбцы – список | Атрибуты – множество |
Строки – элемент расширенного декартова произведения | Кортежи – элемент декартова произведения |
Таблица – список строк | Отношение – множество кортежей |
Ключи
Надключи
Определения
Определение: |
Пусть R — отношение. Будем говорить, что заданное множество атрибутов R обладает свойством уникальности, если в любой конкретный момент времени никакие два кортежа в R не являются дубликатами друг друга. |
По определению, множество всех атрибутов R обладает свойством уникальности.
Определение: |
Возьмем любое множество атрибутов отношения R, это множество является надключом для R тогда и только тогда, когда оно обладает одновременно двумя перечисленными ниже свойствами:
|
Надключ является идентификатором кортежа.
Пример
SId | PassS | PassNo | LastName | FirstName |
---|---|---|---|---|
1 | 0000 | 123456 | Иванов | Иван |
2 | 0001 | 098765 | Петров | Петр |
3 | 0001 | 654321 | Сидоров | Сидр |
4 | 0007 | 567890 | Плюшкин | Иван |
Сколько надключей в таблице с паспортными данными?
Очевидно, что
и сами по себя являются надключами. Тогда рассмотрим все возможные множества, которые содержат любой из этих надключ:- Все для :
- Все без SId для :
Итого:
Ключи
Требования к ключам
Естественные и суррогатные ключи
Выбор ключей
Примечания
Литература
- Дейт К. : Введение в системы баз данных (Глава 9)
- Уидом Д., Ульман Д. : Основы реляционных баз данных (Глава 3)
- W.W. Armstrong : Dependency Structures of Data Base Relationships