【问题标题】:derby database with 2 linked tables具有 2 个链接表的 derby 数据库
【发布时间】:2021-02-18 04:35:07
【问题描述】:

我正在开发一个照片收集应用程序,用 java 编码并使用 derby 进行存储。这个想法是会有一个集合的文件系统视图和一个基于类别的视图。每张照片将属于一个或多个(可能少于 5 个)类别,每个类别可能包含数百张照片。

所以我想出了一些关于我的桌子的想法:-

照片

编号 INT(5000) 文件路径 TINYTEXT(100) 类别外键

类别

id TINYINT(50)
名称 TINYTEXT(30)
照片外键

但是如何让每个照片 id 几个类别和每个类别 id 很多照片呢?这样做的推荐方法是什么?

【问题讨论】:

    标签: design-patterns


    【解决方案1】:

    您正在寻找所谓的多对多关系。这不是最常见的关系类型,但它很常见,有很多最佳实践示例。您要做的是创建第三个数据库表,并将其命名为 photocategoryrelations。在该表中,您将有代表两个表之间关系的条目(行)。这种表通常称为联结表、桥接表或链接表。术语是可以互换的。桥接表的列应包含两个参与表(照片和类别)的唯一 ID。然后这些可以用作外键。

    Here's a quick article describing a couple different database relationship types including the many-to-many relationship that you will need.

    编辑:在很多情况下,关系表本身实际上可以代表更具体的东西,您可以这样命名。例如,该场景的许多示例都使用班级和学生作为他们的参与表,并且桥接表称为注册,因为它代表所有班级注册。一个班级可以有多个学生,学生可以在多个班级。

    【讨论】:

    • 感谢 TheFunk - 这非常有帮助。如果你不知道它叫什么,就很难找到关于它的信息。我已经设法为所有 crud 操作制定了 SQL,所以我现在都走了。
    • 没问题。祝你好运,第一个问题很好。建立桥接表后,您只需要使用与页面主题相关的 where 子句进行单独查询。因此,如果您在类别视图中,您将select from pcrs where categoryID = X 并且视图之间的位置会发生变化。所以在照片视图中你会做where photoID = Y
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多