Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 отличие первичного ключа от уникального индекса  [new]
monstrU
Member

Откуда: Москва
Сообщений: 1241
Все привет.
сегодня на собеседовании меня озадачили - в чем отличие первичного ключа от уникального индекса.
вроде как бы ключ индексом является, но в чем олтичие то?
29 фев 12, 15:16    [12171179]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
iljy
Member

Откуда:
Сообщений: 8711
monstrU
Все привет.
сегодня на собеседовании меня озадачили - в чем отличие первичного ключа от уникального индекса.
вроде как бы ключ индексом является, но в чем олтичие то?

Ключ не является индексом, а реализуется через индекс. Помимо этого у ключа масса иных свойств (например - поле, входящее в первичный ключ, не может быть NULL). Ну и ключ - это объект уровня базы, со всеми вытекающими требованиями на уникальность имени и т.п.
29 фев 12, 15:21    [12171238]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
ПК у таблицы может быть один, в отличие от уникального индекса.
29 фев 12, 15:22    [12171250]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
кириллk
Member

Откуда:
Сообщений: 1062
monstrU,

А кем устраиваетесь если не секрет?

Обычно спрашивают чем первичный от внешнего отличается :)
29 фев 12, 15:26    [12171310]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
monstrU
Все привет.
сегодня на собеседовании меня озадачили - в чем отличие первичного ключа от уникального индекса.
вроде как бы ключ индексом является, но в чем олтичие то?

В индекс первичного ключа нельзя добавлять INCLUDE COLUMNS, а в уникальный индекс можно.
29 фев 12, 22:10    [12173480]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Также столбцы первичного ключа не могут быть nullable.
29 фев 12, 22:49    [12173583]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
monstrU, если по простому, то с помощью первичных ключей реализуется уникальность записей в таблице и возможность ссылаться внешним ключем(PK должен быть уникальный и не должен принимать значение null). А с помощью иникального индекса реализуется уникальность значений в этой таблице (индексе). + к UI можно применять include, where.
Например таблица с Удов. Документами. Первичным ключем может быть любое int поле или uniqueidentifier (для репликаций), а примером UI может служить Серия и Номер документа (СерияДок, НомерДок).
29 фев 12, 23:33    [12173747]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
gds
с помощью первичных ключей реализуется уникальность записей в таблице и возможность ссылаться внешним ключем
А просто уникальный индекс для этого не годится?
1 мар 12, 09:23    [12174550]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
iap
gds
с помощью первичных ключей реализуется уникальность записей в таблице и возможность ссылаться внешним ключем
А просто уникальный индекс для этого не годится?

Уникальность записей реализовать можно, а вот возможность создать FK на поле, которое не является PK у Вас врятли получится.
1 мар 12, 09:28    [12174561]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
gds
iap
пропущено...
А просто уникальный индекс для этого не годится?

Уникальность записей реализовать можно, а вот возможность создать FK на поле, которое не является PK у Вас врятли получится.

ээээ, разве?
1 мар 12, 09:29    [12174564]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
FK можно вешать, как на PK, так и на UQ, т.е. на любое из этих ограничений, но не на уникальный индекс.
1 мар 12, 09:32    [12174569]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
БОЛ:

Ограничения FOREIGN KEY могут ссылаться только на столбцы с ограничениями PRIMARY KEY или UNIQUE в таблице, 
на которую указывает ссылка, или на столбцы уникального индекса (UNIQUE INDEX) такой таблицы.
1 мар 12, 09:36    [12174588]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
create table a ( id int, val char(10) )
create unique index uix on a(id)

create table b ( id int, a_id int constraint fk foreign key references a(id) on delete cascade )
1 мар 12, 09:37    [12174592]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Knyazev Alexey
gds
пропущено...

Уникальность записей реализовать можно, а вот возможность создать FK на поле, которое не является PK у Вас врятли получится.

ээээ, разве?

Пардон погоричился. Сейчас проверил действительно можно... Век живи - Век учись.

+ test

create table dbo.t002(
id int identity not null unique,
name varchar(25) not null)
GO

create table dbo.t004(
id int identity not null unique,
t002id int null,
name varchar(15)
)
go

alter table dbo.t004
add constraint FK_t004_1 foreign key(t002id) references dbo.t002(id)
GO



Knyazev Alexey, спасибо за ссылки.
1 мар 12, 09:42    [12174607]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
gds
Век живи - Век учись.


+1.
1 мар 12, 09:50    [12174642]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
pkarklin
FK можно вешать, как на PK, так и на UQ, т.е. на любое из этих ограничений, но не на уникальный индекс.
Строго говоря, FK вешается не на ограничения, а на поля.
И общим правилом можно считать обязательное существование уникального индекса по этим полям.
PK и UQ просто гарантируют выполнение этого правила.
1 мар 12, 09:51    [12174649]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
мимо
Guest
Ежели рассматривать со стороны концептуального проекирования, то первичный ключ - есть реализация суррогатного ключа, т.е. некого уникального кода, который однозначно определяет объекты(ессно одного класса) хранящиеся в системе (в БД). А уникальный индекс - это реализация ограничения (условия), которое указывает, что хранящиеся в системе объекты не должны иметь повторяющегося атрибута/атрибутов.
1 мар 12, 10:53    [12175023]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: отличие первичного ключа от уникального индекса  [new]
Valerii79
Member

Откуда: Кишинев, Молдавия
Сообщений: 395
Тот же вопрос несколько раз задавали на различных собеседованиях. Всем спасибо за ответы!
25 июн 13, 14:55    [14480538]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3754
Valerii79
Тот же вопрос несколько раз задавали на различных собеседованиях. Всем спасибо за ответы!

"Репититорство. Подгововка к ЦТ собеседованиям по sql server"
25 июн 13, 15:31    [14480901]     Ответить | Цитировать Сообщить модератору
 Re: отличие первичного ключа от уникального индекса  [new]
Valerii79
Member

Откуда: Кишинев, Молдавия
Сообщений: 395
Ivan Durak
"Репититорство. ...


Мне не нужно. Да поможет нам BOL!
26 июн 13, 11:47    [14484955]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить