Мы пытаемся придумать систему нумерации для системы активов, которую мы создаем, в офисе было несколько жарких дискуссий на эту тему, поэтому я решил спросить экспертов SO.
Учитывая дизайн базы данных ниже, что было бы лучшим вариантом.
Пример 1: Использование автоматических суррогатных ключей.
================= ==================
Road_Number(PK) Segment_Number(PK)
================= ==================
1 1
Пример 2: Использование сгенерированного программой PK
================= ==================
Road_Number(PK) Segment_Number(PK)
================= ==================
"RD00000001WCK" "00000001.1"
(00000001.1
означает, что это первый сегмент дороги. Это увеличивается каждый раз, когда вы добавляете новый сегмент, например 00000001.2
)
Пример 3: Использование битов обоих (добавление нового столбца)
======================= ==========================
ID(PK) Road_Number(UK) ID(PK) Segment_Number(UK)
======================= ==========================
1 "RD00000001WCK" 1 "00000001.1"
Немного справочной информации, мы будем использовать Road Number
и Segment Number
в отчетах и других документах, поэтому они должны быть уникальными .
Мне всегда нравилось держать вещи простыми, поэтому я предпочитаю пример 1, но я читал, что вы не должны раскрывать свои первичные ключи в отчетах / документах. Так что теперь я думаю о том же, что и в примере 3.
Я также склоняюсь к примеру 3, потому что если мы решим изменить способ генерации нашей нумерации активов, ей не нужно будет делать каскадные обновления первичного ключа.
Как вы думаете, что мы должны делать?
Спасибо.
РЕДАКТИРОВАТЬ: Спасибо всем за отличные ответы, очень помог мне.