Я использую базу данных MySQL. У меня путаница между первичным ключом и уникальным ключом.
Пожалуйста, помогите мне, где я должен создать первичный и уникальный ключ. Я имею в виду, в какой ситуации мы создаем уникальный ключ или первичный ключ.
Я использую базу данных MySQL. У меня путаница между первичным ключом и уникальным ключом.
Пожалуйста, помогите мне, где я должен создать первичный и уникальный ключ. Я имею в виду, в какой ситуации мы создаем уникальный ключ или первичный ключ.
Ответы:
Основной ключ:
NULL
- например, MySQL добавляетNOT NULL
Уникальный ключ:
NULL
значенияNULL
; несколько строк могут иметь NULL
значения и, следовательно, не могут считаться «уникальными»Уникальный ключ (Великобритания) : это столбец или группа столбцов, которые могут идентифицировать уникальность в строке.
Первичный ключ (PK) : это также столбец или группа столбцов, которые могут идентифицировать уникальность в строке.
Таким образом, первичный ключ - это просто другое имя уникального ключа, но реализация по умолчанию в SQL Server отличается для первичного и уникального ключа.
По умолчанию:
Это действительно зависит от вашей цели при принятии решения о создании Великобритании или ПК. Это следует из аналогии типа «Если есть команда из трех человек, значит, все они равные, но будет один из них, который будет парой равных: PK и Великобритания имеют аналогичные отношения». Я бы предложил прочитать эту статью: пример, приведенный автором, может показаться неуместным, но постарайтесь получить общее представление.
http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html
[table_name]_pkey
в таблицу добавлен новый столбец (с именем по умолчанию ) (я слышал, это называется суррогатным ключом). Источник: postgresqltutorial.com/postgresql-primary-key Я новичок во всем этом, поэтому я был бы признателен за более знающий плакат, чтобы указать на нюансы, которые я пропустил.
Для организации или бизнеса существует так много физических объектов (таких как люди, ресурсы, машины и т. Д.) И виртуальных объектов (их задачи, транзакции, действия). Как правило, бизнес должен записывать и обрабатывать информацию об этих бизнес-объектах. Эти бизнес-объекты идентифицируются в рамках всего бизнес-домена с помощью ключа.
В соответствии с перспективой СУБД, ключ (он же ключ-кандидат) представляет собой значение или набор значений, которые однозначно идентифицируют объект.
Для таблицы DB существует так много ключей, которые могут иметь первичный ключ. Таким образом, все ключи, первичный ключ, уникальный ключ и т. Д. Вместе называются ключом-кандидатом. Однако администратор базы данных, выбравший ключ из ключа-кандидата для поиска записей, называется Первичным ключом.
Разница между первичным ключом и уникальным ключом
1. Поведение: первичный ключ используется для идентификации строки (записи) в таблице, тогда как уникальный ключ предназначен для предотвращения дублирования значений в столбце (за исключением пустой записи).
2. Индексация: по умолчанию SQL-движок создает кластерный индекс по первичному ключу, если он не существует, и некластеризованный индекс по уникальному ключу.
3. Обнуляемость: Первичный ключ не содержит нулевых значений, тогда как Уникальный ключ может.
4. Существование: таблица может иметь не более одного первичного ключа, но может иметь несколько уникальных ключей.
5. Модифицируемость: Вы не можете изменять или удалять первичные значения, но значения уникального ключа могут.
Для получения дополнительной информации и примеров:
Первичный ключ должен быть уникальным.
Уникальный ключ не должен быть первичным ключом - см. Ключ-кандидат .
То есть в таблице может быть несколько комбинаций столбцов, которые могут однозначно идентифицировать строку - только один из них может быть выбран в качестве первичного ключа. Остальные, хотя и уникальные, являются ключами-кандидатами.
Разница между первичным ключом и уникальным ключом
+-----------------------------------------+-----------------------------------------------+ | Primary Key | Unique Key | +-----------------------------------------+-----------------------------------------------+ | Primary Key can't accept null values. | Unique key can accept only one null value. | +-----------------------------------------+-----------------------------------------------+ | By default, Primary key is clustered | By default, Unique key is a unique | | index and data in the database table is | non-clustered index. | | physically organized in the sequence of | | | clustered index. | | +-----------------------------------------+-----------------------------------------------+ | We can have only one Primary key in a | We can have more than one unique key in a | | table. | table. | +-----------------------------------------+-----------------------------------------------+ | Primary key can be made foreign key | In SQL Server, Unique key can be made foreign | | into another table. | key into another table. | +-----------------------------------------+-----------------------------------------------+
Вы можете найти подробную информацию по адресу :
http://www.dotnet-tricks.com/Tutorial/sqlserver/V2bS260912-Difference-between-Primary-Key-and-Unique-Key.html
Первичный ключ имеет семантику идентификации строки базы данных. Поэтому для данной таблицы может быть только один первичный ключ, в то время как может быть много уникальных ключей.
Также по той же причине первичный ключ не может быть NULL (по крайней мере, в Oracle, не уверен насчет других баз данных)
Поскольку он определяет строку, он никогда не должен меняться. Изменение первичных ключей неизбежно вызовет серьезную боль и, возможно, вечное проклятие.
Поэтому в большинстве случаев вам нужен какой-то искусственный идентификатор для первичного ключа, который используется не для чего-либо, кроме идентификации отдельных строк в таблице.
Уникальные ключи, с другой стороны, могут меняться столько, сколько вы хотите.
Первичный ключ - это уникальный ключ.
Каждая таблица должна содержать не более ОДНОГО первичного ключа, но может иметь несколько уникальных ключей. Первичный ключ используется для уникальной идентификации строки таблицы. Первичный ключ не может быть, NULL
так NULL
как не является значением.
Я знаю, что этому вопросу уже несколько лет, но я хотел бы дать ответ на него, объясняя, почему, а не как
Назначение первичного ключа : уникальная идентификация строки в базе данных => строка представляет отдельный экземпляр типа сущности, смоделированный таблицей. Первичный ключ обеспечивает целостность объекта, AKA Entity Integrity. Первичный ключ будет кластеризованным индексом, т.е. он определяет порядок, в котором данные физически хранятся в таблице.
Назначение уникального ключа : Хорошо, с помощью первичного ключа у нас есть способ уникальной идентификации строки. Но у меня есть такая потребность в бизнесе, чтобы другой столбец / набор столбцов имели уникальные значения. Технически, учитывая, что этот столбец (столбцы) уникален, он может быть кандидатом для обеспечения целостности объекта. Но, насколько нам известно, этот столбец может содержать данные, поступающие из сторонней организации, в которых у меня могут возникнуть сомнения относительно уникальности. Я не могу доверять этому, чтобы обеспечить целостность объекта. Я просто делаю это уникальным ключом для выполнения моих бизнес-требований.
Вот и вы!
Если ваш дизайн базы данных таков, что им не нужен внешний ключ, то вы можете использовать уникальный ключ ( но помните, что уникальный ключ допускает одно нулевое значение ).
Если ваша база данных требует внешнего ключа, то вы оставляете без выбора, вы должны идти с первичным ключом.
Чтобы увидеть разницу между уникальным и первичным ключом, посетите здесь
Уникальный ключ: - Его следует использовать, когда необходимо указать уникальное значение. В случае уникального ключа это также означает, что допускаются также нулевые значения. Уникальные ключи - это те ключи, которые уникальны и не похожи в этом столбце, как, например, имя вашего питомца. .it может быть ничем не похожим на null, и если вы спрашиваете в контексте базы данных, то следует отметить, что каждый null отличается от другого null в базе данных. EXCEPT-SQL Server, где значение null = null равно true
первичный ключ: - Его следует использовать, когда нужно дать уникальную идентификацию строки. Первичным является ключ, который уникален для каждой строки в ограничении базы данных, состоит в том, что он не допускает пустое значение в нем. Поэтому вы могли видеть, что база данных есть столбец с автоматическим приращением, и это первичный ключ таблицы. Кроме того, его можно использовать в качестве внешнего ключа в другой таблице. Например, можно указать orderId в таблице заказов , billId в таблице счетов .
Теперь возвращаемся к ситуации, когда его использовать: -
1) первичный ключ в столбце, который не может быть нулевым в таблице, и вы используете в качестве внешнего ключа в другой таблице для создания отношений
2) уникальный ключ в таблице, где в таблице или во всей базе данных он не влияет на то, берете ли вы нулевое значение для определенного столбца, например, закуски в ресторане, возможно, вы не принимаете закуски в ресторане
разница между первичным ключом и уникальным ключом
Оба Primary key
и Unique Key
используются для однозначного определения строки в таблице.
Primary Key
создает clustered index
столбца, а Unique creates an unclustered index of the column
.
A Primary Key
не позволяет NULL value
, однако a Unique Key
позволяет one NULL value
.
Просто первичный ключ является уникальным и не может быть нулевым, уникальный может быть нулевым и не может быть уникальным.
may not be unique
значит здесь?
Основное назначение первичного ключа - предоставить средства для идентификации каждой записи в таблице.
Первичный ключ предоставляет средства для идентификации строки, используя данные в строке. Первичный ключ может основываться на одном или нескольких столбцах, таких как имя и фамилия; однако во многих проектах первичным ключом является автоматически генерируемое число из столбца идентификаторов.
Первичный ключ имеет следующие характеристики:
Уникальный ключ также называется уникальным ограничением. Уникальное ограничение может использоваться для обеспечения уникальности строк в базе данных.
Разве мы уже не делаем это с первичным ключом? Да, мы делаем, но таблица может иметь несколько наборов столбцов, которые вы хотите уникальные.
В SQL Server уникальный ключ имеет следующие характеристики:
источник: здесь
Основные функции первичного ключа:
Он должен содержать уникальное значение для каждой строки данных. Он не может содержать нулевые значения. Только один первичный ключ в таблице.
Основные особенности уникального ключа:
Он также может содержать уникальное значение для каждой строки данных.
Он также может содержать нулевые значения.
Несколько уникальных ключей в таблице.
PRIMARY KEY = UNIQUE KEY + Not Null CONSTRAINT