Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / ограничение уникальности против уникального индекса / 12 сообщений из 12, страница 1 из 1
15.02.2005, 18:30
    #32917094
Nick-SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение уникальности против уникального индекса
Дайте пожалуйста ссылку на статьи, где авторитетные люди в доступной форме объясняют, что по возможности надо пользоваться unique constraint.
...
Рейтинг: 0 / 0
16.02.2005, 09:15
    #32917625
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение уникальности против уникального индекса
Nick-SQLгде авторитетные люди в доступной форме объясняют
Кому и Гриша Зубр из Марьиной Рощи - авторитет.
...
Рейтинг: 0 / 0
18.02.2005, 10:40
    #32922490
AI
AI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение уникальности против уникального индекса
Nick-SQLДайте пожалуйста ссылку на статьи, где авторитетные люди в доступной форме объясняют, что по возможности надо пользоваться unique constraint.

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

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

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

Вот эта рекомендация присутствует где-нибудь в стандартной документации к Ораклу? Или где на сайте? Можно ссылочку?
...
Рейтинг: 0 / 0
21.02.2005, 14:55
    #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
21.02.2005, 17:51
    #32926913
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение уникальности против уникального индекса
На сколько я знаю, в большинстве СУБД UNIQUE реализуется как уникальный индекс. Так что все равно это. Только UNIQUE при этом обычно явно присутствует в системном каталоге (в системных таблицах) как констрейнт, так что это просто более наглядно.
...
Рейтинг: 0 / 0
21.02.2005, 18:00
    #32926940
Nick-SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение уникальности против уникального индекса
2 Alexey Sh
Спасибо, но чуть не то. Собственно, как я считаю, разница в том, что констрейнт - это логика в БД, а индекс - это уже физическая (ну или просто ниже уровнем) ее, т.е. логики реализация. (С кучей оговорок и исключений, но все же...)
И хотелось бы найти статейку, где эта идея развита.
...
Рейтинг: 0 / 0
22.02.2005, 09:42
    #32927576
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ограничение уникальности против уникального индекса
Nick-SQLСобственно, как я считаю, разница в том, что констрейнт - это логика в БД, а индекс - это уже физическая (ну или просто ниже уровнем) ее, т.е. логики реализация.
ИМХО, да.

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


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