我对SQL还是比较陌生,想自学,我很难理解何时保留一列以及何时将其分成新表。
我正在看一个演讲,讲师有一个“客户”表,而其中一列是“城市”,许多客户来自同一城市,因此数据是多余的。然后,他将“城市”分解为自己的桌子,但这对我来说意义不大。
例如,我正在创建一个大学课程数据库,并且我注意到“课程”维度中的某些列经常重复(例如学时)。我是否应该将信贷时间分解到自己的表中,该表只有几行?这有什么作用?我仍然必须使用外键为每个新数据条目引用相同的值,因此它甚至可以节省存储空间,还是只是不必要的联接?
我还有其他几列,例如“星期几”,“位置”,“上课时间”,它们也只有一些经常重复的值。应该将它们分解到自己的单独表中还是留在“课程”表中?
答案 0 :(得分:1)
学习数据库时,这总是很棘手。规范化规则可能会有所帮助,但不清楚何时应用它们。
这个想法是(一些)数据库表代表“实体”。这些都是您要存储的信息。其他表表示实体之间的关系,但现在就不用担心了。
对于您的具体问题:
答案 1 :(得分:0)
考虑使用课程表和时间表表。这样一来,您可以选择一门课程,而且时间表会有所不同,而且时间表会在一周中的不同时间和日期。如果有不同的位置,我会将位置移到进度表中。正确设置时间格式,以便您可以计算持续时间并在需要时进行投放。这取决于数据的外观。
课程
位置(varchar)
|
(一对多关系)
|
时间表