【问题标题】:Having many rows vs having many columns: which is the way to go?有很多行与有很多列:要走哪条路?
【发布时间】:2017-09-12 12:36:00
【问题描述】:

我正在为学校成绩分析器创建一个数据库。 在我的数据库中,我有像“studentssubjects”这样的表格......我需要一个表格来记录每个学生的分数(分数表)。
对于此表,我正在考虑 2 个选项.. 1:我将有一个包含许多列的表(标记),即 students_regno,(所有科目的列 - 可能约为 20。 该表将有更少的行。也许700 要么 2 :我可以有一个很少列的标记表,即 students_regno,subject_id,marks 这将只有 3 列,但行可能跨越 5000 多行。

我应该走哪条路?

【问题讨论】:

  • 请澄清您的问题。行和列的使用不一致,例如以下语句:'这将只有 3 行,但行可能跨越 5000 多行。没有意义。您的确切意思是列在哪里?
  • 它们不被称为标记。它们被称为等级。
  • @shogunivar 当标记被馈送到数据库时,该选项将导致超过 5000 行......拥有所有这些行会影响数据库的速度吗?......速度是我的另一个主要问题。 subject_id 和 students_regno 也会一遍又一遍地重复......这是个问题吗?
  • @MikeNakis 也许不是你来自哪里。
  • @pickmanmurimi 5000 行不必担心。当索引正确时,它不应该真正影响你的速度。由于您的 student_regno 和 subject_id 将是一个复合主键,因此它们应该重复,这很好

标签: mysql database-normalization


【解决方案1】:

第二个绝对是要走的路。

您始终要牢记,您希望能够扩展您的系统。如果在 5 年内引入一个新学科。您希望能够添加它。这样一来,您就不想添加一个额外的字段并为您已有的所有记录留空。

最好将所有内容分开。很多时候您可能不需要 90% 的数据。最好从 1 分表中获取所有内容。

所以我会说选择选项 2。使用 student_regno, subject_id, mark 制作一个标记表

【讨论】:

    猜你喜欢
    • 2018-08-20
    • 1970-01-01
    • 2020-10-24
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2021-04-08
    • 1970-01-01
    相关资源
    最近更新 更多