MySQL 数据库设计帮助

标签 mysql database-design

请原谅这个基本问题,但我对数据库设计领域的陌生让我经常陷入困境。

我有一个网站,该网站在信息系列方面不断发展。一开始我有一种我正在描述的项目,一切都很好。该项目占据了一条记录,并有 34 列(现在回想起来很多)归因于它的描述性数据。随着我对这方面的了解越来越多,我看到许多开发人员将数据(在可行时)分解到不同的表中。

我现在有了与原始项目相关的附加表格,但在描述原始项目时并不总是需要这些表格,所以我将它们分开,以免不必要地查询它们。

无论如何,我有一个我一直在尝试组织的新项目,它是一个 USER。用户表具有典型的列,如用户名、电子邮件、上次登录、关联图像的路径等。这些用户一直在发表评论,我将这些评论保存在另一个表中,该表包含具有与用户和他们所关注的项目相关的 ID 的列正在评论。

现在...我正在向站点添加强制性用户配置文件页面。我应该创建另一个仅包含基本配置文件数据的表,还是将现有用户记录与原始用户表中的配置文件数据附加在一起?我认为如果我要添加“将我从站点中删除”功能,那么内务管理可能会很痛苦,因为我将不得不运行一些东西来杀死用户记录、用户配置文件记录以及与该用户 ID 相关联的任何其他数据表格。

基本上,我要问的是,我应该继续使用这种“细粒度”设计方法——将所有内容分解为基本部分,还是它可以帮助我合并到更大的表格中?我看到一些情况,如果用户删除了他们的帐户,我将留下一堆不相关的数据。例如,原始项目是餐馆...如果我制作一个表来记录对餐馆的“访问”,其中包含餐厅 ID 和用户 ID,如果用户或餐厅从网站中删除,则此“访问”表将有一堆无用的记录说“用户 45 访问了不存在的餐厅”或“不存在的用户访问了餐厅 21”

我希望我说得有道理……我只是想知道随着时间的推移最终得到这些“垃圾”数据是否正常。

非常感谢, 罗布

最佳答案

删除“相关”数据是应用程序生命周期中正常、健康的一部分。这就是发生的事情。你只需要去做,就像刷牙或整理床铺一样。不要让两个或三个 DELETE 查询影响您的表的结构。它们并没有那么贵,老实说,如果你认为这太痛苦了,那你就错了:)

如果您使用的是 InnoDB 表,您可以查看 foreign key constraints这将为您完成一些清理工作。

关于MySQL 数据库设计帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2364029/

相关文章:

mysql - 文档管理系统的数据库结构是什么?

mysql - 复杂的 MYSQL 从 5 个表中选择

java - 设计包含大量文件数据的数据库(由 hibernate 访问)的策略

php - 计算博客 ID 并在 mysql codeigniter 中按降序显示结果

php - Doctrine 查询生成器 : ManyToOne Relationship where more than one subEntity must match

mysql - 我们怎么能不允许 mysql 中的枚举不为空?

MySQL 5.7 与 5.5 和 .ibd 文件

database-design - EAV 替代用户定义的字段?

sql - 如何设计一个不可变的仅附加数据库?

SQL 从查询中的数据中选择该数据不在数据库中的数据?