abd*_*rim 3 mysql database database-design relational-database relationship
我正在开发一个社交网络
我的问题是如何在数据库中设计共享帖子
我现在拥有什么
user table
Run Code Online (Sandbox Code Playgroud)
和
post table
有一个外键user id
和
like table
包含两个外键user id
vspost id
我正在寻找的是有任何小型解决方案来分享用户的帖子,并将该解决方案与类似的表连接起来,因为如果有人分享帖子,他会得到新的类似内容
我不知道创建一个新的share table
是否好,但是像现在这样呢?
有什么想法吗?
所以,总而言之,你有:
该域模型的 SQL 实现如下:
CREATE TABLE users (
id int NOT NULL autoincrement
);
CREATE TABLE posts (
id int NOT NULL autoincrement,
user_id int NOT NULL,
CONSTRAINT fk_users FOREIGN KEY (user_id) REFERENCES users (id)
);
CREATE TABLE shares (
id int NOT NULL autoincrement,
user_id int NOT NULL,
post_id int NOT NULL,
CONSTRAINT fk_users FOREIGN KEY (user_id) REFERENCES users (id),
CONSTRAINT fk_posts FOREIGN KEY (post_id) REFERENCES posts (id)
);
CREATE TABLE likes (
id int NOT NULL autoincrement,
user_id int NOT NULL,
post_id int, /* NULLABLE */
share_id int, /* NULLABLE */
CONSTRAINT fk_users FOREIGN KEY (user_id) REFERENCES users (id),
CONSTRAINT fk_posts FOREIGN KEY (post_id) REFERENCES posts (id),
CONSTRAINT fk_shares FOREIGN KEY (share_id) REFERENCES shares (id)
);
Run Code Online (Sandbox Code Playgroud)