sql - 关于数据库设计的疑问

标签 sql mysql database-design

我对数据库设计有疑问,假设是金融/股票软件

在软件中,用户将能够创建订单, 这些订单可能包含公司产品或第三方产品

典型产品表:

PRIMARY KEY INT productId  
KEY INT productcatId
KEY INT supplierId
VARCHAR(20) name
TEXT description
...

但我还需要公司产品的更多详细信息,例如:

INT instock  
DATETIME laststockupdate  
...

问题是,我应该如何存储数据? 我在考虑 2 个选项:

1 -
将公司和第三方产品放在一个表中,
一些列不会被第三方产品使用
标识公司产品由供应商 ID 标识

2 -
将公司产品和第三方放在不同的表中

3 - [新,感谢 RibaldEddie]
有单品表,
公司产品在单独的表格中有附加信息

提前致谢!

最佳答案

您没有提到需要存储单独的供应商信息位,只是一种产品具有额外信息。因此,您可以拥有一个产品表和一个 InHouseProductDetails 表,该表具有返回存储公司特定信息的产品表的 productId 外键。然后,当您运行查询时,您可以将产品表连接到详细信息表。

好处是您不必在产品表中包含可为空的列,因此您的数据更安全,不会损坏,并且您不必将产品本身存储在两个单独的表中。

哦哦,和 3 一起去吧! 3 是最好的!

关于sql - 关于数据库设计的疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2263556/

相关文章:

javascript - 处理大型数据集 PHP 与 Javascript

database - 您将如何避免此数据库模式中的数据冲突?

database-design - 如何构建和实现自助式自定义报告?

database - 将多个在线销售点数据保存到单个销售点的最佳方法

sql - 选择一个整数的前 N ​​位

mysql - 如何按列值限制查询

sql - Oracle WHERE 子句( AND 、 OR 运算符)

MySQL - 将外键添加到现有表

php - laravel 中的 whereBetween 是包容性的吗?

mysql - Delphi 2010和Dbexpress部署