mysql - 用于共享来自另一个用户的帖子的数据库设计

标签 mysql database database-design relational-database relationship

我正在开发一个社交网络

我的问题是如何在数据库中设计分享帖子

我现在拥有的

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/

相关文章:

mysql - SQL查询最大最小值

用于注册和登录的 php webservice

mysql - 在 SQL 查询中使用 GROUP BY 时获取总数的百分比

ruby-on-rails - 如何使用 puma 正确处理 rails 中的并发?

sql - 如何将不同工作表的Excel数据导出到SQL-SERVER数据库?

mysql - 数据库表创建——分割年龄组

php - 显示和选择 mysql 的快捷方式,无需对每个变量使用 mysql_fetch_array

c++ - 不适合内存的随机访问容器?

database-design - 在 NoSQL 解决方案中支持多种语言吗?

database - 所有本地修订数据库在哪里?