我正在开发一个显示引号的应用,就像Android中的BrilliantQuotes一样。我正在研究表格设计,我无法想出一个关于表格User / Quotes和Tags应如何相关/设计/规范化的解决方案。 关系类似于:
第一部分相当简单,我将在Tags表上有一个外键列来标识User。对于第二部分,我如何表示这种关系?我不能只将Quotes FK添加到Tags表中,反之亦然,因为它不会被标准化,不是吗?此外,由于我将允许用户创建自己的标签,我可以有许多行具有相同的TagName,例如“有趣”,我认为这是必要的,因为标签是用户特定的或者是否有更好的方法呢?
答案 0 :(得分:0)
您正在寻找的是交叉表
定义非常稀疏,类似
CREATE TABLE dbo.Users ( id int identity, username varchar(99))
CREATE TABLE dbo.Tags ( TagID INT Identity, taglabel varchar(99), ownerid INT)
CREATE TABLE dbo.Quotes ( QuoteID INT Identity, quoteText varchar(max))
然后
CREATE TABLE QuoteTagMap (QTID INT identity, QuoteID INT, TagID int)
您可以向QuoteTagMap添加行以存储标记和引号之间的关系。如果您希望允许不同的用户为同一引号使用不同的标签...那么地图也将具有OwnerID