首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在线购物和店内购物的单独表格?

在线购物和店内购物的单独表格?
EN

Stack Overflow用户
提问于 2014-05-25 06:47:43
回答 3查看 49关注 0票数 0

我正在为一家零售商开发一个系统,在决定如何在数据库中表示订单时,我遇到了一个难题。到目前为止,我的Order表的模式如下:

代码语言:javascript
复制
Id                - PK
AccountId         - FK (Nullable)
ShippingAddressId - FK (Nullable)
BillingAddressId  - FK (Nullable)
ShippingMethod    - (Nullable)
Type              - (Nullable)
Status
Date
SubTotal
Tax
Total

我的问题是我不确定我是否应该在不同的表中表示在线购物和店内购物。如果我将它们存储在同一个表中,那么所有不可为空的字段将是唯一适用于店内购买的字段。

我脑海中闪过的另一个设计模式是这样的:

在线订单表:

代码语言:javascript
复制
PurchaseId        - PK, FK
AccountId         - FK
ShippingAddressId - FK
BillingAddressId  - FK
ShippingMethod
Type

采购表:

代码语言:javascript
复制
Id       - PK
Status
Date
SubTotal
Tax
Total

对于店内购买,根本不会有来自在线订单表的引用。

有什么想法?

EN

回答 3

Stack Overflow用户

发布于 2014-05-25 06:56:08

我将为location创建第二个表,其中包含主键和位置信息。这也可能是在线的。然后在你的主表中使用一个外键。然后,您只需填写您正在执行的应用程序所需的字段(在商店或在线)。这还允许业务增长到更多的位置,只需将其添加到location表中即可。

票数 0
EN

Stack Overflow用户

发布于 2014-05-25 10:49:59

我将采用最初的设计。可能更容易维护,也更高效。

票数 0
EN

Stack Overflow用户

发布于 2014-05-25 20:02:21

您的第二个设计非常接近于实体子类型模式。如果您的在线订单表的主键是您的purchase表的外键,那么您将拥有实体子类型。

您的原始设计是针对数据库的物理实现的实用设计,因为它易于使用。实体子类型将是逻辑层的首选设计,因为它清楚地表示了关于哪些谓词(列)属于哪些逻辑表的规则。

有些人也会将实体子类型模式用于他们的物理模型,因为他们对空值有一种反感。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23850371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档