这是一个简单的社交媒体平台的持久性设计。目前,有这些表:
- 用户:数据库的主表,其中包含在我们的应用程序中注册的用户的信息。将存储在此表中的数据将是名称
- 名称:用户
- 字段:ID、姓名、用户名、密码、电子邮件、简历、关注者、关注者、图片。
- 主键:id
- 帖子:包含所有用户的所有帖子的数据库表。每个帖子将包含帖子的标题、描述和主要内容。
- 名称:帖子
- 字段:id、title、picture、description、content、created_at、likes、user_id。
- 主键:id
- 外键:user_id 到表用户
- 用户喜欢的帖子:定义多个喜欢的帖子与喜欢它们的用户之间的多对多关系的表。
- 名称:posts_liked_users
- 字段:post_id、user_id
- 外键:post_id 到表帖子
- 外键:user_id 到表用户
- 跟随。表能够创建用户之间的“关注”关系。
- 名称:跟随
- 字段:following_user_id、followed_user_id
- 外键:following_user_id 到表用户
- 外键:followed_user_id 到表用户
以下是创建表的命令
CREATE TABLE users(
id SERIAL PRIMARY KEY,
name VARCHAR (50) NOT NULL,
username VARCHAR (50) UNIQUE NOT NULL,
password VARCHAR (255) NOT NULL,
email VARCHAR (255) NOT NULL,
bio VARCHAR (255) NOT NULL,
followers INTEGER NOT NULL,
following INTEGER NOT NULL,
picture VARCHAR (255) NOT NULL
)
CREATE TABLE posts(
id SERIAL PRIMARY KEY,
title VARCHAR (255) NOT NULL,
picture VARCHAR (255) NOT NULL,
description VARCHAR (255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
likes INTEGER NOT NULL,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE
)
CREATE TABLE posts_liked_users(
post_id INTEGER NOT NULL REFERENCES posts(id) ON DELETE CASCADE,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE
)
CREATE TABLE follows(
following_user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
followed_user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE
)
这是图表:
图表和整体设计是否正确,或者是否缺少某些东西?