数据库设计问题 - 类别/子类别

Dis*_*ile 10 sql database-design sql-server-2008

我有一个问题,我将如何在我的数据库中设计几个表.我有一个表来跟踪类别,一个用于子类别:

TABLE Category
    CategoryID INT
    Description NVARCHAR(500)

TABLE Subcategory
    SubcategoryID INT
    CategoryID INT
    Description NVARCHAR(500)
Run Code Online (Sandbox Code Playgroud)

类别可能类似于电子产品,其子类别可能是DVD播放器,电视等.

我有另一个表将引用Category/Subcategory.是否需要引用SubcategoryID?

TABLE Product
    SubcategoryID INT  -- should this be subcategory?
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,还是这是正确的方法?我不是一个数据库设计人员.如果重要的话,我正在使用SQL Server 2008 R2.

Eri*_*off 10

你的设计是合适的.我是一个数据库人员变成开发人员,所以我可以理解在一个表中有Category和SubCategory的倾向,但是KISS永远不会出错.

除非要求极端性能或无限等级(我猜不是),否则你很高兴.

如果能够将多个子类别与产品相关联是一项要求,那么对于@ Mikael来说,您需要这样的设置,通过连接/交叉表Product_SubCategory创建多对多关系:

CREATE TABLE Product (ProductID int, Description nvarchar(100))
CREATE TABLE Product_SubCategory (ProductID int, SubCategoryID int)
CREATE TABLE SubCategory (SubCategoryID int, CategoryID int, Description nvarchar(100))
CREATE TABLE Category (CategoryID int, Description nvarchar(100))
Run Code Online (Sandbox Code Playgroud)

希望有帮助......

Eric Tarasoff