Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.21;
Скачать: CL | DM;

Вниз

Необходим ли первичный ключ?   Найти похожие ветки 

 
tovSuhov ©   (2002-02-21 10:58) [0]

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


 
Johnmen ©   (2002-02-21 11:09) [1]

Ускоряет значительно !


 
EAlexander ©   (2002-02-21 11:09) [2]

Oracle уже имеет свой внутренний первичный ключ -rowid, но это не смысловое поле - сравнивать по нему практически нельзя.
При создании первичного ключа - это же индекс, и поиск по нему идет гораздо быстрее.


 
EsKor   (2002-02-21 11:27) [3]

Вы то м.б. и знаете, но вот ваше СУБД об этом не догадывается.
Но если ваше поле точно является уникальным и вы не хотите его дать ему статус первичного ключа, и связываете таблицы в рукопашную и таким же образом поддерживаете целостность и непротеворечивость БД и это хорошо получается, то и не надо. Правда если с вашей БД будут работать несколько приложений, то в каждом из них, кроме собственно разрешения конфликтов доступа, нужно очень тщательно продумывать и обеспечивать все то о чем написано выше. А вот при использовании индексов и первичных ключей о большинстве проблем можно специально не заботится скурпулезно прописывая код. Ну если даже у вас не СУБД, а файловая БД, то часть этих забот могут взять на себя компоненты доступа и управления БД. В общем, лучше от своего приложения или СУБД ключевое поле в секрете не держать. Извините за м.б. некоторую сумбурность изложения.


 
deleon   (2002-02-21 12:16) [4]

Все правильно, первичный ключ ГАРАНТИРУЕТ уникальность записи, что позволяет правильно делать UPDATE & DELETE, так что если вы не уверены что все записи таблицы будут уникальными, лучше первичный ключ создать!


 
Vadim ©   (2002-02-21 17:52) [5]

tovSuhov © (21.02.02 10:58)
1. Создание первичного ключа обязательно (любителям граблей не читать). В качестве первичного ключа могут быть использованы любые поля (от 1 до нескольких), удовлетворяющие условиям:
- объявлены как NOT NULL;
- не могут (в сумме) иметь дублирующихся значений;
- имеют небольшую суммарную "ширину".
Если полей, удовлетворяющих данному условию нет, надо создать искусственный первичный ключ.

2. Есть редкие обоснованные исключения.

3. Некоторые любители (вроде меня) в любом случае создают искусственный ключ для унификации: первое поле в таблице - ID, поля в других таблицах, ссылающиеся на него - ID_<имя таблицы>. Очень удобно.


 
petr_v_a ©   (2002-02-22 13:32) [6]

Ускоряет select по ключевому полю, замедляет insert. Если update/delete имеют вид ... where id= :id, они работают быстрее засчет индекса, в противном случае медленнее. Если уверен, что ключ никак не сможет продублироваться, ссылочная целостность не нарушится, можно PK не использовать. Но такие задачи больно редко встречаются :))



Страницы: 1 вся ветка

Текущий архив: 2002.03.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-66912
Сержжж
2002-03-06 14:02
2002.03.21
Delphi5 в XP


14-66957
BWG
2002-01-19 19:53
2002.03.21
ICQ Mastak Active list


1-66926
ak
2002-03-06 18:47
2002.03.21
проблема с версией BDE


1-66866
dolmat
2002-03-05 16:27
2002.03.21
Печатать подобно DOS


14-67013
Shiza
2002-02-08 18:49
2002.03.21
Вирусы в Delphi