Как сделать составной ключ в mssql?

Я хочу создать составной ключ в mssql. например {адрес(город, штат, почтовый индекс)}.

Я новичок в sql. Я хочу знать, существует ли точный синтаксис для создания составного ключа в таблице. Я видел аналогичный вопрос, и ответ заключался в создании столбцов и добавлении уникального ограничения к этим столбцам. Однако я не знаю, решит ли это мою проблему.

код может быть примерно таким:

CREATE TABLE Employee(
SSN INT PRIMARY KEY NOT NULL,
FirstName NVARCHAR(50) NOT NULL,
City NVARCHAR(50) NOT NULL,
State NVARCHAR(50) NOT NULL,
ZipCode INT NOT NULL
);

Я думаю, нет проблем с использованием 3 разных ключей для такого адреса. Тем не менее, я хочу знать, есть ли лучшее решение.

Заранее спасибо.


person halid.sert    schedule 22.07.2019    source источник
comment
Составной ключ чего? PS SSN в качестве ключа может вызвать проблемы. Означает, что человек, вводящий данные, должен знать их, прежде чем сможет. Кроме того, если будет допущена ошибка, и они захотят ее отредактировать, это может вызвать проблемы с любыми таблицами, на которые ссылаются.   -  person Tony Hopkinson    schedule 22.07.2019
comment
@TonyHopkinson, как я привел пример; составной ключ будет адресом в этом сценарии. Также сделать SSN pk здесь не главное, это был просто пример. Я спрашиваю, как сделать адрес составным ключом, состоящим из города, штата и почтового индекса.   -  person halid.sert    schedule 22.07.2019


Ответы (2)


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

CREATE TABLE Employee(
SSN INT PRIMARY KEY NOT NULL,
FirstName NVARCHAR(50) NOT NULL,
City NVARCHAR(50) NOT NULL,
State NVARCHAR(50) NOT NULL,
ZipCode INT NOT NULL
CONSTRAINT address UNIQUE(City, State, ZipCode)
);

При этом вы гарантируете, что City, State и ZipCode уникальны для всех строк в таблице.

person Giovanni Patruno    schedule 22.07.2019

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

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

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

  • Было бы полезнее, если бы вы указали свое требование (что вы собираетесь
    делать с этими ключами).

person Andrews B Anthony    schedule 22.07.2019