我希望让我的web应用程序的用户为产品定义自己的属性,然后为这些产品输入数据。我发现这种技术叫做n(th) normal form
。
以下是我目前正在考虑部署的数据库结构,我想知道在完整性和可伸缩性方面(以及您能想到的任何其他方面)的优点和缺点是什么。
编辑
(对不起,这是我的意思)
我已经盯着这个15分钟了,我知道(红色箭头在哪里)会导致重复,因此你必须进行完整性检查。但我只是不明白我还想怎么做。
这些产品的数量不会超过10种。变量的数目不超过200(每个产品最多20个)。产品实例的数量不会超过100000,因此pVariable_data
的最大尺寸不会超过200万。
最佳答案
假设pvvariable更像是一个pvvariable类型,那么删除对product-fk的引用。这意味着您需要在该表中为每个产品记录添加一个新条目。也许可以试试这样的:
Product(id, active, allow_new)
pVariable_type(id, name)
pVariable_data(id, product_fk, pvariable_fk, non_typed_value, bool, int, etc)
我将使用非输入值作为文本值,并且(除非您保存流)将记录与输入值一起写入该字段。这将意味着将记录的值保留两次(更新时会更痛苦),但这将使查询和报告变得更容易(任何您只需要显示值的内容)。
注意:也可以将所有产品通用的任何内容提取出来并放到产品表中。例如,所有产品都很可能有名称、建议价格等。
关于database - 数据库规范化和用户定义的数据存储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11274019/