Sql server 如何根据SQL server类别对产品进行正确建模

Sql server 如何根据SQL server类别对产品进行正确建模,sql-server,database,data-modeling,Sql Server,Database,Data Modeling,我知道这看起来很傻,但我对这种结构真的很难理解 我的数据模型是针对一家计算机商店的(严格来说只是学术性的),所以我有一个生成产品表,用于诸如标题(i7 4790)描述、单价和规格。然后链接到供应商和类别 类别将有所有的父类别,如主板,CPU,电源等 但是现在我不确定我是否应该为每一个设置一个表,参考分类表,所以主板应该有芯片组和插座,CPU也可以有芯片组,也许时钟速度,电源可以有容量 但是我可以有一个子类别表,它引用它自己,但我不完全确定如何构造它 请您帮助我做出正确的设计决策,以及为什么这是最

我知道这看起来很傻,但我对这种结构真的很难理解

我的数据模型是针对一家计算机商店的(严格来说只是学术性的),所以我有一个生成产品表,用于诸如标题(i7 4790)描述、单价和规格。然后链接到供应商和类别

类别将有所有的父类别,如主板,CPU,电源等

但是现在我不确定我是否应该为每一个设置一个表,参考分类表,所以主板应该有芯片组和插座,CPU也可以有芯片组,也许时钟速度,电源可以有容量

但是我可以有一个子类别表,它引用它自己,但我不完全确定如何构造它

请您帮助我做出正确的设计决策,以及为什么这是最好的决策,以及每个解决方案的优缺点

编辑

这是一个快速的模型,到目前为止,我已经抹去了我的想法。产品表将包含所有产品的一般详细信息,如产品名称、单价、说明和规格,然后它们将链接到分类表,分类表将链接到不同的表,如主板、CPU、内存等

我这样想的原因是因为每个类别、主板、CPU机箱等都是一个独立的实体,一个独立的对象,所以它应该有一个特定属性的表


我走对了吗?

我只是沿着这些路线走。您可以创建一个包含所有产品共有的所有数据(SKU、装运重量、制造商、制造商订单号、零售价格等)的产品表,然后使用“类别”值将特定于类别的数据放在单独的表中,使用“类别”值加强整个系统的完整性。

,很抱歉,我这么晚才回复你,请准备好我上面的编辑,我感谢你的输入,我似乎在正确的轨道上,请留言。但有一件事马上就跳出来了。假设产品表中列出了产品ID=1000。根据分类,它是一个主板。但是,如何防止将值1000输入CPU和/或内存表?将产品(ID、CategoryID)放在唯一索引中,并将其用作其他表中的FK引用,可以防止出现这种情况。主板条目必须有“主板”的CategoryID,CPU条目必须有“CPU”的CategoryID,以此类推。这样,唯一一个产品ID为1000的表是主板表。我所做的是将类别ID放在产品表中,因此对于产品ID 1000,它的类别ID为1,在类别表中,ID 1将等于主板,这还不够吗?不,这只是指定产品1000是主板。除此之外,没有什么可以阻止进入(1000,2)的CPU表的条目——比如说2表示CPU。内存表也有同样的问题。不可能定义ID为1000的CPU或内存。这个约束可以由触发器强制执行,但是当您可以让系统在一个低得多的级别上执行时,为什么还要承担所有的麻烦和开销呢?好的经验法则:在尽可能低的层次上执行完整性,这是有意义的:域定义、检查约束、引用约束、触发器、计划任务、应用程序代码。