假设您拥有与描述的here相同的数据模型。
Table: Item
Columns: ItemID, Title, Content
Table: Tag
Columns: TagID, Title
Table: ItemTag
Columns: ItemID, TagID
如果您希望具有类似于stackoverflow
上的标记同义词,那么您将把这些信息放在数据模型中的哪里?您是只添加一个带有逗号分隔的同义词列表的属性,还是会稍微转换一个数据模型?
插入新项的SQL
语句会是什么样的呢?新项目是与所有同义词连接,还是只与一个主标记连接,在代码中,我们必须检测到这是同义词吗?
您建议使用哪种方法来平滑插入、删除和通过标记操作搜索?
发布于 2012-02-18 12:28:01
更改Tag
表并添加一个TagSynonym
表:
Table: Tag
Columns: TagID
Table: TagSynonym
Columns: TagID, Title
TagSynonym.TagID
将是FK到Tag(TagID)
,Title
将是PK。
如果您还想使用"MainSynonym“标记,则可以使用以下内容:
Table: Tag
Columns: TagID
Table: TagSynonym
Columns: TagID, Title
Table: TagMainSynonym
Columns: TagID, Title
TagMainSynonym(TagID)
是PK,TagMainSynonym(TagID, Title)
是FK到TagSynonym(TagID, Title)
。
它看起来可能过期了,但是像合并两个标记这样的简单操作只需要Tag.TagID
上的一个简单的Tag.TagID
(一行),而级联效应将完成其余的操作(在3个表中)。
https://stackoverflow.com/questions/9341111
复制相似问题