具有共享标识字段的数据库架构

Mon*_*eNX 4 sql-server-2008 identity

我是一名涉足数据库世界的开发人员,请耐心等待。

我正在为各种类型的合同创建一个带有单独表的合同数据库。

我有 5 个表,但想在它们之间共享一个公共的“身份”字段,这样无论类型如何,任何给定的合同都会有一个唯一的合同 #。

推荐的方法是什么?不会使简单的 crud 交易变得过于复杂的东西?

我的应用程序将使用 Sql Server 2008 R2 服务器..应用程序本身是 Silverlight 4,使用 WCF Ria 服务进行 CRUD 事务。

模式想法会很棒,类似想法和技术的教程会更好。

感谢寻找罗伯特

gbn*_*gbn 6

在 SQL Server 支持序列(下一版本“Denali”)之前,您必须拥有一个公共表。

但是,如果我理解您,我认为您正在查看子类型/超类型模式。序列会很好,但是如果您使用对象角色建模进行设计,那么您将生成此模式/模式

基本上,您有一个通用的“合同”表:

ContractID, PK, UQ1 (Identity)
ContractType, FK, UQ1
InsertedDateTime
UpdatedDateTime
CounterParty
Run Code Online (Sandbox Code Playgroud)

笔记:

  • PK就是ContractID赋予一个独特的价值
  • ContractType定义您的“各种类型”。让我们选择 Tom、Dick 和 Harry 作为类型
  • 唯一键 UQ1 在两者上ContractID, ContractType(这是一个“超级键”)
  • InsertedDateTimeCounterParty等都是常用的属性

然后你有每个合同类型具有特定属性的子表

  • 合同汤姆: ContractID, ContractType, TomAttrib1, TomAttrib2, ..., TomAttribn
  • 合同迪克: ContractID, ContractType, DickAttrib1, DickAttrib2
  • 合同哈利: ContractID, ContractType, HarryAttrib1, HarryAttrib2, HarryAttrib3

笔记:

  • ContractID, ContractType 是PK和FK。
  • ContractType 具有 CHECK 约束以限制为 Tom 或 Dick 或 Harry