Чем первичный ключ отличается от уникального

Чем первичный ключ отличается от уникального

470399 просмотра

13 ответа

994 Репутация автора

Я использую базу данных mysql. У меня есть путаница между первичным ключом и уникальным ключом.

Пожалуйста, помогите мне, где я должен создавать первичный и уникальный ключ. Я имею в виду, в какой ситуации мы создаем уникальный ключ или первичный ключ.

Ответы (13)

24 плюса

405398 Репутация автора

Первичный ключ должен быть уникальным.

Уникальный ключ не обязательно должен быть основным ключом — см. Ключ кандидата .

То есть в таблице может быть несколько комбинаций столбцов, которые могут однозначно идентифицировать строку — только один из них может быть выбран в качестве первичного ключа. Другие, хотя и уникальны, являются ключами-кандидатами.

Автор: Oded Размещён: 05.03.2012 11:42

14 плюса

45122 Репутация автора

Первичный ключ имеет семантику идентификации строки базы данных. Поэтому для данной таблицы может быть только один первичный ключ, в то время как может быть много уникальных ключей.

По той же причине первичный ключ не может быть NULL (по крайней мере, в Oracle, не уверен в других базах данных)

Поскольку он идентифицирует строку, она никогда не должна изменяться. Изменение первичных ключей связано с серьезной болью и, вероятно, вечным проклятием.

Поэтому в большинстве случаев вам нужен какой-то искусственный идентификатор для первичного ключа, который не используется ни для чего, кроме определения отдельных строк в таблице.

С другой стороны, уникальные клавиши могут меняться настолько, насколько вам хочется.

6 плюса

69958 Репутация автора

Первичный ключ — это уникальный ключ.

Каждая таблица должна иметь первичный ключ ONE максимально, но может иметь несколько уникальных ключей. Первичный ключ используется для однозначной идентификации строки таблицы. Первичный ключ не может быть, NULL поскольку NULL не является значением.

64 плюса

807 Репутация автора

Уникальный ключ (Великобритания) : это столбец или группа столбцов, которые могут идентифицировать уникальность в строке.

Первичный ключ (PK) : это также столбец или группа столбцов, которые могут идентифицировать уникальность в строке.

Таким образом, основной ключ — это просто другое имя для уникального ключа, но реализация по умолчанию в SQL Server отличается для первичного и уникального ключей.

  1. PK создает кластерный индекс, а Великобритания создает Non Clustered Index.
  2. PK не является нулевым, но UK допускает null (Примечание: по умолчанию)
  3. На столе может быть только один ПК и только один ПК, но может быть несколько британских
  4. Вы можете переопределить реализацию по умолчанию в зависимости от ваших потребностей.

Это действительно зависит от вашей цели при принятии решения о создании Великобритании или ПК. Это следует за аналогией «Если есть команда из трех человек, так что все они сверстники, но будет один из них, кто будет парой сверстников: ПК и Великобритания имеют схожие отношения». Я бы предложил прочитать эту статью: Пример, данный автором, может показаться не подходящим, но попытайтесь получить общую идею.

Автор: dhi Размещён: 26.06.2012 12:14

177 плюса

1803 Репутация автора

Основной ключ:

  • В таблице может быть только один первичный ключ
  • В некоторых СУБД этого не может быть NULL — например, MySQL добавляет NOT NULL
  • Первичный ключ — уникальный идентификатор ключа записи

Уникальный ключ:

  • Может быть более одного уникального ключа в одной таблице
  • Уникальный ключ может иметь NULL значения
  • Это может быть ключ кандидата
  • Уникальный ключ может быть NULL и не быть уникальным

Автор: Mr. KB Размещён: 12.11.2012 06:15

34 плюса

1881 Репутация автора

Для организации или бизнеса существует так много физических объектов (таких как люди, ресурсы, машины и т. Д.) И виртуальных объектов (их Задачи, транзакции, действия). Как правило, бизнес должен регистрировать и обрабатывать информацию этих субъектов бизнеса. Эти бизнес-объекты идентифицируются в пределах всей бизнес-области с помощью ключа.

В соответствии с предполагаемой РСУБД ключевой ключ (например, Ключ кандидата) представляет собой значение или набор значений, которые однозначно идентифицируют объект.

