要求:
1. 设计一个数据库模式,包括表、列、主键、外键和索引。
2. 为每个表提供一个简短的描述,说明它们的目的和包含的数据。
3. 提供一个 SQL 脚本,用于创建数据库和表。
4. 提供一个 SQL 脚本,用于插入一些示例数据。
5. 提供一个 SQL 查询,用于查找所有发布了至少一篇帖子的用户。
6. 提供一个 SQL 查询,用于查找所有关注了用户 A 的用户,并按照关注时间排序。
7. 提供一个 SQL 查询,用于查找用户 A 发布的所有帖子,并按照发布时间排序。
8. 提供一个 SQL 查询,用于查找用户 A 和用户 B 之间的所有互动,包括评论、点赞和回复,并按照时间排序。
数据库模式:
1. 用户表(User)
- 用户 ID(UserID):主键,自增长整数,唯一标识用户。
- 用户名(Username):字符串,唯一标识用户。
- 密码(Password):字符串,存储用户密码的哈希值。
- 电子邮件(Email):字符串,存储用户的电子邮件地址。
- 注册时间(RegistrationTime):日期时间,存储用户注册的时间。
2. 帖子表(Post)
- 帖子 ID(PostID):主键,自增长整数,唯一标识帖子。
- 用户 ID(UserID):外键,整数,指向发布该帖子的用户。
- 标题(Title):字符串,存储帖子的标题。
- 内容(Content):字符串,存储帖子的内容。
- 发布时间(PublishTime):日期时间,存储帖子发布的时间。
3. 关注表(Follow)
- 关注 ID(FollowID):主键,自增长整数,唯一标识关注关系。
- 用户 ID(UserID):外键,整数,指向关注该用户的用户。
- 关

注用户 ID(FollowedUserID):外键,整数,指向被关注的用户。
- 关注时间(FollowTime):日期时间,存储关注的时间。
4. 评论表(Comment)
- 评论 ID(CommentID):主键,自增长整数,唯一标识评论。
- 用户 ID(UserID):外键,整数,指向发表该评论的用户。
- 帖子 ID(PostID):外键,整数,指向被评论的帖子。
- 内容(Content):字符串,存储评论的内容。
- 评论时间(CommentTime):日期时间,存储评论的时间。
5. 点赞表(Like)
- 点赞 ID(LikeID):主键,自增长整数,唯一标识点赞。
- 用户 ID(UserID):外键,整数,指向点赞的用户。
- 帖子 ID(PostID):外键,整数,指向被点赞的帖子。
- 点赞时间(LikeTime):日期时间,存储点赞的时间。
SQL 脚本:
创建数据库:
CREATE DATABASE social_media;
使用数据库:
USE social_media;
创建用户表:
CREATE TABLE User (
UserID INT PRIMARY KEY AUTO_INCREMENT,
Username VARCHAR(50) UNIQUE,
Password VARCHAR(255),
Email VARCHAR(255),
RegistrationTime DATETIME
);
创建帖子表:
CREATE TABLE Post (
PostID INT PRIMARY KEY AUTO_INCREMENT,
UserID INT,
Title VARCHAR(255),
Content TEXT,
PublishTime DATETIME,
FOREIGN KEY (UserID) REFERENCES User(UserID)
);
创建关注表:
CREATE TABLE Follow (
FollowID INT PRIMARY KEY AUTO_INCREMENT,
UserID INT,
FollowedUserID INT,
FollowTime DATETIME,
FOREIGN KEY (UserID) REFERENCES User(UserID),
FOREIGN KEY (FollowedUserID) REFERENCES User(UserID)
);
创建评论表:
CREATE TABLE Comment (
CommentID INT PRIMARY KEY AUTO_INCREMENT,
UserID INT,
PostID INT,
Content TEXT,
CommentTime DATETIME,
FOREIGN
