Чи потрібний первинний ключ
Чи обов'язково при створенні таблиці призначати поле первинним ключем, якщо я і так, "в голові", знаю, що воно первинне і через нього пов'язую дані з інших таблиць. Або створення первинного ключа прискорює роботу з таблицею?
←→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]
2. Є рідкісні обґрунтовані винятки.
3. Деякі любителі (на зразок мене) у будь-якому випадку створюють штучний ключ для уніфікації: перше поле в таблиці - ID, поля в інших таблицях, що посилаються на нього - ID_. Дуже зручно.
←→petr_v_a (2002-02-22 13:32) [6]
Прискорює select по ключовому полю, уповільнює insert. Якщо update/delete мають вигляд . where >