Мы пытаемся придумать систему нумерации для системы активов, которую мы создаем, было несколько горячих дискуссий по этой теме в офисе, поэтому я решил спросить экспертов 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, потому что, если мы решаем изменить способ создания нужной суммы активов, ему не нужно будет делать каскадные обновления первичного ключа.
Как вы думаете, что мы должны делать?
Спасибо.
EDIT: Спасибо всем за отличные ответы, очень помог мне.