Sql server 数据库设计是否正确查找表

Sql server 数据库设计是否正确查找表,sql-server,database,Sql Server,Database,我正在创建一个SQL Server数据库,该数据库将在web应用程序和移动应用程序的web api中使用 我一直使用查找表(例如:Category lookup Table)并引用ID(带有CategoryID的产品表) 我不知道我是不是在用老办法 Categories (Lookup Table) --------- CategoryID CategoryName SubCategories (Lookup Table) ---------- SubCategoryID SubCatego

我正在创建一个SQL Server数据库,该数据库将在web应用程序和移动应用程序的web api中使用

我一直使用查找表(例如:Category lookup Table)并引用ID(带有CategoryID的产品表)

我不知道我是不是在用老办法

Categories (Lookup Table)
---------
CategoryID
CategoryName


SubCategories (Lookup Table)
----------
SubCategoryID
SubCategoryName
CategoryID

Products
--------
SubCategoryID
ProductName

我的问题是,这仍然是正确的方式吗?还是跳过查找表直接调用子类别

Products
------
SubCategoryName
ProductName
非常感谢您的建议。

您可以通过两种方式来完成 1.

类别(查找表) 类别 类别名称

子类别(查找表) 子类别ID 子类别名称 类别

产品 产品名称 类别 子类别ID

用外键链接两个id,这是标准化的方式

  • 你问题的答案在这里。 若你们想要更浪费的方式,你们可以接近非规范化结构
  • 类别(查找表) 类别 类别名称

    子类别(查找表) 子类别ID 子类别名称 类别

    产品 产品名称 类别名称 子类别名称

    在Products表上创建插入/更新触发器,以确保Categoryname/subCategoryname有效。将保持数据一致性


    通过这种方法,您将获得更快的数据。

    第二种方法是“非规范化”,这对于报表数据库来说是正常的,但对于OLTP(实际用于输入数据的数据库)来说是不好的