Для DB-таблицы существует так много ключей, которые могут иметь право на Первичный ключ. Чтобы все ключи, первичный ключ, уникальный ключ и т. Д. Коллективно назывались «Ключ кандидата». Однако DBA выбрал ключ из ключа кандидата для поиска записей, называется Первичный ключ.

Разница между основным ключом и уникальным ключом

1. Поведение: первичный ключ используется для идентификации строки (записи) в таблице, тогда как уникальный ключ предназначен для предотвращения дублирования значений в столбце (за исключением нулевой записи).

2. Индексирование. По умолчанию SQL-движок создает Clustered Index для первичного ключа, если он не существует, и Non-Clustered Index on Unique-key.

3. Nullability: первичный ключ не включает значения Null, тогда как уникальный ключ может.

4. Существование: таблица может иметь не более одного первичного ключа, но может иметь несколько уникальных ключей.

5. Модифицируемость. Вы не можете изменять или удалять первичные значения, но значения Unique-key могут.

Для получения дополнительной информации и примеров:

плюса

58 Репутация автора

Просто первичный ключ является уникальным и не может быть нулевым, уникальный может быть нулевым и не может быть уникальным.

Читайте также:  Как привязать почтовый ящик к телефону

9 плюса

2906 Репутация автора

Разница между основным ключом и уникальным ключом

Автор: Omer K Размещён: 16.11.2015 08:31

1 плюс

811 Репутация автора

Если ваш дизайн базы данных таков, что им не нужен внешний ключ, вы можете пойти с уникальным ключом ( но помните, что уникальный ключ допускает одиночное нулевое значение ).

Если база данных требует внешнего ключа, то вы оставляете без выбора, вы должны идти с первичным ключом.

Чтобы увидеть разницу между уникальным и первичным ключом, посетите здесь

6 плюса

122 Репутация автора

  • Думайте, что имя таблицы занято.
  • Основной ключ
  • Первичный ключ не может принимать нулевые значения. первичный ключ обеспечивает уникальность столбца. Мы можем иметь только один первичный ключ в таблице.
  • Уникальный ключ
  • Уникальный ключ может принимать нулевые значения. уникальный ключ также обеспечивает уникальность столбца. Вы можете думать, что если уникальный ключ содержит нулевые значения, то почему он может быть уникальным? да, хотя он может принимать нулевые значения, он обеспечивает уникальность столбца. просто посмотрите на картинку. Где-то Emp_ID является основным, а Citizen ID уникален. Надеюсь, вы понимаете. Мы можем использовать несколько уникальных ключей в таблице.

Автор: Mahedi_Hasan Размещён: 19.11.2017 01:15

плюса

57 Репутация автора

Уникальный ключ: — Он должен использоваться, когда вам нужно дать уникальное значение. В случае с уникальным ключом это означает, что допустимы и нулевые значения. Необычные ключи — это те ключи, которые уникальны и не похожи в этом столбце, например, имя вашего питомца .it может быть не что иное, как null, и если вы спрашиваете в контексте базы данных, то следует отметить, что каждый нуль отличается от другого нуля в базе данных. EXCEPT-SQL Server, где null = null — true

первичный ключ: — Он должен использоваться, когда вам нужно однозначно идентифицировать строку. Primary — это ключ, который уникален для каждой строки ограничения базы данных, заключается в том, что он не разрешает null в нем. Так, вы могли видеть, что база данных есть столбец, который является автоматическим приращением, и это первичный ключ таблицы. плюс его можно использовать как внешний ключ в другой таблице. Например, можно заказать в таблице заказов , billId в таблице счетов .

теперь возвращается к ситуации, когда его использовать: —

1) первичный ключ в столбце, который не может быть нулевым в таблице, и вы используете в качестве внешнего ключа в другой таблице для создания отношения

2) уникальный ключ в таблице, где он не влияет на таблицу или во всю базу данных, принимаете ли вы нуль для конкретного столбца, например, закуски в ресторане, возможно, вы не принимаете закуски в ресторане

плюса

444 Репутация автора

Первичные ключи

Основная цель первичного ключа — предоставить средства для идентификации каждой записи в таблице.

Первичный ключ предоставляет возможность идентифицировать строку, используя данные в строке. Первичный ключ может быть основан на одном или нескольких столбцах, таких как имя и фамилия; однако во многих проектах первичный ключ является автоматически сгенерированным числом из столбца идентификации.

