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

标签 mysql database database-design

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

所以有一个事务表:

TransactionId(pk)
Amount
Method
AuthorisedBy(fk)

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

BookId(pk)
Name
Description
Price

还有一个 Pens 表:

PenId(pk)
Color
Description
Price

还有一张削笔服务的 table :

SharpenId(pk)
Description
Price
<小时/>

现在我的问题是将交易与不同项目的特定 ID 链接起来。 一种方法是在事务表中包含:

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

其中产品类型指的是表的标题,例如“书籍”,在这种情况下,产品 ID 指的是 BookId。

或者另一种方法是拥有一个“产品”链接表,它引用其他表的每个不同 ID,因此事务表将如下所示:

TransactionId(pk)
Amount
Method
AuthorisedBy
ProductID(fk)

产品表将如下所示:

ProductId(pk)
PoductType
ProductTypeId(fk)

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

最佳答案

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

您需要额外的表格来解释产品的类型,例如它的类别: (表)产品类型:产品类型 ID - PK、产品类型名称

为了注册交易,您只需要一张表: (表)交易:TransactionID、ProductID - FK、金额、方法、AuthorizedBy

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

关于mysql - 数据库架构问题,产品类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1565139/

相关文章:

php - 在我的 php 项目中哪个更好? 1 个带有多个空字段的表 1 个带有多个空字段的表?

sql - SQL Server 数据库中哪种 ID 类型最常见,哪种更好?

mysql - 发票的历史价目表?

mysql - 博客系统中的数据库设计

mysql - ReferenceError:未定义连接nodejs mysql

mysql - 即使 NOT NULL 也为 Null

另一个数据库表中的 MySQL 外键?

php - 我通过 php 发布的日期延迟了 1 小时...如何解决?

c++ - 从 sqlite3 数据库(.db 文件)检索数据并将其存储在 C++ 中的简单字符串中

database - 数据库设计中的存量和流量