设计一个表格,其中一个单元格有多个引用的最佳方法?

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)

现在,每个"帖子"都有几个关键字,有时会删除关键字,因为它们没有意义或是重复的.

我的问题是:

  • 可以关键字表列的职位是一个外键?(每行都有多个关键字)

  • 如果我不能,那么确保数据完整性的最佳方法是什么(特别是在删除关键字时)?

提前致谢

编辑:你能指出我应该阅读的关于数据库设计的书籍或文件吗?我似乎在关注数据库设计的关键知识.

hom*_*ome 6

您必须翻转依赖项:表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.

编辑:一如既往,文档让我指向维基百科.您还应该看看规范化(在我看来,在数据库设计方面,这是最重要的概念).