构造此数据库的最佳方法是什么?

时间:2019-06-01 08:00:08

标签: sql postgresql database-design

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

注册号是所有这些csv中唯一的公用变量。

我的任务是将所有这些都移到数据库中,我倾向于使用postgres(如果有人认为nosql最适合这样做,请大喊大叫!)。

大问题;在数据库中进行结构化。我是否应该每月创建1个表来容纳所有数据,第1列是注册,而第2-200列是属性?还是应该将所有的csv都按原样放入postgres,然后再加入它们?

当每个注册每月更新一次时,我正在努力寻找一种方法来构造这种结构,我们不想破坏历史数据-我们希望保留它作为将来的基准。

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

我的建议如下。

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

第二,设计CSV文件的存档框架。  您应该将所有传入的文件归档在一个不错的目录结构中,并包含每月的文件。这种结构应该能够每月容纳所有文件或其中一部分的多个上载。发生错误,您想确保输入数据可用。

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

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

基于以下问题,可能需要对该过程进行调整:

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

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