database - 设计一个包含多种不同产品的数据库?

标签 database database-design

作为我最近开始计划的项目的一部分,我需要构建一个包含多个产品的数据库结构。举个例子,想想亚马逊的结构方式。它有几个类别,并且在这些类别中还有几个子类别。

我的问题是,从概念上讲,我不确定如何构建数据库表。我曾考虑过为类别和子类别创建一个自引用表,但由于我确实计划在数据库中拥有各种各样的产品,所以我不知道是否应该将它们分组到一个名为“产品”或将它们全部放在单独的表中。

例如,马桶是一种产品,而电视可能是另一种产品。尽管它们有不同的类别/子类别,但它们都是产品。通过将它们放在一个“产品”表中,它们将共享对它们都没有意义的属性。厕所不需要分辨率或显示尺寸属性(除非它是一个非常特殊的厕所?),电视不需要座位尺寸属性。

我认为解决这个问题并仍然将所有内容保留在一个表中的方法是创建一堆 NOT NULL 属性,如果不需要的话,某些项目可能会丢失这些属性,但常识告诉我,这这可能不是解决问题的最佳方式。

所以在这一点上,我觉得我真正的问题是弄清楚如何构建这个数据库及其具有多个类别/子类别和不同种类的项目的表。我可以制作一张电视 table 和厕所 table 吗?这一切将如何构建?这类问题通常是如何计划的?

谢谢

最佳答案

通用产品表是一个好方法。您不会希望每次拥有新类型的产品时都在架构中创建新表。

与类别类似,自引用表更适合父/子关系,因此您不必每次需要新级别的子类别时都创建一个新表。

您的产品表应包含所有产品的通用信息。例如。名称和可能的价格(尽管如果单个产品有不同的价格,那么价格最好存储在引用该产品的另一个表中)。

如果您有大量与每个产品的特征相关的其他信息,则可以创建一个属性表和另一个引用该产品的每个属性值的表。

这是一个简单的示例架构:

enter image description here

关于database - 设计一个包含多种不同产品的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20793000/

相关文章:

PHP读取数据库中的字段

database - 错误 :could not identify an equality operator for type point

sql - Apps 脚本、SQL 数据库和 VPN

SQL Server 计算列

mysql - 数据库设计的性能: One database for n customers vs a database per customer

mysql - 健身类(class)预订系统的数据库模式

c# - 写重应用的架构设计

python - sqlalchemy外键与父类的关系

javascript - firebase 中数据设计的最佳实践

php - 多个SQL查询来选择数据MySql php