这两个表应该相关吗?

Should this two tables be related?

我有一个 account_table 和一个 news_table。管理员帐户可以创建新闻。

account_table 有 4 列,它们是:
1. account_id
2. 用户名
3.密码
4.user_type

news_table 有 5 列,它们是:
1. news_id
2. 标题
3.留言
4.created_by
5. created_on

如果我要在 news_table 上创建 account_id 外键,这意味着如果管理员被删除,他报告的新闻也会被删除,这是不应该发生的。当有一个名为 created_by 的列时,为什么 account_id 甚至与 news_table 相关,该列是通过在创建新闻时获取 session 用户并将其与titlemessagecreated_on 列。

我真的很困惑什么是这个小 table 的最佳设计。数据库中的每个 table 都应该相互连接吗?

使用外键由您决定,这不是强制性的,它为您提供了一些功能,例如:

  • 确保您没有插入带有无效 created_by
  • 的行
  • 当您删除帐户时,"if" 您可以根据需要自动删除新闻,这样您就不会保留与不存在的帐户相关的新闻
  • 而且从设计的角度来看,如果您将 sql 结构加载到像 Mysql Workbench 这样的工具中,它会以可视化方式为您指出表格之间的联系

至于你担心删除账号会导致新闻被删除,那是不正确的。

定义外键时,会问你删除记录时要做什么,也就是删除新闻,或者设置created_by为NULL。您应该选择设置为 NULL,这样新闻就不必被删除。如果您不知道如何定义外键,您可以使用像 phpmyadmin 这样的工具来完成。

如果你link这两个表,你仍然可以在保持新闻的同时删除帐户,如果外部是空的。但是关系的用例是什么?在您的用例中更有可能不需要这种关系。

如果我们总是创建关系,那么像帐户这样的普通对象可能与新闻以外的许多其他事物相关联。除非显然有必要,否则我会避免创建关系。