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

Есть 2 таблицы (скриншот)

Щас читаю эту статью
http://msdn.microsoft.com/ru-ru/library/ms174979(v=sql.90).aspx


Хочу сделать на Таблицу Т1 первичный ключ, а на T2 внешний
Правильно?

К сообщению приложен файл. Размер - 25Kb
26 авг 13, 11:25    [14754780]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Гость888
Guest
Зависит, что считать за правильно.

Первичный ключ обеспечивает вам УНИКАЛЬНОСТЬ ДАННЫХ + КЛАСТЕРНЫЙ ИНДЕКС на указанном поле(полях).

Внешний ключ обеспечивает ССЫЛОЧНУЮ ЦЕЛОСТНОСТЬ.

Первичный ключ одновременно может являтся и внешним ключом.
26 авг 13, 11:53    [14754944]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Гость888
Первичный ключ обеспечивает вам ... КЛАСТЕРНЫЙ ИНДЕКС на указанном поле(полях).

Ерунду говорите, тёзка, первичный ключ совсем не обязательно обеспечивает кластерный индекс:
ALTER TABLE Таблица ADD CONSTRAINT ПК_Таблица PRIMARY KEY NONCLUSTERED (Поле)
26 авг 13, 11:59    [14754980]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
o-o
Guest
Гость888
Первичный ключ обеспечивает вам УНИКАЛЬНОСТЬ ДАННЫХ + КЛАСТЕРНЫЙ ИНДЕКС на указанном поле(полях).


"кто на ком стоял?" (c)
про кластерный уже ответили.
ну и как бы не "ПК индекс обеспечивает",
а как раз индекс обеспечивает уникальность,
т.е. ПК реализуется с помощью индекса.
26 авг 13, 12:13    [14755058]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Гость888
Guest
  Для ограничений PRIMARY KEY по умолчанию создается кластеризованный индекс (CLUSTERED),а для ограничений UNIQUEнекластеризованный (NONCLUSTERED). 

Я просто описал поведение по умолчанию. Чито в ытакие злые сразу?
26 авг 13, 12:29    [14755167]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2566
Гость888,

они не выспались и голодные
26 авг 13, 12:32    [14755185]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
o-o
Guest
PaulYoung,
+
да щазз.
мной уже 2-ой завтрак прикончен.
мы просто НЕЖАДНЫЕ :)
да и сколько угодно пускай думает, что это ПК индекс обеспечивает
26 авг 13, 12:39    [14755215]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Гость333
Member

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

Не выспавшись — есть такое дело, но вполне сыт, пьян и нос в табаке ;-)
26 авг 13, 12:42    [14755232]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
вася1
Guest
Гость888,

Я потом добавлю индексы.

Сейчас меня интересует именно ключи.

На таблицу T1 я поставил

CONSTRAINT [PK_T1] PRIMARY KEY ([c1])

На таблицу Т2 я могу поставить внешний ключ?

Я правильно рассуждаю?
26 авг 13, 12:42    [14755233]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Гость888
Guest
Ну вы зануды!
Магическая манта PRIMARY KEY это "шорткат" позволяющий в два слова объяснить серверу пожелание

"создай уникальный кластерный индекс и поставь ограничение не нулл "

Можно дописать чтобы пк был НЕКЛАСТЕРНЫЙ (внезапно), но как правило так не делается.


Чего тут кому доказывать?
26 авг 13, 12:44    [14755243]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Гость888
Guest
вася1,
повторяю, зависит от того какую задачу вы решаете.

Если вы хотите, чтобы из Т1 нельзя было удалять записи, пока есть ссылка на Т2, то ПК вам не нужен, а нужен ФК.

Если вы хотите, чтобы в Т1 в [c1] нельзя было вставлять повторяющиеся значения, и по [c1] был построен кластерный индекс, то ПК вам нужен. Иначе ПК вам не нужен.
26 авг 13, 12:48    [14755263]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Вася1
Guest
Гость888,

Вы правы

Когда я создал первичный ключ на таблицу Т1 он автоматически создал кластерный индекс

На таблицу Т2 я сделаю внешний ключ, и я предполагаю он так же автоматически добавит индекс?

