Навпаки, Ні, НЕ потрібно завжди мати числовий ПК AutoInc PK.
Якщо ви ретельно аналізуєте свої дані, ви часто виявляєте природні ключі в даних. Це часто трапляється, коли дані мають власне значення для бізнесу. Іноді ПК - це артефакти давніх систем, які ділові користувачі використовують як другу мову для опису атрибутів своєї системи. Наприклад, я бачив номери VIN транспортних засобів, які використовуються в якості основного ключа таблиці "Транспортний засіб" в системі управління автопарком.
Однак він виник, якщо у вас вже є унікальний ідентифікатор, використовуйте його. Не створюйте другий, безглуздий первинний ключ; це марно і може спричинити помилки.
Іноді ви можете використовувати ПК AutoInc для створення значущого для клієнта значення, наприклад, номерів політики. Встановлення стартового значення на щось розумне та застосування ділових правил щодо провідних нулів тощо. Це, мабуть, підхід "найкращий з обох світів".
Якщо у вас є невелика кількість значень, які є відносно статичними, використовуйте значення, які мають сенс для користувача системи. Навіщо використовувати 1,2,3, коли ви можете використовувати L, C, H, де L, H і C представляють життя, автомобіль та будинок у контексті страхування "Тип полісу" або, повертаючись до прикладу VIN, як щодо використання "TO "для Toyota? У всіх автомобілях Toyata встановлено VIN, який починається на "TO" Користувачі мають одну меншу річ, щоб пам’ятати про них, зменшує ймовірність введення помилок програмування та користувачів, а може бути навіть корисним сурогатом для повного опису в звітах управління, що робить звіти простішими. писати і, можливо, швидше створювати.
Подальша розробка цього питання, ймовірно, "міст занадто далеко", і я, як правило, не рекомендую його, але я включаю його для повноти, і ви можете знайти для нього корисне використання. Тобто використовуйте Опис як Первинний ключ. Для швидко мінливих даних це гидота. Для дуже статичних даних, які повідомляються на " Все час" , можливо, ні. Просто згадуючи це, щоб він сидів там як можливість.
Я використовую автоматичні ПК, я просто залучаю мозок і спочатку шукаю кращі альтернативи. Мистецтво дизайну баз даних робить щось значиме, до чого можна швидко поставити запит. Занадто багато приєднань перешкоджає цьому.
EDIT Ще один важливий випадок, коли вам не потрібен автогенерований ПК - це випадок таблиць, що представляють собою перетин двох інших таблиць. Щоб дотримуватися аналогії автомобіля, автомобіль має 0..n аксесуарів, кожен аксесуар можна знайти на багатьох автомобілях. Отже, щоб представити це, ви створюєте таблицю Car_Accessory, що містить ПК від автомобіля та аксесуарів та іншу відповідну інформацію про посилання Дати тощо.
Те, що вам (як правило) не потрібно, - це AutoInc PK на цьому столі - до нього можна отримати доступ лише через автомобіль "скажіть, які аксесуари є на цьому автомобілі" або з аксесуара "скажіть, які машини мають цей аксесуар"