Tiv*_*vie 0 mysql sqlite database-design data-modeling
我的问题是如何设计数据库.
我有一个表,称为帖子,有列:
ID, subject, keywords, (and a few other columns)
Run Code Online (Sandbox Code Playgroud)
和另一个名为关键字的表:
kw_id, keyword.
Run Code Online (Sandbox Code Playgroud)
现在,每个"帖子"都有几个关键字,有时会删除关键字,因为它们没有意义或是重复的.
我的问题是:
可以关键字表列的职位是一个外键?(每行都有多个关键字)
如果我不能,那么确保数据完整性的最佳方法是什么(特别是在删除关键字时)?
提前致谢
编辑:你能指出我应该阅读的关于数据库设计的书籍或文件吗?我似乎在关注数据库设计的关键知识.
您必须翻转依赖项:表KEYWORD应该引用回发布.您可能希望在两者之间找到给定关键字的所有帖子(伪代码):
POST
POST_ID
...
KEYWORD
KEYWORD_ID
NAME /* the keyword */
POSTKEYWORDREL /* relationship */
POST_ID /* foreign key to POST */
KEYWORD_ID /* foreign key to KEYWORD */
Run Code Online (Sandbox Code Playgroud)
现在,只需删除关系,即可轻松删除给定帖子中的关键字POSTKEYWORDREL
.
编辑:一如既往,文档让我指向维基百科.您还应该看看规范化(在我看来,在数据库设计方面,这是最重要的概念).
归档时间: |
|
查看次数: |
69 次 |
最近记录: |