Таблиці пошуку (або кодові таблиці , як їх називають деякі люди) - це, як правило, сукупність можливих значень, які можуть бути задані для певного стовпця.
Наприклад, припустимо, що у нас є таблиця пошуку під назвою party
(призначена для зберігання інформації про політичні партії), яка містить дві колонки:
party_code_idn
, що містить цифрові значення, що генеруються системою, і (бракує значення доменного бізнесу ) працює як сурогат для реального ключа.party_code
, це справжній або "природний" ключ таблиці, оскільки він підтримує значення, що мають конотації ділових доменів .
Скажімо, що така таблиця зберігає дані, які випливають:
+----------------+------------+
| party_code_idn | party_code |
+----------------+------------+
| 1 | Republican |
| 2 | Democratic |
+----------------+------------+
party_code
Колона, яка зберігає значення «Республіканський» і «демократична», будучи реальним ключем таблиці, встановлюється з обмеженням UNIQUE, але необов'язково , додав party_code_idn
і визначив його як PK таблиці (хоча, говорячи логічно , party_code
може працювати як ПЕРШИЙ КЛЮЧ [ПК]].
Питання
Які кращі практики для вказуючи на підстановки значень з таблиць транзакцій ? Чи слід встановлювати зовнішні посилання (FK) або (a) безпосередньо на природне та значуще значення або (b) на сурогатні значення?
Варіант (a) , наприклад,
+---------------+------------+---------+
| candidate_idn | party_code | city |
+---------------+------------+---------+
| 1 | Democratic | Alaska |
| 2 | Republican | Memphis |
+---------------+------------+---------+
має такі властивості 1 :
- Читається для кінцевого користувача (+)
- Легко ввозити-експортувати через всі системи (+)
- Важко змінити значення, оскільки воно потребує модифікації у всіх посилаються таблицях (-)
- Додавання нового значення не дорого (=)
Я думаю, що це майже як " пройти за значенням ", щоб зробити аналогію з викликом функції в жаргоні програмування додатків.
Варіант (b) , наприклад,
+---------------+----------------+---------+
| candidate_idn | party_code_idn | city |
+---------------+----------------+---------+
| 1 | 1 | Alaska |
| 2 | 2 | Memphis |
+---------------+----------------+---------+
має властивості нижче:
- Не читабельний для кінцевого користувача (-)
- Складно імпортувати-експортувати, оскільки нам потрібно скасувати його (-)
- Легко змінювати значення, оскільки ми зберігаємо лише посилання в таблиці транзакцій (+)
- Додавання нового значення не дорого (=)
Він дуже схожий на " пройти посилання ", якщо порівнювати функціональний виклик в програмуванні програми додатків.
Імпорт-експорт також можна здійснити іншим способом, тобто, просто заново заповнивши оглядову таблицю, а потім повторно занести сурогатний стовпчик. Я сподіваюсь, що я це правильно ставлю, це те, що я щойно почув як можливість.
1. Зверніть увагу , що +
, -
і =
вказують на перевагу цих властивостей.
Питання
Цілком важливо: чи є різниця між таблицею пошуку (або коду ) та посиланням на FK, якщо ми просто збираємось використовувати останній підхід? Я думаю, вони працюють точно так само.