Изменения

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

Реляционная модель данных. Ключи

6703 байта добавлено, 19:34, 4 сентября 2022
м
rollbackEdits.php mass rollback
{{Определение|definition == '''Реляционная модель данных == ''' — это модель данных, построенная на логике первого порядка <ref>[https://en.wikipedia.org/wiki/First-order_logic First-order logic — Wikipedia]</ref>, где все данные представлены в виде кортежей, связанных отношениями.}} === Отношение ====== Кортежи Определение и пример ==={{Определение|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}} == Представление null'ов = Отношения и математика ===  <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>):* Натуральные – соответствуют бизнес-правилам, часто составные* Суррогатные – простые и эффективные == Выбор ключей =Примечания ==<references />
== Литература ==
* ''Дейт К.'' : Введение в системы баз данных (Глава 9 — Целостность данных, Глава 11 — Функциональные зависимости)* ''Уидом Д., Ульман Д.'' : Основы реляционных баз данных (Глава 3)* ''W.W. Armstrong'' : [https://web.archive.org/web/20180126091352if_/https://ipfs.io/ipfs/QmWYWTGUZyTm2iRFTZY2pTr2x1vWkDiJr2CBp2PGVpSVSv Dependency Structures of Data Base Relationships] == Ссылки ==* [https://www.kgeorgiy.info/courses/dbms/lectures/fundeps.html Реляционная модель и функциональные зависимости — kgeorgiy]* [https://en.wikipedia.org/wiki/Relational_model Relational model — Wikipedia] [[Категория:Базы данных | ]][[Категория:{{BASEPAGENAME}}]]
1632
правки

Навигация