Форум: "Базы";
Текущий архив: 2002.03.21;
Скачать: [xml.tar.bz2];
ВнизНеобходим ли первичный ключ? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c