Подскажите пожалуйста синтаксис "чтобы добавить внешний ключ в таблицу"
26 авг 13, 12:48    [14755264]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2566
вася1
Гость888,

Я потом добавлю индексы.

Сейчас меня интересует именно ключи.

На таблицу T1 я поставил

CONSTRAINT [PK_T1] PRIMARY KEY ([c1])

На таблицу Т2 я могу поставить внешний ключ?

Я правильно рассуждаю?
да
26 авг 13, 12:48    [14755265]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Вася1
Guest
PaulYoung,

Подскажите пожалуйста синтаксис "чтобы добавить внешний ключ в таблицу"
26 авг 13, 12:49    [14755270]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2566
Вася1,

Создание связей по внешнему ключу
26 авг 13, 12:50    [14755278]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Гость888
Иначе ПК вам не нужен.
PK нужен ВСЕГДА!
Вася1
На таблицу Т2 я сделаю внешний ключ, и я предполагаю он так же автоматически добавит индекс?
Нет. Никаких индексов из-за FK сервер автоматически создавать не будет!
26 авг 13, 12:52    [14755296]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Вася1
На таблицу Т2 я сделаю внешний ключ, и я предполагаю он так же автоматически добавит индекс?

Индекс для внешнего ключа автоматически не добавляется.
26 авг 13, 12:53    [14755299]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Гость888
Guest
На таблицу Т2 я сделаю внешний ключ, и я предполагаю он так же автоматически добавит индекс?


Не добавит. Тут же по-русски написанно как это всё работает!
26 авг 13, 12:54    [14755305]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Гость888
Guest
http://msdn.microsoft.com/ru-ru/library/ms174979.aspx
26 авг 13, 12:54    [14755308]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Гость888
Guest
автор
iap,PK нужен ВСЕГДА!



Всегда чтобы зачем?
CREATE TABLE  #MY_TEMP_BUFFER_TABLE (string_field  NVARCHAR(MAX))  
Тоже нужен?
26 авг 13, 12:58    [14755333]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
o-o
Guest
Гость888,
+
Гость888
Ну вы зануды!
Магическая манта PRIMARY KEY это "шорткат" позволяющий в два слова объяснить серверу пожелание "создай ...

In a relational database, a "Primary Key" is a key that uniquely defines the characteristics of each row (also known as record or tuple).
The primary key has to consist of characteristics that cannot be duplicated by any other row. The primary key may consist of a single attribute or a multiple attributes in combination...
Primary key, wikipedia

где тут хоть слово про мантру или команду?

сам зануда! :P
а мы типа математики-педанты
26 авг 13, 13:00    [14755352]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Вася1
Guest
Гость888
автор
iap,PK нужен ВСЕГДА!



Всегда чтобы зачем?
CREATE TABLE  #MY_TEMP_BUFFER_TABLE (string_field  NVARCHAR(MAX))  
Тоже нужен?



А где таблица в которой будет внешний ключ?
26 авг 13, 13:01    [14755354]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Гость888
Магическая манта PRIMARY KEY это "шорткат" позволяющий в два слова объяснить серверу пожелание

"создай уникальный кластерный индекс и поставь ограничение не нулл "

Можно дописать чтобы пк был НЕКЛАСТЕРНЫЙ (внезапно)

Внезапно, на таблице уже может быть кластерный индекс (не являющийся Примари Кеем), тогда "шорткат" PRIMARY KEY будет означать пожелание

"создай уникальный некластерный индекс и поставь ограничение не нулл "
26 авг 13, 13:03    [14755364]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
Вася1
Guest
Вася1,

Столбец типа varchar(max) может участвовать в ограничении FOREIGN KEY только при условии, что первичный ключ, на который он ссылается, также имеет тип данных varchar(max).
26 авг 13, 13:03    [14755367]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с ключами  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Гость888
автор
iap,PK нужен ВСЕГДА!



Всегда чтобы зачем?
CREATE TABLE  #MY_TEMP_BUFFER_TABLE (string_field  NVARCHAR(MAX))  

Тоже нужен?
Слово "всегда" имеет не так много значений.
И здесь тоже нужен. Никаких исключений!
Это как пристёгиваться в машине. Должен выработаться инстинкт.
26 авг 13, 13:04    [14755369]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить