我希望让我的Web应用程序的用户定义他们自己的产品属性,然后输入这些产品的数据。我发现这种技术称为n(th) normal form
。
以下是我正在考虑部署的数据库结构,并且想知道在完整性和可伸缩性(以及您能想到的任何其他 -ity的)方面的积极和消极是什么
修改 (对不起,这就是我的意思)
我在最后15分钟一直盯着这个,我知道(红色箭头在哪里)会导致重复,因此你必须进行完整性检查。但我只是不明白我还能做些什么。
产品的数量不会超过10.变量的数量不会超过200(每个产品最多20个)。产品实例数量不会超过100,000,因此pVariable_data
的最大大小不会超过200万
答案 0 :(得分:2)
此模型在数据库中称为数据库,并不好。虽然有时候不可能首先检查你是否真的需要它,而你的数据库确实是这个工作的正确数据库。
使用PostgreSQL,您可以使用:http://www.postgresql.org/docs/8.4/static/hstore.html,这是解决此类问题的标准化解决方案。
答案 1 :(得分:0)
假设pVariable更多是pVariable类型,请删除对product_fk的引用。这意味着您需要在该表中为每个产品记录添加新条目。也许尝试这样的事情:
Product(id, active, allow_new)
pVariable_type(id, name)
pVariable_data(id, product_fk, pvariable_fk, non_typed_value, bool, int, etc)
我会使用non_typed_value作为您的文本值,并且(除非您保留流)将记录与键入的值一起写入该字段。这将意味着保持记录的两次值(更多的是更新等的痛苦),但它将使查询更容易,同时报告(您只需要显示值的任何内容)。
注意:也可以提取所有产品共有的东西并将它们放入产品表中。例如,所有产品很可能都有名称,建议价格等。