Что такое первичный ключ бд? Какие бывают ключи?
Это такой специальный идентификатор строки, который однозначно определяет конкретную запись.
Этот ключ не может иметь дубликатов в таблице, потому что тогда нельзя будет определить уникальную запись, что нарушает саму сущность такого типа ключа.
Уникальная – это значит, что такой другой нет.
Еще может встречаться вторичный ключ, тоже что и внешний. Он показывает связь с таблицей. То есть он является ключом не к данной таблице, а к некоторой внешней таблице, но связь осуществляется с данной таблицей.
- Связаться с нами
- Правила проекта
- Лицензионное соглашение
- Политика конфиденциальности
Первичный ключ
Перви́чный ключ (англ. primary key ) — в реляционной модели данных один из потенциальных ключей отношения, выбранный в качестве основного ключа (или ключа по умолчанию).
Если в отношении имеется единственный потенциальный ключ, он является и первичным ключом. Если потенциальных ключей несколько, один из них выбирается в качестве первичного, а другие называют «альтернативными».
С точки зрения теории все потенциальные ключи отношения эквивалентны, то есть обладают одинаковыми свойствами уникальности и минимальности. Однако в качестве первичного обычно выбирается тот из потенциальных ключей, который наиболее удобен для тех или иных практических целей, например для создания внешних ключей в других отношениях либо для создания кластерного индекса. Поэтому в качестве первичного ключа, как правило, выбирают тот, который имеет наименьший размер (физического хранения) и/или включает наименьшее количество атрибутов.
Другой критерий выбора первичного ключа — сохранение уникальности со временем. Всегда существует вероятность того, что некоторый потенциальный ключ перестанет быть таковым в долговременной перспективе или при изменении требований к системе. Например, если номер студенческой группы включает последнюю цифру года поступления, то номера групп для идентификации групп уникальны только в течение 10 лет. Поэтому в качестве первичного ключа стараются выбирать такой потенциальный ключ, который с наибольшей вероятностью не утратит уникальность.
Исторически термин «первичный ключ» появился и стал использоваться существенно ранее термина «потенциальный ключ». Вследствие этого множество определений в реляционной теории были изначально сформулированы с упоминанием первичного (а не потенциального) ключа, например, определения нормальных форм. Также термин «первичный ключ» вошёл в формулировку 12 правил Кодда как основной способ адресации любого значения отношения (таблицы) наряду с именем отношения (таблицы) и именем атрибута (столбца).
Классификация
Простые и составные ключи
Если первичный ключ состоит из единственного атрибута, его называют простым ключом.
Если первичный ключ состоит из двух и более атрибутов, его называют составным ключом. Так, номер паспорта и серия паспорта не могут быть первичными ключами по отдельности, так как могут оказаться одинаковыми у двух и более людей. Но не бывает двух личных документов одного типа с одинаковыми серией и номером. Поэтому в отношении, содержащем данные о людях, первичным ключом может быть подмножество атрибутов, состоящее из типа личного документа, его серии и номера.
Естественные и суррогатные ключи
Вы поможете проекту, исправив и дополнив его.
Первичный ключ может состоять из информационных полей таблицы (то есть полей, содержащих полезную информацию об описываемых объектах). Такой первичный ключ называют естественным ключом. Теоретически, естественный ключ всегда можно сформировать, в этом случае мы получим т. н. интеллектуальный ключ.
Интересные факты
- В узелковой письменности Инков — кипу в I—II тысячелетии н. э., применялись в том числе аналоги первичных ключей[1] .
Примечания
- ↑Ordish George, Hyams, Edward. The last of the Incas: the rise and fall of an American empire. — New York: Barnes & Noble, 1996. — С. 80. — ISBN 0-88029-595-3
См. также
- Потенциальный ключ
- Суррогатный ключ
- Внешний ключ
- Интеллектуальный ключ
- Нормальные формы
Ссылки
- Первичный ключ — составной или суррогатный? (Ответ Тома Кайта) (рус.)
- Автоинкрементные первичные ключи (суррогатные ключи) = зло? (рус.) — Взгляд Джоша Беркуса, CEO компании PostgreSQL Experts Inc.
- Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное.
- Проставив сноски, внести более точные указания на источники.
Что такое первичный ключ
. Стоять я не могу. мои колени
Слабеют. душно! .. душно! ..
Где ключи? Ключи, ключи мои! ..
А. С. Пушкин. Скупой рыцарь, сцена III
Каждая сущность должна иметь признаки, которые ее описывают, в противном случае она просто не может существовать. Признак сущности, представляющий интерес называется атрибутом. Некоторые атрибуты сущности не только описывают, но и уникальным образом идентифицируют ее. Их называют первичным ключом. Первичный ключ (primary key) – это атрибут или группа атрибутов, однозначно идентифицирующая экземпляр сущности.
Если в сущности своего первичного ключа нет – следует создать дополнительный атрибут. Примером такого атрибута являются код автора, номер зачетной книжки студента. Такие ключи называют суррогатными, т.е. вне базы данных они не имеют
Выбор первичного ключа может оказаться непростой задачей, решение которой может повлиять на эффективность будущей БД. В сущности могут оказаться несколько атрибутов, претендующих на роль первичного ключа. Такие претенденты называются потенциальными ключами.
Рассмотрим кандидатов на первичный ключ сущности Автор. Здесь можно выделить следующие потенциальные ключи: «Автор#», «Номер паспорта», «Фамилия Имя Отчество» (составной).
Ключи могут быть составными, то есть содержащими несколько атрибутов.
Для того чтобы быть первичным, потенциальный ключ должен удовлетворять ряду требований:
- Уникальность
Два экземпляра не должны иметь одинаковых значений возможного ключа. Потенциальный ключ «Фамилия Имя Отчество» является плохим кандидатом, так как авторы могут быть полными тезками. Экземпляры же ключей «Автор#» и «Номер паспорта» являются уникальными.
- Компактность
Для обеспечения уникальности дополним ключ «Фамилия Имя Отчество» атрибутом «Адрес». Но при выборе первичного ключа предпочтение должно отдаваться более простым ключам, то есть ключам, содержащим меньшее количество атрибутов. Тогда ключи «Автор» и «Номер паспорта» предпочтительнее составного ключа «Фамилия Имя Отчество Адрес».
- Атрибуты не должны содержать null-значений.
Если допускается, что автор может, например, не иметь паспорта (например, у Федора Михайловича Достоевского какой номер пас- порта?), то ключ «Номер паспорта» не подойдет на роль первичного ключа. Если для обеспечения уникальности необходимо дополнить потенциальный ключ дополнительными атрибутами, то они не должны содержать нулевых значений. Дополняя ключ «Фамилия Ими Отчество» атрибутом «Адрес», нужно убедиться в том, что адреса всех авторов известны.
- Значение атрибутов ключа не должно меняться в течение всего времени существования экземпляра сущности.
Автор может выйти замуж и сменить фамилию, сменить паспорт. Поэтому «Номер паспорта» и «Фамилия Имя Отчество» не подходят по этому условию на роль первичного ключа.
Итак, наиболее подходящим первичным ключом сущности Автор является суррогатный атрибут «Автор#».
Каждая сущность должна иметь по крайней мере один потенциальный ключ. Многие сущности имеют только один потенциальный ключ. Такой ключ становится первичным. Но если сущность имеет более одного возможного ключа, то один из них становится первичным, а остальные – альтернативными, ключами. Альтернативный ключ – это потенциальный ключ, не ставший первичным.
Внешний ключ (Foreign key) – это атрибут или группа атрибутов одной сущности, которые могут служить в качестве первичного ключа для другой сущности. Говорят также, что внешний ключ одной сущности является ссылкой на первичный ключ другой сущности.
Ссылочная целостность реляционной модели требует, чтобы внешний ключ либо имел значение null, либо соответствовал значению первичного ключа, на которое он ссылается.
При установлении идентифицирующий связи атрибуты первичного ключа родительской сущности автоматически переносятся в состав в первичного ключа дочерней сущности. Эта операция дополнения атрибутов дочерней сущности при создании связи называется миграцией атрибутов.
При установлении неидентифицируемой связи дочерняя сущность остается независимой, а атрибуты первичного ключа родительской сущности мигрируют в состав неключевых компонентов родительской сущности.
28 . Задайте первичный ключ: выберите сущность Автор, МП, выберите Properties, выберите вкладку Attributes, в области Attributes выберите Автор# , выберите флажком Primary UID , нажмите Ладно .
29 . Задайте первичный ключ: выберите сущность Книга, МП, выберите Properties, выберите вкладку Attributes, в области Attributes выберите Книга# , выберите флажком Primary UID , нажмите Ладно .
30 . Задайте первичный ключ: выберите сущность Издательство, МП, выберите Properties, выберите вкладку Attributes, в области Attributes выберите Издательство# , выберите флажком Primary UID , нажмите Ладно .
Обратите внимание, чтоатрибут первичного ключа Издательство# родительской сущности Издательство должен автоматически мигрировать в дочернюю сущность Книга.
31 . Задайте первичный ключ: выберите сущность З аказ, МП, выберите Properties, выберите вкладку Attributes, в области Attributes выберите Заказ# , выберите флажком Primary UID , нажмите Ладно .
32 . Задайте первичный ключ: выберите сущность Редактор, МП, выберите Properties, выберите вкладку Attributes, в области Attributes выберите Редактор# , выберите флажком Primary UID , нажмите Ладно .
Пред. | Уровень выше | След. |
18.4.7. Атрибут | Начало | ToC | 18.4.9. Нотация Баркера |
PRIMARY KEY в SQL
PRIMARY KEY — первичный ключ, ограничение, позволяющее однозначно идентифицировать каждую запись в таблице SQL. PRIMARY KEY OracleПервичный Ключ (PRIMARY KEY) может ограничивать таблицы или их столбцы. Это ограничение работает так же как и ограничение UNIQUE. Но следует учитывать различие между первичными ключами и уникальностью столбцов в способе их использования с внешними ключами. Первичные ключи не могут позволять значений NULL. Это означает что, подобно полям в ограничении UNIQUE, любое поле, используемое в ограничении PRIMARY KEY, должно уже быть обьявлено NOT NULL. PRIMARY KEY Oracle. Пример №1. Пример создания таблицы SQL с ограничением PRIMARY KEY:
CREATE TABLE Student ( Kod_stud integer NOT NULL PRIMARY KEY, Fam char(30) NOT NULL UNIQUE, Adres char(50), Ball decimal);
Лучше всего помещать ограничение PRIMARY KEY в поле (или в поля), которое будет образовывать уникальный идентификатор строки, и сохранить ограничение UNIQUE для полей которые должны быть уникальными логически (такие как номера телефона или поле sname), а не для идентификации строк. Ограничение PRIMARY KEY может также быть применено для многочисленных полей, составляющих уникальную комбинацию значений: PRIMARY KEY Oracle. Пример №2.
CREATE TABLE Student ( Fam char (30) NOT NULL, Im char (30) NOT NULL Adres char (50), PRIMARY KEY (Fam, Im));
PRIMARY KEY MySQL
PRIMARY KEY SQL / MySQL. Пример №3.
CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id));
PRIMARY KEY SQL / MySQL. Пример №4.
CREATE TABLE `ad_packages` ( `id` int(111) NOT NULL auto_increment, `title` varchar(132) NOT NULL default », `price` float NOT NULL default ‘0’, `type` varchar(22) NOT NULL default », `c_type` enum(‘cash’,’points’,’rur’) NOT NULL default ‘cash’, PRIMARY KEY (`id`) );
PRIMARY KEY SQL / MySQL. Пример №5.
CREATE TABLE `gamestat` ( `id` int(11) NOT NULL auto_increment, `game` varchar(10) NOT NULL default ‘tuz’, `stavok` int(11) NOT NULL default ‘0’, `usd` float NOT NULL default ‘0’, `rur` float NOT NULL default ‘0’, `point` float NOT NULL default ‘0’, `bank_usd` decimal(12,2) NOT NULL default ‘0.00’, `bank_rur` decimal(12,2) NOT NULL default ‘0.00’, `bank_point` decimal(12,2) NOT NULL default ‘0.00’, PRIMARY KEY (`id`) );