Первичный ключ имеет следующие характеристики:

  1. Для таблицы может быть только один первичный ключ.
  2. Первичный ключ состоит из одного или нескольких столбцов.
  3. Первичный ключ обеспечивает целостность объекта таблицы.
  4. Все указанные столбцы должны быть определены как NOT NULL.
  5. Первичный ключ уникально идентифицирует строку.
  6. Первичные ключи по умолчанию имеют CLUSTERED уникальные индексы.

Уникальные клавиши

Уникальный ключ также называется уникальным ограничением. Уникальное ограничение может быть использовано для обеспечения уникальности строк в базе данных.

Разве мы уже не делаем этого с помощью первичного ключа? Да, мы делаем, но таблица может иметь несколько наборов столбцов, которые вы хотите уникальным.

В SQL Server уникальный ключ имеет следующие характеристики:

  1. В таблице может быть несколько уникальных ключей.
  2. По умолчанию уникальные ключи приводят к уникальным индексам NONCLUSTERED.
  3. Один или несколько столбцов образуют уникальный ключ.
  4. Столбец может быть NULL, но допустим один NULL за столбец.
  5. К уникальному ограничению может относиться ограничение внешнего ключа.

плюса

3258 Репутация автора

разница между Первичным ключом и уникальным ключом

Оба Primary key и Unique Key используются для однозначного определения строки в таблице. Primary Key создает clustered index столбец, тогда как a Unique creates an unclustered index of the column .

A Primary Key не разрешает NULL value , однако a Unique Key это позволяет one NULL value .

Добро пожаловать в форум.

Тема: "Мир Interbase.." или "FireBird.." Что выбрать

Начинаю потихоньку знакомиться с InterBase и решил приобрести книжку (поскольку с монитора читать довольно тяжело). Почитав отзывы, понял, что выбирать придется между «Мир InterBase» (Ковязин, Востриков) и «FireBird. Руководство разработчика баз данных) (Х.Борри). К сожалению, денег на обе не хватит.

В связи с этим вопросы:

·Какая из этих книг доступнее для новичка, только начинающего изучать СУБД и проектирование БД

Читайте также:  Фейсбук что это такое и зачем

·В какой степени эти книги, так сказать, взаимозаменяемы. Т.е. насколько знания, полученные из книги про InterBase(например) применимы для работы с FireBird и наоборот.

Заранее всем спасибо за ответы.

С уважением, Londinium

1. Если ты совсем новичек, то бери первую — в ней доступнее.

2. Если ты новичек только в ИБ, то лучше вторую.

3. Вторую книжку желательно иметь под рукой по-любому — независимо от того, есть ли первая.

4. Важно — во второй нет нихрена (кажется) про библиотеки доступа (IBX, FIBPlus).

5. Знания про InterBase, полученные из первой книги, применимы к FireBird практически в полном объеме.

Книга: Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil

Первичный и уникальный ключи

Первичный и уникальный ключи

Первичные ключи являются одним из основных видов ограничений в базе данных. Они применяются для однозначной идентификации записей в таблице. Допустим, мы храним в базе данных список людей. Вполне вероятно, что могут появиться два (или больше) человека с одинаковыми фамилией, именем и отчеством Как же гарантированно отличить одного человека от другого (конечно. речь идет о том, чтобы отличить одного человека от другого на основании информации, хранящейся в базе данных)?

В данном случае "человек" представлен одной записью в таблице, поэтому можно задаться более общим вопросом — как отличить одну запись в (любой) таблице от другой записи в этой же таблице. Для этого используются ограничения — первичные кпочи. Первичный ключ представляет собой одно или несколько полей в таблице, сочетание которых уникально для каждой записи. Для одной таблицы не существует повторяющихся значений первичного ключа.

Уникальные кчочи несут аналогичную нагрузку — они также служат для однозначной идентификации записей в таблице. Отличие первичных ключей от уникальных состоит в том, что первичный ключ может быть в таблице только один, а уникатьных ключей — несколько. Надо отметить, что и первичный и уникальный ключ могут быть использованы в качестве ссылочной основы для внешних ключей (см. далее).

Синтаксис создания первичного и уникального ключа на основе единственного поля следующий:

Примеры первичных и уникальных ключей:

CREATE TABLE pkuk(

pk NUMERIC(15,0) NOT NULL PRIMARY KEY, /*первичный ключ*/

ukl VARCHAR(SO) NOT NULL UNIQUE,/*уникальный ключ */

uk2 INTEGER NOT NULL UNIQUE /* еще уникальный ключ */);

