理解数据库背后的逻辑

时间:2014-07-08 06:18:27

标签: sql database database-design

假设我有一个数据库,我有一个表主题,其中包含 idSubject 主题,因为它的列都是varchar的长度为20, idSubject 是自动增量。所有id都是自动增量。

然后我有另一个名为单位的表。现在单位 idUnit (int),评估(varchar), learnUnit (varchar),百分比(int)和 dueDate (日期)。

主题表作为一对多连接到单元表。

我不断向某个主题添加更多单元,但是当我想要更改为另一个主题时,我如何能够只显示为一个主题收集的所有信息?

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

2 个答案:

答案 0 :(得分: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;

所以,这就是你如何使用这两个表:一个只有主题,另一个包含所有这些主题的所有单位。

答案 1 :(得分:0)

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

在那里你可能有三列,如:

“ID”:用于引用内部表“UnitsToSubject”。

“SubjectID”:主题的ID。

“UnitID”:您单位的ID。

通过这种方式,您可以轻松更改主题和单位之间的联系。