【问题标题】:Help designing a database schema for a pizza store帮助为比萨店设计数据库模式
【发布时间】:2011-07-22 03:40:56
【问题描述】:

这是脚本:

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 相关联,但并不是每个产品都有一个 topping。例如,面包棒、无糖汽水、沙拉等。

处理这种情况的最佳方法是什么?另外,到目前为止,关于数据库设计的任何 cmets 吗?

感谢您的宝贵时间。

【问题讨论】:

  • 任何cmets?好吧,对于初学者来说,此刻的每一列都是可以为空的。这不太可能是正确的。

标签: database-design schema


【解决方案1】:

我认为这是一个很好的利用超级/子类型数据库设计的候选者。这是一张速写图,我相信它可以解决您此时的担忧。这只是基础,您可以拿走并填写您所关心的所需属性和定价。

【讨论】:

  • 1.您将如何设计包括订单在内的架构? 2. 您如何轻松扩展“类别”,为每个类别制作一个表格?
【解决方案2】:

你可以试试这样的:

  • 比萨、苏打水、棒、沙拉 产品表。
  • 产品有很多 Toppings(连接表中两个表的外键,此连接表中的价格被驱逐)

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

【讨论】:

    【解决方案3】:

    遵照@Andy 的建议,或在产品表中添加一个布尔值,指示产品是否为浇头。

    【讨论】:

      猜你喜欢
      • 2011-07-17
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多