我正在创建一个基于问题构思的网站(如StackOverflow)。
想象一下,类似的问题具有相同的标签,标签可以属于一个或多个问题。
我正在使用SQL Server
数据库。
在数据库中创建表来注册这些标签是正确的想法,还是有不同的方法/概念我不知道这样做?
答案 0 :(得分:1)
如果您没有处理大量(我认为超过数千万)的问题和标签,您可以选择这样的设计:
QuestionId INT NOT NULL CONSTRAINT PK_Question PRIMARY KEY, -- auto generated with IDENTITY or SEQUENCE
QText NVARCHAR(MAX) NOT NULL
TagId INT NOT NULL CONSTRAINT PK_Tag PRIMARY KEY, -- auto generated
TagName NVARCHAR(128)
QuestionXTagId INT NOT NULL CONSTRAINT PK_QuestionXTag PRIMARY KEY, -- auto generated
QuestionId INT NOT NULL CONSTRAINT FK_QuestionXTag_Question FOREIGN KEY REFERENCES Question,
TagId INT NOT NULL CONSTRAINT FK_QuestionXTag_Tag FOREIGN KEY REFERENCES Tag,
CONSTRAINT UQ_QuestionXTag_QT UNIQUE (QuestionId, TagId)
n:n
与Questions
之间存在Tags
关联。
所以,简短的回答是是的,它可以在SQL Server中完成。
我的建议是尝试将数据存储在关系数据库中,除非有严重的理由不(非常大的数据,非同类数据等),因为这种方式提供了有意义的结构和低级约束。 / p>