【问题标题】:understanding logic behind databases理解数据库背后的逻辑
【发布时间】:2014-07-08 14:42:38
【问题描述】:

假设我有一个数据库,其中有一个表 subject,它具有 idSubjectSubject 因为它的列都是 varchar 长度20 个,idSubject 是自动递增的。所有 id 都是自动递增的。

然后我有另一个名为 Unit 的表。现在 UnitidUnit(int)、evaluation(varchar)、learnUnit(varchar)、percent (整数)和 dueDate(日期)。

主题表以一对多的方式连接到单元表。

我不断向一个主题添加更多单元,但是当我想更改为另一个主题时,我如何才能可视化仅为一个主题收集的所有信息?

这背后的逻辑是我不明白的。我将如何执行 SQL 查询来查找一个主题的所有信息?

【问题讨论】:

    标签: sql database database-design


    【解决方案1】:

    您可以在单元表中创建一个包含idsubject 的列。因此,该列的许多行将具有相同的值,对应于它们对应的idsubject

    你将如何做到这一点?很简单。

    在插入过程中,还要在单元表中插入idsubject。这将使您了解必须处理的主题。现在,在sql中有一个名为group by的选项,可以帮助你过滤相同主题的单元。

    SELECT idSubjects, commands(column_name(s))
    FROM Unit
    GROUP BY idSubject;
    

    SELECT column_name(s)
    FROM Unit
    Where idSubject operator value;
    

    因此,您可以这样使用这两个表:一个只有主题,另一个包含所有这些主题的所有单元。

    【讨论】:

      【解决方案2】:

      通常,如何解决此问题是您创建第三个表,在其中创建单元和主题之间的连接。您可以像之前所说的那样,在 idSubject 上添加一个列引用,但是创建第三个名为“UnitsToSubject”的表是一种更简洁、更舒适的方式。

      您可能只有三列,例如:

      “ID”:供内部表“UnitsToSubject”参考。

      “SubjectID”:您的主题的 ID。

      “UnitID”:您的单位的 ID。

      通过这种方式,您可以轻松更改主题和单元之间的连接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-18
        • 2022-07-06
        • 1970-01-01
        • 2011-05-31
        • 1970-01-01
        • 2017-11-05
        • 1970-01-01
        • 2021-12-05
        相关资源
        最近更新 更多