powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ограничение уникальности против уникального индекса
12 сообщений из 12, страница 1 из 1
ограничение уникальности против уникального индекса
    #32917094
Nick-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дайте пожалуйста ссылку на статьи, где авторитетные люди в доступной форме объясняют, что по возможности надо пользоваться unique constraint.
...
Рейтинг: 0 / 0
ограничение уникальности против уникального индекса
    #32917625
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick-SQLгде авторитетные люди в доступной форме объясняют
Кому и Гриша Зубр из Марьиной Рощи - авторитет.
...
Рейтинг: 0 / 0
ограничение уникальности против уникального индекса
    #32922490
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick-SQLДайте пожалуйста ссылку на статьи, где авторитетные люди в доступной форме объясняют, что по возможности надо пользоваться unique constraint.

В оракле все просто - уникальные индексы в 5 версии не создавались автоматически при создании уникального ограничения. Поэтому надо было создавать еще и индекс типа unique. В 6 и далее индекс начал создаваться автоматически и оракл стал рекомендовать использовать только ограничение как более наглядное.

В 8 и старше появилась возможность создавать ограничения отложенного действия (проверка проводится при commit). В этой ситуации при создании ограничения уникальности используется неуникальный индекс.
...
Рейтинг: 0 / 0
ограничение уникальности против уникального индекса
    #32923312
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Nick-SQL : а откуда сомнения появились?
...
Рейтинг: 0 / 0
ограничение уникальности против уникального индекса
    #32925490
Nick-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо убедить коворкеров так не делать. К сожалению, я над ними не начальствую, поэтому приказать не могу. Приходится тихонько капать на мозги...
...
Рейтинг: 0 / 0
ограничение уникальности против уникального индекса
    #32925628
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick-SQLНадо убедить коворкеров так не делать.
Как "так"? Вручную перебирать записи проверяя на уникальность? Так индекс и делает тоже самое, только оптимальным способом. Или я не понимаю ничего. В чем противоречие то в сабже? ИМХО, там вместо "против" надо равенство ставить.
...
Рейтинг: 0 / 0
ограничение уникальности против уникального индекса
    #32925690
Nick-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AI
В оракле все просто...
...оракл стал рекомендовать использовать только ограничение как более наглядное.

Вот эта рекомендация присутствует где-нибудь в стандартной документации к Ораклу? Или где на сайте? Можно ссылочку?
...
Рейтинг: 0 / 0
ограничение уникальности против уникального индекса
    #32925723
Nick-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AI
В оракле все просто...
...оракл стал рекомендовать использовать только ограничение как более наглядное.

Вот эта рекомендация присутствует где-нибудь в стандартной документации к Ораклу? Или где на сайте? Можно ссылочку?
...
Рейтинг: 0 / 0
ограничение уникальности против уникального индекса
    #32926348
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может поможет?

Oracle 9i:
The Complete reference

kevin Loney
George Koch

McGraw-Hill /Osborne
ISBN 0-07-222521-1


p 381

Enforcing Uniqueness
Recall from Chapter 2 that a set of tables is said to be in Third Normal Form if all of the columns
in each table ’s rows are dependent only on the primary key.In the BOOKSHELF_AUTHOR
table,the primary key is the combination of the columns Title and AuthorName.In other tables,
a primary key might be an employee ID,a client ID,an account number,or,in a bank,a
combination of branch number and account number.
In each of these cases,the uniqueness of the primary key is critical.A bank with duplicate
account numbers,or a billing system with duplicate client IDs,would wreak havoc as
transactions were posted to accounts belonging to different people but having the same primary
key (this is why names usually are not commonly used as primary keys —there are too many
duplicates).To avoid this danger,have your database help prevent the creation of duplicate
primary keys.Oracle offers two facilities that help:
You can guarantee the uniqueness of a key through either indexing or constraints.
You can use the sequence generators (discussed later in this chapter).
Creating a Unique Index
You can create a unique index on the combination of Title and AuthorName in the BOOKSHELF_
AUTHOR table in three ways:by creating a primary key constraint,by creating a unique constraint,
or by creating a unique index.If you create a constraint,you will be able to create foreign keys that
refer to it.If you create the unique index first,you will still be able to create a primary key on the
table —Oracle will use the existing index as the primary key index.
The following listing shows the create index command for this multicolumn index:
create unique index BA$TITLE_AUTHOR
on BOOKSHELF_AUTHOR(Title, AuthorName);
The primary key method is shown here:
alter table BOOKSHELF_AUTHOR
add constraint BA_PK primary key (Title, AuthorName);
To create a unique constraint,just replace the primary key clause with unique .When you
attempt to create a unique index on a table that already has data in it,the command will fail if
any duplicates exist.If the create unique index statement succeeds,then any future attempt to
insert (or update )a row that would create a duplicate key will fail and result in this error message:
ERROR at line 1: ORA-00001: unique constraint (BOOKSHELF_AUTHOR.BA_PK) violated
When you create an index,it requires storage space.See “Placing an Index in the Database,”
later in this chapter,for details concerning the location of the created indexes.
...
Рейтинг: 0 / 0
ограничение уникальности против уникального индекса
    #32926913
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На сколько я знаю, в большинстве СУБД UNIQUE реализуется как уникальный индекс. Так что все равно это. Только UNIQUE при этом обычно явно присутствует в системном каталоге (в системных таблицах) как констрейнт, так что это просто более наглядно.
...
Рейтинг: 0 / 0
ограничение уникальности против уникального индекса
    #32926940
Nick-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Alexey Sh
Спасибо, но чуть не то. Собственно, как я считаю, разница в том, что констрейнт - это логика в БД, а индекс - это уже физическая (ну или просто ниже уровнем) ее, т.е. логики реализация. (С кучей оговорок и исключений, но все же...)
И хотелось бы найти статейку, где эта идея развита.
...
Рейтинг: 0 / 0
ограничение уникальности против уникального индекса
    #32927576
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick-SQLСобственно, как я считаю, разница в том, что констрейнт - это логика в БД, а индекс - это уже физическая (ну или просто ниже уровнем) ее, т.е. логики реализация.
ИМХО, да.

Но я так и не понял - а какая альтернатива то индексу? Ручной перебор?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ограничение уникальности против уникального индекса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]