Синтаксис создания первичного и уникального ключей на основе нескольких полей:

Помимо ограничений столбцов и доменов, о которых говорилось в прошлой лекции, существуют еще ограничения базы данных . Ограничения БД — это правила, которые определяют взаимосвязи между таблицами, могут проверять и изменять данные в таблицах по этим правилам. На ограничениях БД основана значительная часть бизнес-логики приложений.

Базы данных InterBase могут использовать следующие виды ограничений:

  • PRIMARY KEY — первичный ключ таблицы.
  • UNIQUE — уникальный ключ таблицы.
  • FOREIGN KEY — внешний ключ , обеспечивает ссылку на другую таблицу и гарантирует ссылочную целостность между родительской и дочерней таблицами .

Примечание о терминологии

Если вы похожи на автора данного курса в том, что любите искать ответы на интересующий вас вопрос комплексно, в разных трудах разных авторов, то вы не могли не заметить некоторую путаницу в определениях главная (master) -> подчиненная (detail) таблицы. Напомним, что главную таблицу часто называют родительской, а подчиненную — дочерней.

Связано это, вероятно, с тем, как интерпретируются эти определения в локальных и SQL -серверных СУБД .

В локальных СУБД главной называется та таблица , которая содержит основные данные, а подчиненной — дополнительные. Возьмем, к примеру, три связанные таблицы. Первая содержит данные о продажах, вторая — о товарах и третья — о покупателях:

Здесь основные сведения хранятся в таблице продаж, следовательно, она главная (родительская). Дополнительные сведения хранятся в таблицах товаров и покупателей, значит они дочерние. Это и понятно: одна дочь не может иметь двух биологических матерей, зато одна мать вполне способна родить двух дочерей.

Но в SQL -серверах баз данных имеется другое определение связей: когда одно поле в таблице ссылается на поле другой таблицы, оно называется внешним ключом . А поле , на которое оно ссылается, называется родительским или первичным ключом . Таблицу, которая имеет внешний ключ (ссылку на запись другой таблицы) нередко называют дочерней, а таблицу с родительским ключом — родительской. Еще в определении связей говорят, что родитель может иметь только одну уникальную запись , на которую могут ссылаться несколько записей дочерней таблицы .

Так что в приведенном выше примере таблица продаж имеет два внешних ключа: идентификатор товара, и идентификатор покупателя. А обе таблицы в правой части рисунка имеют родительский ключ " Идентификатор ". Поскольку один покупатель или товар могут неоднократно встречаться в таблице продаж, то получается, что обе таблицы в правой части рисунка — родители, а таблица слева — дочерняя. Поскольку сейчас мы изучаем InterBase — SQL сервер БД , этими определениями мы и будем руководствоваться в последующих лекциях. Чтобы далее не ломать голову над этой путаницей, сразу договоримся: дочерняя таблица имеет внешний ключ ( FOREIGN KEY ) на другую таблицу.

Читайте также:  Пропал звук вконтакте что делать

PRIMARY KEY

PRIMARY KEY — первичный ключ , является одним из основных видов ограничений в базе данных. Первичный ключ предназначен для однозначной идентификации записи в таблице, и должен быть уникальным. Первичные ключи PRIMARY KEY находятся в таблицах, которые принято называть родительскими ( Parent ). Не стоит путать первичный ключ с первичными индексами локальных баз данных, первичный ключ является не индексом, а именно ограничением. При создании первичного ключа InterBase автоматически создает для него уникальный индекс . Однако если мы создадим уникальный индекс , это не приведет к созданию ограничения первичного ключа . Таблица может иметь только один первичный ключ PRIMARY KEY .

Предположим, имеется таблица со списком сотрудников. Поле "Фамилия" может содержать одинаковые значения (однофамильцы), поэтому его нельзя использовать в качестве первичного ключа. Редко, но встречаются однофамильцы, которые вдобавок имеют и одинаковые имена. Еще реже, но встречаются полные тезки, поэтому даже все три поля "Фамилия" + "Имя" + "Отчество" не могут гарантировать уникальности записи, и не могут быть первичным ключом. В данном случае выход , как и прежде, в том, чтобы добавить поле — идентификатор , которое содержит порядковый номер данного лица. Такие поля обычно делают автоинкрементными (об организации автоинкрементных полей поговорим на следующих лекциях). Итак,

