数据库架构问题,产品类型

时间:2009-10-14 09:16:13

标签: mysql database database-design

我的问题是如何为不同类型的产品建模交易。

所以有一个交易表:

TransactionId(pk)
Amount
Method
AuthorisedBy(fk)

不同类型的产品有不同的表格。 书籍表:

BookId(pk)
Name
Description
Price

和钢笔表:

PenId(pk)
Color
Description
Price

铅笔锐化服务表:

SharpenId(pk)
Description
Price

现在我的问题是将交易与不同项目的特定ID相关联。 一种方法是在交易表中:

TransactionId(pk)
Amount
Method
AuthorisedBy
ProductType
ProductTypeId(fk)

如果产品类型会引用表格的标题,例如书籍,那么产品ID就会引用BookId。

或者另一种方法是拥有一个引用其他表的每个不同id的'products'链接表,因此Transaction表看起来像这样:

TransactionId(pk)
Amount
Method
AuthorisedBy
ProductID(fk)

并且products表格如下所示:

ProductId(pk)
PoductType
ProductTypeId(fk)

但是这是一个与事务表完全相同的表。所以我的问题是如何有效地将不同的产品类型表链接到交易? 请注意我没有为学校铅笔削尖服务建模,它们只是示例:P

1 个答案:

答案 0 :(得分:2)

首先,我不喜欢数据库模型。您只需要一个用于产品定义的表,该表可以包含描述每个产品的列: (表)产品:ID - PK,名称,描述,颜色,价格,ProductTypeID - FK

您需要额外的表来解释产品的类型,它的类别应该说: (表)ProductTypes:ProductTypeID - PK,ProductTypeName

要注册交易,您只需要一张桌子: (表)交易:TransactionID,ProductID - FK,Amount,Method,AuthorizedBy

我认为此架构可以帮助您解决问题。 快乐的编码。