我希望能够通过关键字索引的数据库中有几个条目(将增长到数千个)。
所以说我有一张桌子,比如:
编号 | 用户名 | 电子邮件 | 描述
我想为该用户附加多个关键字,例如:
高 | 金发女郎 | 男 | 瘦骨嶙峋的
我将如何为此构建表格?很像新问题底部的 stackoverflow 中使用的关键字?
谢谢
你需要三张桌子
用户:
id | username | email | description
标签:(将包含 Tall、Blonde、Male、Skinny 等......在名称字段中)
id | name
用户标签:
user_id | tag_id
要使用户拥有标签,您可以在users_tags
表中添加一行,其中包含相关项目的 id。
user_id 和 tag_id 都应该是外键,指的是相应的表,并且结合起来,它们应该形成一个唯一键(可能是主键)。
如果我理解正确,有 3 个表:
- users (user_id, username)
- keywords (keyword_id, keyword)
- user_keywords (user_id, keyword_id)
并在它们之间建立关系(在与示例相同的列名上)。
这是一个多对多的关系。
您有一个关键字表和一个对象表(可以与关键字相关联)。
然后你有第三个表,它有两列形成一个复合键,每一个都是其他两个表上的外键。
例如
object_keyword_relationship
===========================
object_id | keyword_id
1 | 1
1 | 2