gpt4 book ai didi

database-design - 使用连接表与类型字段的权衡

转载 作者:行者123 更新时间:2023-12-04 07:20:38 25 4
gpt4 key购买 nike

我正在深入了解设计一个与多个其他表相关的表的数据库。一个具体的例子是一个对不同类型事物发表评论的网站——人们可以对文章发表评论,或者他们可以对照片发表评论,或者他们可以对人发表评论。

似乎有两种方法可以表示这一点:

1) 为其他表连接表
表格:

  • 文章
  • 文章_评论
  • 评论
  • 评论人
  • 评论照片
  • 照片

  • 或者
    2)
  • 文章
  • 评论
  • 照片

  • 并且评论表将有一个“类型”字段和一个 item_id 以链接回另一个表。

    第一种方法似乎更“合适”,似乎我们使用外键限制应该没有问题,而第二种方法有更少的表并且在某些方面可能“更简单”,但我们可以使用 FK 限制,因为 item_id 可以与多个FK(AFAIK - 使用 mysql innodb)。最好不要在我们的应用程序中可能有 2-3 个具有多个关系(评论、照片等)的表和 5-10 个需要关系的表。

    我正在寻找关于哪种方法更好的建议。

    最佳答案

    我个人不喜欢选项#2。它代表了一个有争议的话题,一个大的查找表概念。

    一方面,我同意 Yzmir - 难以管理。而且,它代表了OO对关系数据库设计的强加,这有点像混合了苹果和橘子。虽然具有 OO 编程背景(包括我......)的人很容易想象“评论对象”及其属性,但请考虑一下 DB 设计。示例 1 中的表名清楚地描述了它们所代表的实体以及它们之间的关系(多对多引用表)中实际发生的情况。它们也代表了对“正常”形式的更好的遵守。

    RBDMS 是关于表示实体及其之间的关系,不一定总是与 OO 的原则一致。此外,规范化规则更倾向于选项#1。

    选项#1 对我来说代表了更强大的 RDB 设计,并且更容易管理,更容易扩展,并且可能执行得更快。

    关于database-design - 使用连接表与类型字段的权衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4771669/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com