первичный ключ — это одно или несколько полей в таблице, сочетание которых уникально для каждой записи.

Если в первичный ключ входит единственный столбец (как чаще всего и бывает), спецификатор PRIMARY KEY ставится при определении столбца :

Если первичный ключ строится по нескольким столбцам, то спецификатор ставится после определения всех полей:

Как видно из примеров, первичный ключ обязательно должен иметь ограничение столбца (столбцов) NOT NULL.

UNIQUE

UNIQUE — уникальный ключ . Спецификатор UNIQUE указывает, что все значения данного поля должны быть уникальными, в связи с этим такие поля также не могут содержать значения NULL. Можно сказать, что уникальный ключ UNIQUE является альтернативным вариантом первичного ключа, однако имеются различия. Главное различие в том, что первичный ключ должен быть только один, тогда как уникальных ключей может быть несколько. Кроме того, ограничение UNIQUE не может быть построено по тому же набору столбцов, который был использован для ограничения PRIMARY KEY или другого UNIQUE . Уникальные ключи, как и первичные, находятся в таблицах, которые являются родительскими по отношению к другим таблицам.

Столбец, объявленный с ограничением UNIQUE , как и первичный ключ , может применяться для обеспечения ссылочной целостности между родительской и дочерней таблицами . При этом внешний ключ дочерней таблицы будет ссылаться на это поле (поля). Как и в случае первичного ключа, при создании уникального ключа, для него автоматически будет создан уникальный индекс . Но не наоборот. Пример создания таблицы с одним первичным и двумя уникальными ключами:

FOREIGN KEY

FOREIGN KEY — внешний ключ . Это очень мощное средство для обеспечения ссылочной целостности между таблицами, которое позволяет не только следить за наличиями правильных ссылок, но и автоматически управлять ими. Внешние ключи содержатся в таблицах, которые являются дочерними ( Child ) по отношению к другим таблицам. Ссылочная целостность обеспечивается именно внешним ключом, который ссылается на первичный или уникальный ключ родительской таблицы .

Вернемся к рисунку 18.1. Если мы удалим сведения о каком-то покупателе в таблице покупателей, таблица продаж станет недостоверной — она будет содержать ссылки, которые на самом деле никуда не ссылаются. Чтобы обеспечить достоверность данных, нужно воспрепятствовать удалению записи с покупателем, если на эту запись есть ссылки в таблице продаж. Либо же при удалении записи с покупателем нужно автоматически удалить и все записи таблицы продаж, ссылающиеся на этого покупателя. Если же меняется значение идентификатора в таблице покупателей, значит нужно также изменить это значение во всех записях таблицы продаж, которые ссылаются на данного покупателя.

Для обеспечения достоверности данных и применяют внешний ключ .

Внешний ключ — это столбец или набор столбцов в дочерней таблице, который в точности соответствует столбцу или набору столбцов, определенных в родительской таблице как первичный (или уникальный) ключ, и ссылается на них.

В отличие от первичного ключа, ключ FOREIGN KEY может содержать пустое значение , для него не обязателен атрибут NOT NULL. Строки с пустым внешним ключом не ссылаются ни на какую запись родительской таблицы , и называются "зависшими". Чтобы продемонстрировать работу с внешним ключом, создадим две таблицы — родительскую и дочернюю:

Что мы получили в итоге? Родительская таблица имеет первичный ключ — поле текстового типа, и ни на кого не ссылается. Дочерняя таблица имеет такое же текстовое поле , которое может иметь значение NULL и является внешним ключом, ссылающимся на первичный ключ родительской таблицы . При совместной работе этих таблиц справедливы следующие замечания:

Ссылка на основную публикацию
Цифровой формат фото это
Нажав на кнопку спуска фотоаппарата, мы получаем снимок и принимаем этот факт как должное. Но с момента щелчка затвора до...
Фото на зеленом фоне хромакей
Зеленый фон или «хромакей» применяют при съемках для последующей его замены на любой другой. Хромакей может быть и другого цвета,...
Фото на скайп для пацанов
Крутые фотографии пацанов на аву: фото без лица, в маске анонима, крутые пацаны с битами и с пистолетами. Крутые фото...
Цифровой фотоаппарат nikon coolpix a900
19 декабря 2016 г. Обзор Nikon Coolpix A900 — компакт с 4K Nikon Coolpix A900 это компактная камера с большим...
Adblock detector