Koe*_*err 9 database tags database-design
我有3个计划:
1,在问题表中:
question
------------------------------------
id title content ... tags
------------------------------------
1 aaa bbb ... tag1,tag2,tag3 (use , to split more tags)
Run Code Online (Sandbox Code Playgroud)
2,在标签表和拆分中:
tags
------------------------------------
id tag
------------------------------------
1 tag1,tag2,tag3 (use , to split more tags)
Run Code Online (Sandbox Code Playgroud)
3,在标签表中:
tags
------------------------------------
id tag
------------------------------------
1 tag1
2 tag2
3 tag3
Run Code Online (Sandbox Code Playgroud)
我认为计划3更好,但您的意见是什么?
这个实现的任何其他好主意?
谢谢您的帮助 :)
Qua*_*noi 12
调用这些模式mysqlicious
,scuttle
并且toxi
(从最小到最正常化).
它们都有其优点和缺点.你可以在这里阅读相当不错的分析:
http://forge.mysql.com/wiki/TagSchema(WayBackMachine版)
请注意,这在mysqlicious
很大程度上取决于数据库是否有效执行FULLTEXT
搜索.
这意味着,MySQL
与InnoDB
和其他一些系统这是非常不切实际的.
标签和内容之间的关系是多对多的.这意味着一个标签可以与几个内容单元相关联,并且一个内容单元可以与多个标签相关联.
要在数据库中实现此功能,可以使用名为的辅助表ContentTags
.Content
to 的关系ContentTags
是一对多的; Tags
to 的关系ContentTags
是一对多的.
#Tags Table
Id Text
1 'Tag1'
2 'Tag2'
3 'Tag3'
#Content Table
Id Content
1 "some content"
2 "other content"
3 "more content"
#ContenTags Table
ContentId TagId
1 1
1 2
2 1
2 2
2 3
3 1
Run Code Online (Sandbox Code Playgroud)
如您所见,关系清楚地反映出来(内容1与标签1和2相关联;内容2与标签1,2和3相关联;内容3仅与标签1相关联)
归档时间: |
|
查看次数: |
3852 次 |
最近记录: |