我对SQL比较陌生并试图自学,我很难理解何时保留一个列以及何时将其分成新表。
我正在观看讲座,讲师有一个“客户”表,其中一个栏目是“城市”,很多客户来自同一个城市,所以数据是多余的。然后,他把“城市”分成了自己的桌子,但这对我来说没有多大意义。
例如,我正在创建一个大学课程数据库,我注意到“课程”维度中的某些列经常重复(如学分)。我应该将信用时间分解到自己的表中,那个表只有几行吗?这取得了什么成果?我仍然需要使用外键为每个新数据条目引用相同的值,这样它甚至可以节省存储空间还是只是一个不必要的连接?
我还有其他专栏,比如'Days of Week','Location','Class Time',它也只有一些经常重复的值。那些应该分解到他们自己的单独表中还是留在Course表的一部分?
在学习数据库时,这总是很棘手。规范化规则可以提供帮助,但是他们可能不清楚何时应用它们。
这个想法是(某些)数据库表代表“实体”。这些是您想要存储信息的内容。其他表格表示实体之间的关系,但现在不要担心这些关系。
针对您的具体问题:
考虑使用课程表和计划表。通过这种方式,您可以拥有一个课程,其中包含许多不同的时间表,这些课程有不同的时间和星期几。如果有不同的位置,我会将位置移动到计划表中。正确格式化时间,以便您可以计算持续时间并在需要时投射它们。这取决于数据的样子。
课程
|
(一对多关系)
|
时间表