tsql对于这种类型的数据库模式会是什么?

时间:2011-03-27 18:50:56

标签: sql-server database-design schema

enter image description here

asked this question,有人提出了这种类型的架构。我不熟悉超级/子类型的工作原理。你能告诉我一个关于如何创建这个数据库的TSQL示例吗?

我遇到麻烦的另一个问题是订单,以及订单中的一系列商品,我怎么知道商品是披萨,饮料还是配菜?

谢谢。

2 个答案:

答案 0 :(得分:2)

一种方法是使用超级键来约束子类型

  • Item将具有TypeID列(查找新表ItemType)
  • New ItemType 1 = Pizza,2 = Sides,3 = Beverage etc
  • 对具有当前PK列+ TypeID
  • 的Item有一个新的唯一约束
  • 每个表Pizza,Beverage,Sides都有一个带有CHECK约束的typeID列,以将表中的条目限制为Pizza,Sides,Beverage之一。所以1比萨饼等。
  • 来自Pizza,Beverage,Sides to Item的FK与上面的新唯一约束相同

这也回答了你的第二个问题

答案 1 :(得分:0)

表:

ITEM_SUPER_TYPE

  • ITEM_SUPER_TYPE_ID(pk,IDENTITY)
  • 说明

ITEM_SUB_TYPE

  • ITEM_SUB_TYPE_ID(pk,IDENTITY)
  • ITEM_SUPER_TYPE_ID(fk to ITEM_SUPER_TYPE.ITEM_SUPER_TYPE_ID)
  • 说明

ITEM

  • ITEM_ID
  • ITEM_SUB_TYPE_ID(fk to ITEM_SUB_TYPE.ITEM_SUB_TYPE_ID)

这样,可以从子类型中推断出超类型。