Реляционная модель данных. Ключи — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Добавлена полная структура статьи.)
м (rollbackEdits.php mass rollback)
 
(не показано 18 промежуточных версий 2 участников)
Строка 1: Строка 1:
 
{{Определение
 
{{Определение
 
|definition =
 
|definition =
'''Реляционная модель данных''' — это модель данных, тра-ля-ля логики первого порядка <ref>[https://en.wikipedia.org/wiki/First-order_logic First-order logic — Wikipedia]</ref>}}
+
'''Реляционная модель данных''' — это модель данных, построенная на логике первого порядка <ref>[https://en.wikipedia.org/wiki/First-order_logic First-order logic — Wikipedia]</ref>, где все данные представлены в виде кортежей, связанных отношениями.}}
  
== Основные понятия ==  
+
== Отношение ==  
=== Отношение ===
+
=== Определение и пример ===
=== Кортежи ===
+
{{Определение
=== Представление null'ов ===
+
|definition =
=== Отличия таблиц и отношений ===
+
'''Отношение''' — это кортеж с именем, состоящий из (Заголовок, Тело), где:
 +
* Заголовок отношения — описание данных, представляющее собой множество пар <code>{имя: тип}</code>,
 +
* Тело отношения — данные, представляющие собой множество множеств пар <code>{имя: значение}</code>.}}
 +
Заданное отношение соответствует тому, что мы называли расширением предиката <ref>[https://en.wikipedia.org/wiki/Extension_(predicate_logic) Extension (predicate logic) — Wikipedia]</ref> в логике первого порядка.
 +
 
 +
''' Пример отношения '''
 +
 
 +
'''{id: int, name: string}'''
 +
{{id: 10, name: Иванов},
 +
  {id: 20}}
 +
 
 +
=== Отношения и математика ===
 +
 
 +
<tex>
 +
R = (\{a_1:T_1,a_2:T_2,\dots,a_n:T_n\},\{\{a_1:v_1,a_2:v_2,\dots ,a_n:v_n\},\dots\}) \\
 +
R(a_1,a_2,\dots ,a_n)⊂T_1×T_2×\cdots×T_n \\
 +
\;\;(v_1,v_2,\dots ,v_n)∈T_1×T_2×\cdots×T_n</tex>
 +
 
 +
=== Отношения и таблицы ===
 +
Изоморфизму — нет, различиям — да!
 +
{| class="wikitable"
 +
|-
 +
! Таблицы !! Отношения
 +
|-
 +
| Столбцы – список || Атрибуты – множество
 +
|-
 +
| Строки – элемент расширенного декартова произведения || Кортежи – элемент декартова произведения
 +
|-
 +
| Таблица – список строк || Отношение – множество кортежей
 +
|}
  
 
== Ключи ==
 
== Ключи ==
 
=== Надключи ===
 
=== Надключи ===
 +
 +
==== Определения ====
 +
 +
{{Определение
 +
|definition =
 +
Пусть R — отношение. Будем говорить, что заданное множество атрибутов R обладает свойством '''уникальности''', если в любой конкретный момент времени никакие два кортежа в R не являются дубликатами друг друга.
 +
}}
 +
По определению, множество всех атрибутов R обладает свойством '''уникальности'''.
 +
{{Определение
 +
|definition =
 +
Возьмем любое множество атрибутов отношения R, это множество является '''надключом''' для R тогда и только тогда, когда оно обладает одновременно двумя перечисленными ниже свойствами:
 +
* Обладает свойством уникальности.
 +
* В проекции на надключ нет повторяющихся кортежей.
 +
}}
 +
Как следствия приходим к следующему определению надключа:
 +
{{Определение
 +
|definition =
 +
Надключ является '''идентификатором''' кортежа.
 +
}}
 +
 +
==== Пример ====
 +
 +
{| 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>
 +
* Все без <tex>SId</tex> для <tex>\{PassS, PassNo\}</tex>: <tex>1+C_2^1+C_2^2= 4</tex>
 +
 +
Итого: <tex>16 + 4 = 20</tex>
 +
 
=== Ключи ===
 
=== Ключи ===
=== Требования к ключам ===
+
==== Определения ====
=== Естественные и суррогатные ключи ===
+
{{Определение
=== Выбор ключей ===
+
|definition =
 +
'''Ключ''' — минимальный по включению надключ.
 +
}}
 +
Учитывая то, что у любого множества атрибутов отношения R существует надключ в виде множества всех атрибутов R, то ключ всегда можно найти, минимизировав этот надключ.
 +
 
 +
Как следствия приходим к следующему определению:
 +
{{Определение
 +
|definition =
 +
Ключ является '''минимальным идентификатором''' кортежа.
 +
}}
 +
 
 +
Ключи для таблицы с паспортными данными:
 +
* <tex>SId</tex>
 +
* <tex>\{PassS, PassNo\}</tex>
 +
 
 +
==== Требования к ключам ====
 +
{{Определение
 +
|definition =
 +
Пусть R — отношение. Будем говорить, что заданное множество атрибутов R обладает свойством '''неизменности''', если в любой конкретный момент времени никакое строгое подмножество множества атрибутов не обладает свойством уникальности.
 +
}}
 +
Ключи должны удовлетворять следующим свойствам:
 +
* Уникальность
 +
* Неизменность
 +
 
 +
==== Естественные и суррогатные ключи ====
 +
Различия суррогатных и натуральных ключей (виды ключей <ref>[http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85#.D0.9A.D0.BB.D1.8E.D1.87.D0.B8 Виды ключей — Викиконспекты]</ref>):
 +
* Натуральные – соответствуют бизнес-правилам, часто составные
 +
* Суррогатные – простые и эффективные
  
 
== Примечания ==
 
== Примечания ==

Текущая версия на 19:34, 4 сентября 2022

Определение:
Реляционная модель данных — это модель данных, построенная на логике первого порядка [1], где все данные представлены в виде кортежей, связанных отношениями.


Отношение

Определение и пример

Определение:
Отношение — это кортеж с именем, состоящий из (Заголовок, Тело), где:
  • Заголовок отношения — описание данных, представляющее собой множество пар {имя: тип},
  • Тело отношения — данные, представляющие собой множество множеств пар {имя: значение}.

Заданное отношение соответствует тому, что мы называли расширением предиката [2] в логике первого порядка.

Пример отношения

{id: int, name: string}
{{id: 10, name: Иванов},
 {id: 20}}

Отношения и математика

[math]
 R = (\{a_1:T_1,a_2:T_2,\dots,a_n:T_n\},\{\{a_1:v_1,a_2:v_2,\dots ,a_n:v_n\},\dots\}) \\
 R(a_1,a_2,\dots ,a_n)⊂T_1×T_2×\cdots×T_n \\
 \;\;(v_1,v_2,\dots ,v_n)∈T_1×T_2×\cdots×T_n[/math]

Отношения и таблицы

Изоморфизму — нет, различиям — да!

Таблицы Отношения
Столбцы – список Атрибуты – множество
Строки – элемент расширенного декартова произведения Кортежи – элемент декартова произведения
Таблица – список строк Отношение – множество кортежей

Ключи

Надключи

Определения

Определение:
Пусть R — отношение. Будем говорить, что заданное множество атрибутов R обладает свойством уникальности, если в любой конкретный момент времени никакие два кортежа в R не являются дубликатами друг друга.

По определению, множество всех атрибутов R обладает свойством уникальности.

Определение:
Возьмем любое множество атрибутов отношения R, это множество является надключом для R тогда и только тогда, когда оно обладает одновременно двумя перечисленными ниже свойствами:
  • Обладает свойством уникальности.
  • В проекции на надключ нет повторяющихся кортежей.

Как следствия приходим к следующему определению надключа:

Определение:
Надключ является идентификатором кортежа.


Пример

Пример таблицы с паспортными данными
SId PassS PassNo LastName FirstName
1 0000 123456 Иванов Иван
2 0001 098765 Петров Петр
3 0001 654321 Сидоров Сидр
4 0007 567890 Плюшкин Иван

Сколько надключей в таблице с паспортными данными?

Очевидно, что [math]SId[/math] и [math]\{PassS, PassNo\}[/math] сами по себя являются надключами. Тогда рассмотрим все возможные множества, которые содержат любой из этих надключ:

  • Все для [math]SId[/math]: [math]1+C_4^1+C_4^2+C_4^3+C_4^4= 16[/math]
  • Все без [math]SId[/math] для [math]\{PassS, PassNo\}[/math]: [math]1+C_2^1+C_2^2= 4[/math]

Итого: [math]16 + 4 = 20[/math]

Ключи

Определения

Определение:
Ключ — минимальный по включению надключ.

Учитывая то, что у любого множества атрибутов отношения R существует надключ в виде множества всех атрибутов R, то ключ всегда можно найти, минимизировав этот надключ.

Как следствия приходим к следующему определению:

Определение:
Ключ является минимальным идентификатором кортежа.


Ключи для таблицы с паспортными данными:

  • [math]SId[/math]
  • [math]\{PassS, PassNo\}[/math]

Требования к ключам

Определение:
Пусть R — отношение. Будем говорить, что заданное множество атрибутов R обладает свойством неизменности, если в любой конкретный момент времени никакое строгое подмножество множества атрибутов не обладает свойством уникальности.

Ключи должны удовлетворять следующим свойствам:

  • Уникальность
  • Неизменность

Естественные и суррогатные ключи

Различия суррогатных и натуральных ключей (виды ключей [3]):

  • Натуральные – соответствуют бизнес-правилам, часто составные
  • Суррогатные – простые и эффективные

Примечания

Литература

  • Дейт К. : Введение в системы баз данных (Глава 9)
  • Уидом Д., Ульман Д. : Основы реляционных баз данных (Глава 3)
  • W.W. Armstrong : Dependency Structures of Data Base Relationships

Ссылки