【问题标题】:What is the best way to structure this database?构建此数据库的最佳方法是什么?
【发布时间】:2019-06-01 08:00:07
【问题描述】:

所以我正在根据我的客户数据构建数据库。每个月他们创建大约 25 个 csv,它们的主题和属性是独一无二的,但它们都有一个共同点;一个注册号。

注册号是所有这些 csv 文件中唯一的共同变量。

我的任务是将所有这些转移到一个数据库中,我倾向于使用 postgres(如果有人认为 nosql 最适合这个,请大声说出来!)。

大问题;在数据库中构建它。我是否应该每月创建一张包含所有数据的表,第 1 列是注册,第 2-200 列是属性?还是应该将所有 csv 原样放入 postgres 中,然后再加入它们?

当每个注册都会每月更新一次时,我正在努力弄清楚构建此方法的方法,并且我们不想破坏历史数据 - 我们希望将其保留用于未来的基准测试。

我希望这是有道理的 - 我欢迎所有建议!

谢谢。

【问题讨论】:

  • 我认为每个月制作表都不是一个干净的解决方案,因为创建日期(或创建时刻)是一个属性,它可以声明为数据库中的一列。然后您可以轻松地按该列过滤它们并获得您想要的任何查询

标签: sql postgresql database-design


【解决方案1】:

在某些情况下,您的问题过于宽泛,需要征求意见(SQL 与 NoSQL)。

但是,问题的要点是,您是应该一次加载一个月的数据,还是应该将数据加载到一个完善的数据模型中。肯定是后者。

我的建议如下。

首先,围绕数据需要如何存储在数据库中而不是如何提供数据来设计数据模型。每个 CSV 文件可能有一个表。不过,我会有点惊讶。数据经常需要重组。

其次,为 CSV 文件设计归档框架。 您应该将所有传入的文件归档在一个很好的目录结构中,其中包含每个月的文件。这种结构应该能够容纳每月多次上传,无论是对于所有文件还是其中一些文件。发生错误,您希望确保输入数据可用。

第三,将数据复制(这是 Postgres 命令)到临时表中。这是每月流程的开始。

第四,处理数据——包括进行验证检查以将其加载到您的数据模型中。

可能会根据以下问题对此过程进行调整:

  • 即使在上传过程中,数据是否需要 24/7 全天候可用?
  • 部分数据的验证失败是否会阻止上传任何数据?
  • SQL 检查(参照完整性和check)是否足以验证数据?
  • 您是否需要能够将系统“回滚”到任何特定更新?

这些只是可以指导您实施的问题。他们不打算在这里回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多