您好我正在开发一个电子商务应用程序,我似乎在为产品目录设计我的数据库时遇到了一些问题。
我还阅读了有关 stackoverflow 的其他类似问题,但我认为它们没有提供我需要的答案。
这是要求:
产品目录应该由类别构成,每个类别都有未知数量的子类别,每个子类别都有未知数量的产品。
应用程序应具有随意添加类别、子类别和产品的能力。
子类别将决定每种产品类型的属性。
考虑到我刚才提到的内容,我将提供一个示例以及我考虑的 3 个选项以及为什么我认为它们不好。
让我们考虑一台计算机和一台洗衣机:计算机属性 - VideoCard,ProcesorType,内存洗衣机 -Putere(w),Maximum Preasure,滤水器
这两种产品将属于不同的类别和子类别:电脑 - PC 类别 洗衣机 - 电子产品类别。
候选人一: 在这种情况下,除了常见的名称和价格等所有产品属性都将存储在 ProductType 中。但这会导致大量 NULL 值和维护噩梦。而且我认为我不能创建其他产品类型,因为那将导致需要更改 ProductType 表以添加其他列。关于我访问数据的方式也存在一些问题,但我认为它们与这个问题无关。
候选人二:
在这种情况下,每种产品类型都将有一个单独的表,其中包含其属性。但是我将访问每个产品的数据,我将不得不创建对数据库的单独调用,从而导致重复很多步骤。此外,我看不到任何方法可以使应用程序能够添加额外的产品、类别和子类别类型,而无需开发人员这样做。
候选人三:
在这种情况下,我会将每个属性存储在 FormattedProperties 内的键值对中。我还将作为我的模型的类的名称存储在 className 列中。当我访问数据时,我会使用反射来检查特定的类并初始化我的对象。
我很确定这会起作用,但我不认为将所有属性存储在格式化的键值对字符串中是最好的方法,也可能不是一个好习惯。我也知道反射速度很慢,可能会有性能损失。
在设计数据库时我可以考虑其他更好的选择吗?一些示例或链接将不胜感激。