有关数据库设计的建议

时间:2014-04-03 10:29:23

标签: database-design database-schema

我正在编写一个应用程序,用于记录用户阅读的博客

Currenlty我在数据库中有两个表,一个是针对不同的类别,博客可以属于技术,音乐,电影等。

Schema of the table is - CATEGORIES (id , name)

id -- > primary key

name -- > string (name of the category)

第二个表存储博客

Schema - BLOGS (id, blog_name, blog_url,category)

id -- > key

category -- > foreign key referencing CATEGORY table

现在我需要设计用于存储用户信息的表格,如姓名,电子邮件,密码以及他/她阅读的博客列表

问题是用户可以喜欢任意数量的博客,任何数量的用户都可以喜欢单个博客。

我需要设计用户的表格,以便轻松地促进以下查询。

-> given a blog the list of all users that like the blog

-> given a user the list of all blog that user likes

请提供一些有价值的建议

1 个答案:

答案 0 :(得分:0)

在这种情况下我会做的是:

不要将用户喜欢的博客放在主用户表中。只需保留用户表中的用户信息(如电子邮件,地址,姓名等)。由于您的用户和博客之间可能存在多对多关系,因此请使用单独的表来保存用户ID和博客ID:

CREATE TABLE User_Blog_Link
(
    userId int,
    blogId int
)

这将允许您执行上面提到的查询。

SELECT userId
FROM User_Blog_Link
WHERE blogId = <x>

SELECT blogId
FROM User_Blog_Link
WHERE userId = <y>