我正在开发一个社交网络
我的问题是如何在数据库中设计分享帖子
我现在拥有的
user table
和
post 表
有一个外键到 user id
和
like table
包含两个外键 user id
vs post id
我正在寻找的是有任何小的解决方案来分享来自用户的帖子,并将这个解决方案与 like 表连接,因为如果有人分享帖子,他会在上面获得新的 like
我不知道创建一个新的 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)
);
关于mysql - 用于共享来自另一个用户的帖子的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39598413/