Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Unique и уникальный индекс


Bless ©   (2003-08-20 12:27:00) 

Прокомментируйте пожалуйста следующий текс(из книги "Microsoft SQL Server для профессионалов", Мамаев, Вишневский):

"Для обеспечения целостности данных в колонке можно определить ограничение целостности UNIQUE или PRIMARY KEY, а не прибегать к использованию уникальных индексов. Использование уникальных индексов только для обеспечения целостности данных является неоправданной тратой пространства в базе данных."

И на той же странице ниже:

"ВНИМАНИЕ------------------------------------------------------
При создании первичного ключа (PRIMARY KEY) или ограничения целостности UNIQUE уникальный индекс будет создан автоматически, если явно не указано другое."

Отсюда вопрос для повышения образованности:

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


Bless   (2003-08-26 09:58:00) [1]

АлексейК (21.08.03 14:22) [5]>
>Видимо можно сделать вывод, что при создании уникального индекса
>создается сам индекс и надстройка UNIQUE ограничения к его
>данным, а при создании ограничения надстройка создается
>непосредственно к данным.

Повторюсь. Как тогда создать ограничение UNIQUE не создавая индекса. Ведь он по умолчанию создается, если написать что-то вроде create table tt (x int, y int UNIQUE).


АлексейК   (2003-08-21 14:22:00) [2]

Ограничение целостности UNIQUE и UNIQUE INDEX понятия отличные. Хотя некая путаница есть и документации. Например
-UNIQUE INDEX представляет собой ограничение целостности UNIQUE, примененной к данным индекса и не является самостоятельным типом индекса, а всего лишь надстройкой к кластерным или некластерным индексам. Считется что уникальный индекс предоставляет более быстрый доступ к данным, чем ограничение UNIQUE но занимает дополнительное место.
-однако также написано что ограничение целостности Primary Key и UNIQUE при создании автоматически создают уникальный индекс, следовательно они должны бы и создать дополнительно кластерный или некластреный индексы.
В случае с Primary Key так и получается, создается кластерный индекс, что дает все же преимущество нежели создание просто уникального индекса, но с UNIQUE не совсем понятно (если в таблице есть уже кластерный индекс, то получается, что нужно создать некластерный индекс и ограничение на него, то есть получаем уникальный индекс).
Видимо можно сделать вывод, что при создании уникального индекса создается сам индекс и надстройка UNIQUE ограничения к его данным, а при создании ограничения надстройка создается непосредственно к данным.


Bless   (2003-08-21 12:44:00) [3]

Спасибо.


Johnmen   (2003-08-20 23:45:00) [4]

>Sandman25 (20.08.03 18:24) [2]

Да-да, именно так...:)


Sandman25   (2003-08-20 18:24:00) [5]

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

Эту фразу так и надо понимать. Если явный уникальный индекс по данному полю (или совокупности полей) создан не был, то он будет создан автоматически, и ему будет присвоено автоматом выбираемое имя (что-то типа 150_123, в зависимости от СУБД, конечно).


Johnmen   (2003-08-20 18:19:00) [6]

Видимо данные товарищи не очень качественно/не полностью перевели выдернутые из западных книжек куски текста...:)))

Потому, что PK это всегда уникальный индекс. Обратное неверно.
Огр-е ссылочной цел-ти UNIQUE всегда уникальный индекс. Обратное неверно.

А фразу
"При создании первичного ключа (PRIMARY KEY) или ограничения целостности UNIQUE уникальный индекс будет создан автоматически, если явно не указано другое."
надо понимать так, что если не создан автоматически, то д.б. создан явно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо