sql - 构建数据库表的最佳方式是什么?

标签 sql database database-design

我在设计数据库架构时遇到了问题。
我对是分开还是分组表有疑问。

我的应用程序和数据库中有一个博客和一个新闻部分。两者都会收到评论和点赞。

TABLE.BLOG | TABLE.COMMENTS.BLOG | TABLE.LIKE.BLOG
TABLE.NEWS | TABLE.COMMENTS.NEWS | TABLE.LIKE.NEWS

我分享一切?

TABLE.BLOG | TABLE.NEWS
TABLE.COMMENTS | TABLE.LIKE

还是应该将评论分组?

如果我应该有某种引用类型的博客 |新闻?

我对构建数据库的最佳方式感到很困惑。
如果有人可以帮助我,我将不胜感激。

最佳答案

虽然确切的布局主要取决于您访问和使用数据的方式,但将评论和点赞放在同一个表格中可能会更好。您的第二种方法很接近,尽管我可能会介绍第三个表,称为 CONTENT,其中包含可以点赞或评论的任何内容的 ID。

NEWSBLOG 表中的每一行在CONTENT 表中都有对应的行。 CONTENT 行可以对应于 NEWSBLOG,但不能同时对应两者。 CONTENT 表具有博客和新闻共有的属性(日期、标题、作者等)。

LIKECOMMENT 表将连接到 CONTENT 表,因此您不需要为 NEWSBLOG

这是一个例子:

Illustration

关于sql - 构建数据库表的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714364/

相关文章:

sql - 在 SQL Server 中使用外键是否会对性能造成严重影响?

mysql - SQL计算另一个表中的行并加入

database - 在 Excel 中使用 power query 连接到 Postgresql 数据库

sql - MySQL数据库设计问题

c# - SQL Azure 的限制不是搬起石头砸自己的脚吗?

mysql - 在整个表中更改 MySQL ENUM 值的值

sql - 获取特定日期之前所有实例的计数

sql - 如何按日期排序但按特定列值 SQL 分组

sql - Postgres - INSERT INTO 和 using case when

sql - 是否可以在 sql 中使用字母数字序列生成器