我们正在试图为我们正在创建的assets资源 系统制定一个编号系统,办公室里对这个话题进行了一些激烈的讨论,所以我决定请教SO的专家.
考虑下面的数据库设计会是更好的 Select .
Example 1:使用自动代理键.
================= ==================
Road_Number(PK) Segment_Number(PK)
================= ==================
1 1
Example 2:使用程序生成的主键
================= ==================
Road_Number(PK) Segment_Number(PK)
================= ==================
"RD00000001WCK" "00000001.1"
(00000001.1
表示这是道路的first段.这increases表示每次添加新路段时,例如00000001.2
)
Example 3:同时使用两者(添加新列)
======================= ==========================
ID(PK) Road_Number(UK) ID(PK) Segment_Number(UK)
======================= ==========================
1 "RD00000001WCK" 1 "00000001.1"
只是一点背景信息,我们将在报告和其他文件中使用Road Number
和Segment Number
,所以它们必须是unique.
我一直喜欢保持简单,所以我举了prefer个例子1,但是我一直在读到,您不应该在报告/文档中公开您的主键.因此,现在我更多地按照示例3的思路思考.
我也倾向于示例3,因为如果我们决定更改assets资源 编号的生成方式,它将不必对主键进行级联更新.
你认为我们应该怎么做?
谢谢你.
编辑:感谢大家的精彩回答,对我帮助很大.