Sql server 网上订购系统的数据库设计

Sql server 网上订购系统的数据库设计,sql-server,database-design,db-schema,Sql Server,Database Design,Db Schema,在设计一个网上商店数据库时,我有一个部分有问题,请有人给我一个建议,它是否设计好?这个想法是,有些产品可以被分配到不同的类别。每个类别都有一组参数,便于客户搜索产品。例如,类别“CPU”将具有参数“CPU系列”,“CPU速度”和类别“HDD”将具有“形状系数”和“主轴速度”。这些参数名称存储在表tbCatParam中,每个产品的参数值存储在表tbProdCatParam中 我的模式在此处以jpeg格式提供: 这样行吗?非常感谢如果您在表TbProdCatParam和TbProdCat之间没有关系

在设计一个网上商店数据库时,我有一个部分有问题,请有人给我一个建议,它是否设计好?这个想法是,有些产品可以被分配到不同的类别。每个类别都有一组参数,便于客户搜索产品。例如,类别“CPU”将具有参数“CPU系列”,“CPU速度”和类别“HDD”将具有“形状系数”和“主轴速度”。这些参数名称存储在表tbCatParam中,每个产品的参数值存储在表tbProdCatParam中

我的模式在此处以jpeg格式提供:


这样行吗?非常感谢

如果您在表TbProdCatParam和TbProdCat之间没有关系的话会更好,因为它们是递归的。您正在关联TbProdCat和TbCategories,它们与tbCatParam关联。因此,如果tbCategories有参数,那么在tbCatParam和tbProdCat之间创建另一个NxN关系是没有意义的,因为它本身就是一个NxN表


这样,您甚至不需要表tbProdCatParam(除非您在产品和类别中都需要paramCategories,但这毫无意义)。

您的模式没有理由不“工作”以捕获您描述的数据。性能、可伸缩性等真正的问题是您可以回答的。正确地解耦代码,您就不会有太多的问题来适应任何需要的模式更改。谢谢。这个设计似乎可行,但正如你所写的,在继续之前,我想问一下性能问题、节省空间等。你知道,如果有很多记录,这个设计将不得不改变?为什么会这样?有什么更好的方法可以做到这一点?这似乎是一个琐碎的任务,这就是为什么我有点尴尬。当我尝试跟踪链接时,我被告知资源找不到。根据您的描述,产品参数和值似乎是动态的。这可以是非常灵活的。但您是否试图将此结构转换为屏幕和报告中的可用信息,这可能会让您感到沮丧。我的问题是,在tbCatParam中,我存储了一组与特定类别相关的参数名称(如“cpu速度”和“cpu型号”)在tbProdCatParam中,存储分配给特定类别的每个产品的参数值。除了在tbProdCatParam中,我还能在哪里存储这些值?如果我删除tbProdCatParam和tbCatParam之间的连接,那么我的参数值将与tbCatParam中的任何参数无关,这将是一个混乱。我确实看到了这个模式中的问题,但不知道如何正确地重新设计它。好吧,您应该询问所有关系的“多少”,以帮助您理解。因为我看到,一个产品会有很多类别,一个类别会有很多产品。因此,我们有NxN关系(与tbProdCat),这是可以的。问题似乎是关于参数和类别的概念:这些类别,是参数的类别吗?这些参数是关于产品规格的吗?你能举一个必须存储在BD中的信息的例子吗?嗨,是的,这个问题是关于一般概念的。是的,这些参数是产品的规格,我认为最好的解决方案是分别存储每个类别的产品规格,以便对同一类别内的产品进行分类/选择。这类似于易趣的展示概念。您可以在“英特尔CPU”或“其他桌面PC部件”类别中列出一个英特尔E7400 CPU,在浏览这些类别时,您将在屏幕右侧看到不同的选择标准,用于仅筛选出您想要查看的产品。更多。。所以你要举个例子。继续使用CPU,在tbCatParam中,我存储特定类别(如“制造商”和“Ghz”)中应填写的规格,而tbProdCatParam被认为是存储这些参数的实际值,即对于产品1:“AMD”和“2.8”,对于产品2“英特尔”和“3.2”,等等,然后在浏览“CPU”时在线商店中的类别客户将能够快速过滤掉所有AMD处理器或比“3Ghz”更快的处理器。应该有比我更高效的架构,但我在这个任务上遇到了麻烦。谢谢你的帮助!好吧,我一直认为tbProdCat和tbCatParam之间没有关系,使用tbProdCatParam。在我的概念中,你应该有一个产品,比如某个处理器。例如,本产品属于两类。这类产品应该是“英特尔产品”和“桌面处理器”。它可能有一个或多个参数,如(在“桌面处理器”中)“时钟”、“FSB”、“内核数”和“纳米”。因此,您可以将信息存储在表本身的一列中。想象三个字段:param_ID、param_name、param_value[1,“Cores”,4]。继续。。。