需求:
1.一个用户可以对多个动态评论,一个动态可以被多个用户评论
2.一个用户可以点赞多个评论,一个评论可以被多个用户点赞
p1是让改的,p2是我实现的
说是评论不能作为实体,但是我有可以对评论点赞这个需求,也不能给评论这个联系加联系啊


需求:
1.一个用户可以对多个动态评论,一个动态可以被多个用户评论
2.一个用户可以点赞多个评论,一个评论可以被多个用户点赞
p1是让改的,p2是我实现的
说是评论不能作为实体,但是我有可以对评论点赞这个需求,也不能给评论这个联系加联系啊


上午好☀️☀️☀️️
本答案参考通义千问
根据你的需求,我们可以总结出以下几点:
你有以下两个核心关系:
但你在实现时遇到了问题,特别是关于“评论不能作为实体”的问题。这说明你需要重新设计 ER 图(实体-联系图),确保所有必要的实体和联系都被正确表示。
在某些情况下,“评论”可能被看作是“动态”的子对象,而不是独立的实体。例如,在一些系统中,评论是依附于动态的,不具有独立的生命周期或业务逻辑。但如果你需要对评论进行点赞,那么它就具备了独立的业务意义,因此必须作为实体来处理。
注意: 由于“点赞”本身是一个行为,它应该作为一个联系表(Link Table)来处理,即Like 表,包含用户ID 和 评论ID。
定义实体
建立多对多关系
User_Comment 来表示这种关系Like 来表示这种关系确保“评论”作为独立实体存在
避免将“评论”作为联系(Relationship)
使用外键关联
Comment 表中添加外键 post_id,指向 Post 的主键Like 表中添加外键 user_id 和 comment_id,分别指向 User 和 Comment-- 用户表
CREATE TABLE User (
user_id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE
);
-- 动态表
CREATE TABLE Post (
post_id INT PRIMARY KEY AUTO_INCREMENT,
content TEXT,
create_time DATETIME
);
-- 评论表
CREATE TABLE Comment (
comment_id INT PRIMARY KEY AUTO_INCREMENT,
content TEXT,
create_time DATETIME,
post_id INT,
FOREIGN KEY (post_id) REFERENCES Post(post_id)
);
-- 点赞表(联系表)
CREATE TABLE Like (
like_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
comment_id INT,
create_time DATETIME,
FOREIGN KEY (user_id) REFERENCES User(user_id),
FOREIGN KEY (comment_id) REFERENCES Comment(comment_id)
);
如有更多具体问题,欢迎继续提问!