Может ли таблица иметь несколько первичных ключей?
Я очень запутался прямо сейчас, может быть, вы можете помочь мне лучше понять проблему в вопросе о том, что таблица может иметь два первичных ключа, если да, то как? и не так ли почему?
Ответы
Ответ 1
Вы спрашиваете, можете ли вы иметь более одного поля первичного ключа, и вы, безусловно, можете это сделать. У вас может быть только один первичный ключ, но он может состоять из такого количества столбцов, сколько вам нужно, чтобы однозначно идентифицировать ваши строки.
Используйте что-то подобное при создании своей таблицы:
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
где P_Td
и LastName
- столбцы в вашей таблице.
Если вы считаете, что хотите больше одного первичного ключа, тогда ответ "на самом деле". У вас может быть только один первичный ключ. Тем не менее, вы можете иметь столько индексов, сколько хотите, которые имеют уникальное ограничение на них. Уникальный индекс делает почти то же самое, что и первичный ключ.
например: -
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)
Примечание. В приведенном выше примере есть только ОДИН ПЕРВЫЙ КЛЮЧ (pk_PersonID
). Однако значение pk_PersonID
состоит из двух столбцов (P_Id
и LastName
).
Ответ 2
Нет У вас не может быть двух первичных ключей в одной таблице, но вы можете иметь составной первичный ключ
Поскольку первичный ключ является идентификатором строки и не может быть два идентификатора для строки.
Ответ 3
В таблице может быть много ключей, но по соглашению только один ключ в таблице обозначается как "первичный". Обычно это может быть ключ, который считается "предпочтительным" идентификатором для информации в этой таблице, или это может быть ключ, выделенный дизайнером таблицы для какой-либо другой конкретной цели.
В принципе, любая функция или свойство, которые вы связываете с ключом, обозначенным как "primary", могут быть также связаны с любым другим ключом. Поэтому для многих практических целей вы можете назначить более одного такого "первичного" ключа, если вы этого захотите, но только в том случае, если это разрешено ограничениями какой-либо конкретной СУБД.
В реляционной модели данных все ключи равны, и для первичных ключей нет специальной функции (на самом деле реляционное использование термина первичного ключа первоначально относилось ко всем ключам отношения, а не только к одному ключу), К сожалению, многие СУБД не соблюдают этот принцип и могут ограничить некоторые функции одним и только одним ключом таблицы, что делает необходимым выборочное представление о том, какой ключ получает как первичный. Поэтому ответ на ваш вопрос должен быть ДА в принципе. Когда вам нужно достичь этого в какой-то конкретной СУБД SQL, фактический ответ: это зависит.
Ответ 4
У вас может быть только 1 первичный ключ - диапазон ключей, которые потенциально могут быть первичным ключом, можно назвать ключами-кандидатами. Вы выбираете первичный ключ, другие альтернативные ключи могут быть реализованы как уникальные ограничения/индексы.
Таким образом, хотя есть только 1 первичный ключ, вы все равно можете обеспечить простоту других полей/комбинации полей с использованием уникального ограничения/индекса.
Ответ 5
Нет. Таблица имеет только первичный ключ. Но этот первичный ключ может содержать несколько полей. Значит, когда вы создаете таблицу и когда указывается первичный ключ, вы можете добавить более одного столбца, который вы хотите.
например
CREATE TABLE имя_таблицы (col1 Тип данных, col2 Тип данных, col3 Тип данных, col4 Тип данных, PRIMARY KEY (col1, col2, col3))
Таким образом вы можете добавить первичный ключ в одиночную таблицу
Ответ 6
В таблице вы можете сделать индексы, что позволяет внутреннему механизму базы данных обрабатывать содержимое затронутых столбцов (от 1 до многих) для удобного поиска. Поскольку движок в этот момент уже оценивает и сортирует содержимое полей, он также может легко обеспечить уникальность значений. Таким образом, индекс может охватывать 1 до многих строк и необязательно также быть уникальным.
A первичный ключ является теоретически необязательным, хотя на практике обязательным, маркером по конкретному индексу, который является вечно уникальным способом ссылки на определенную строку в таблице. Обычно это либо GUID, либо целое число с автоматическим приращением (identity
в SQL Server). Первичный ключ сам по себе является уникальным для любой данной таблицы и обеспечивает определение уникального ограничения по определению, но может опционально охватывать несколько строк (охватываемый индекс/ключ).
Например, вы можете иметь таблицу соединений, содержащую только 2 поля, которые являются как внешними ключами, так и вместе образуют первичный ключ/индекс таблицы.
Ответ 7
Нет. Вы не можете использовать более 1 первичный ключ в таблице. Для этого у вас есть составной ключ, который представляет собой комбинацию нескольких полей.
Ответ 8
Поскольку вы не можете определить более одного столбца в качестве основного ключа, как показано ниже
create table test1 (col1 numeric(10) primary key, col2 numeric(10) primary key
,col3 numeric(10) primary key, col4 numeric(10))
Он должен быть составным. Да, у нас может быть более одного столбца в качестве первичного ключа для решения некоторых бизнес-требований. Первичные ключи гарантируют, что столбец (столбцы) не будут иметь повторяющихся значений, Null в таблице.
Ниже SQL создается таблица с составным основным ключом
CREATE TABLE track(
col1 numeric(10) , col2 numeric(10) ,col3 numeric(10) primary key, col4 numeric(10),
PRIMARY KEY (col1,col2,col3)
)
Ответ 9
Трек CREATE TABLE (
col1 числовое число (10), числовое значение col2 (10), числовое значение col3 (10), числовое значение col4 (10),
ПЕРВИЧНЫЙ КЛЮЧ (col1, col2, col3)
)
Ответ 10
Вы можете попробовать FOREIGN KEY - поле (или набор полей) в одной таблице, которое ссылается на PRIMARY KEY в другой таблице.