帮助为披萨店设计数据库架构

时间:2011-03-24 13:27:18

标签: database-design schema

这是脚本:

create table Customer
(
CustomerId int primary key identity(1,1),
Name nvarchar(64) not null,
LastName nvarchar(256) not null,
Telephone nvarchar(32),
MobilePhone nvarchar(32),
Address nvarchar(256)
)

create table Product
(
ProductId int primary key identity(1,1),
Name nvarchar(64),
Price decimal
)

create table StoreOrder
(
StoreOrderId int primary key identity(1,1),
Date datetime,
CustomerId int foreign key references Customer(CustomerId),
Total decimal
)

create table ProductStoreOrder
(
ProductStoreOrderId int primary key identity(1,1),
StoreOrderId int foreign key references StoreOrder(StoreOrderId),
ProductId int foreign key references Product(ProductId),
Quantity int
)

我对如何处理浇头很困惑。我应该可以在某个地方的数据库中添加浇头,并使用N个浇头创建比萨饼,每个浇头也应该有相关的价格。

可以创建一个Toppings表并将其与Product关联,但不是每个产品都有一个顶部。例如,面包棒,苏打水,沙拉等。

处理这种情况的最佳方法是什么?此外,到目前为止对数据库设计的任何评论?

感谢您的时间。

3 个答案:

答案 0 :(得分:4)

我认为这是利用超级/子类型数据库设计的一个很好的选择。这是一个快速绘图,我相信解决了你现在所关心的问题。这只是基础,您可以随心所欲地填写所需的属性和定价。

enter image description here

答案 1 :(得分:0)

您可以尝试以下内容:

  • 比萨饼,苏打水,棍棒,沙拉都是 产品表。
  • 产品有多个Toppings(连接表中两个表的外键,此连接表中逐出的价格)

您可以在另一个表中定义产品“模板”,定义类别以及产品是否具有Toppings或其他特殊属性。

答案 2 :(得分:0)

使用@Andy的建议,或在产品表中添加一个布尔值,指示产品是否为顶部。