设计一个帖子数据库

时间:2018-01-28 20:22:22

标签: database database-design relational-database

我需要为应用创建一个数据库,以显示不同作者的帖子。

一些必要的专栏是:

id (INT)
url (TEXT)
content (TEXT)
date (TEXT)
author_username (TEXT)
author_fullname (TEXT)
author_avatar_url (TEXT)
author_url (TEXT)

现在,作者的每篇帖子都可以来自不同的Feed,例如timelinefavorites等,每个Feed都有不同的唯一ID ,而其他列仍然是相同。

例如:

id   | url     | content | date |... | username | fullname | avatar | url
-----+---------+---------+------+----+----------+ ---------+--------+--------
 123 | foo.com | xyz     | 2018 |... |  foo     | foobar   | avatarurl.com | foobar.com  <---- Feed 1 
1592 | foo.com | xyz     | 2018 |... |  foo     | foobar   | avatarurl.com | foobar.com  <---- Feed 2
 148 | foo.com | xyz     | 2018 |... |  foo     | foobar   | avatarurl.com | foobar.com  <---- Feed 3

因此,为了消除冗余,我决定使用以下三个表 -

作者表:

username | fullname | avatar_url | url
  • username是PK

帖子表格:

internal_id | url | content | date | ... | author_username
  • internal_id是自动递增的,是PK
  • author_username是引用Author.username
  • 的FK

供稿表格:

post_id | feed | post_internal_id
  • post_id是PK

  • post_internal_id是FK引用Posts.internal_id

我对数据库设计没有多少经验,这就是为什么我想知道这个设计是否正确的原因。可以用任何方式改进吗?要在数据库上执行的一些查询是从特定源获取所有帖子,更新特定post_id的posts表中的列,使用post_id获取作者数据。

1 个答案:

答案 0 :(得分:0)

我希望与帖子无关的供稿表。为所有用户提供相同的Feed:

feeds(feed_id, feed_name)

然后你还有:

users(username, fullname, avatar_url, url)
posts(post_id, content, date, username)

然后将帖子链接到用户Feed:

post_feeds(post_id, feed_id)

好吧,你可以使用单个ID或复合键,但它应该是这样的: - )