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