我正在使用.Net核心,我想创建一个库存数据库,以便用户可以添加具有未知功能的新型产品,并且还可以向现有产品添加功能。 我真的需要数据库设计方面的帮助。
答案 0 :(得分:0)
数据库具有方案。这是一个刚性结构,它定义了可以放入其中的数据的特征和约束。在不从根本上影响数据库完整性的情况下,您不能执行诸如动态添加列之类的操作。
在真正的关系数据库(SQL Server,MySQL,Postgresql等)中。绝对不允许此类更改。但是,一些不那么严格的NoSQL解决方案要么没有模式,要么具有可延展的模式,它们使您可以开始跟踪一些新的数据点而无需先更改数据库的结构。即使这样,数据完整性仍然是一个严重的问题,如果您随意地进行此类操作,最终可能会使整个数据集变得无聊。
总之,不管怎么说,数据库实际上并没有“动态”的地方。即使在NoSQL解决方案中,您也应该事先计划好数据结构,否则将导致数据不一致,从而完全抵消其有用性。
对于上述需求,最好的选择是实际上有一个Features
表。在最简单的形式中,它可能只有一个字符串列(用于输入名称和外键),或者只是一个ID引用列(取决于它是否是相关的)回到与其关联的产品。您还需要一个主键,它可以是名称和产品ID的组合(本质上是使组合成为唯一的),或者您可能想拥有一个实际的标识类型列。
通常,数据的关键是概括。没有什么是完全独特的,通常只是其他事物的变体。将数据分解为最不常见的分母,以确定您的实际架构。然后,在存在异常值的地方,可以采用上述较不严格的策略。