仅用于参考完整性的单列/主键表?

时间:2010-09-15 15:15:01

标签: database database-design referential-integrity

也许我正在解决这个问题,但我正在为我的一个项目设计数据库设计。

我有一个具有分类列的实体,该实体将实体分组为用户方便的类别。这些分类是由用户预定义且不可更改的(至少是当前设计)。

我正在尝试决定是否应该有一个'EntityClassification'表,其中只包含一个'Id'列作为主键而没有其他信息,以便在实体之间建立强制关系:分类 - > EntityClassification:(出处同上)

我不打算在EntityClassification中有一个名称/描述列,因为我目前的想法是我需要支持这些预定义名称的本地化,这些名称将使用静态字符串表来完成,例如下载到资源文件的资源文件客户根据他们的国家/语言。实际上没有任何其他与我想要的EntityClassfication相关的数据,而且表似乎可能是一种过度杀伤?

对于此类问题,这是常见的/推荐做法吗?我们正在使用SQL Server 2008,并且没有数据库的枚举数据类型,这似乎是我正在努力实现的目标。

2 个答案:

答案 0 :(得分:3)

您应该拥有名称和描述的表格,不仅用于最终用户显示,还有内部文档,因此当用户说“基于此分类的查询不起作用时!”将来雇用的人会知道他们正在谈论的是哪个ID。

答案 1 :(得分:1)

您是否只想确保Entity:Classification中的值仅限于预先确定的列表?如果是这样,check constraint可能就是您所需要的。

这样的约束不像外键那样灵活:要改变我们必须删除的选中值并重新创建约束,但是你说没有计划改变值,所以这并不重要。