我正在编写一个应用程序,用于记录用户阅读的博客
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
请提供一些有价值的建议
答案 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>