Database design 为每种类型的CSV文件创建运行时数据库表

Database design 为每种类型的CSV文件创建运行时数据库表,database-design,Database Design,以下是全部细节 web应用程序从CSV文件创建报告 CSV文件有不同的格式 用户将能够添加新格式或添加新字段 我的客户希望我为每种类型的CSV文件创建表。。。因此,对于每种新格式,都会有一个新表。。。 我认为这是一个糟糕的设计决策。但不知道如何向我的客户解释 以下是我现在能想到的原因: 这是一个糟糕的设计决策 一年后将有超过10000张表格,系统将变得不稳定 实现将非常耗时 维修将很困难 数据最终将变得无法管理 不可能轻松迁移到其他服务器 我的理由有效吗?你怎么认为?你能给我解释一下吗 非常感谢

以下是全部细节

web应用程序从CSV文件创建报告 CSV文件有不同的格式 用户将能够添加新格式或添加新字段

我的客户希望我为每种类型的CSV文件创建表。。。因此,对于每种新格式,都会有一个新表。。。 我认为这是一个糟糕的设计决策。但不知道如何向我的客户解释

以下是我现在能想到的原因:

  • 这是一个糟糕的设计决策
  • 一年后将有超过10000张表格,系统将变得不稳定
  • 实现将非常耗时
  • 维修将很困难
  • 数据最终将变得无法管理
  • 不可能轻松迁移到其他服务器
  • 我的理由有效吗?你怎么认为?你能给我解释一下吗


    非常感谢您的帮助

    如果您只是从CSV文件创建报告,为什么要为它创建表呢。您可以存储CSV并动态创建报告


    顺便说一句,这是一个糟糕的设计决策,因为。。。“这是一个糟糕的设计决策”,这是一个很好的例子,说明了为什么业务用户不信任程序员。

    如果您只是从CSV文件创建报告,为什么要为它创建表。您可以存储CSV并动态创建报告


    顺便说一句,这是一个糟糕的设计决策,因为。。。“这是一个糟糕的设计决策”,这是一个很好的例子,说明了为什么业务用户不信任程序员。

    您提供了负面信息。我认为,如果你另外提供了一个好的解决方案,你会有更多的机会


    新格式多久出现一次?可能是一个表的动态变化(正如您所说,可能只是添加列)是决策吗?

    您提供了否定。我认为,如果你另外提供了一个好的解决方案,你会有更多的机会

    新格式多久出现一次?可能是一个表的动态更改(正如您所说,可能只是添加列)是决策吗?

    接受您的观点:

  • 虽然这是真的,但您需要用原因来支持这一点
  • 不稳定?取决于您使用的DBMS
  • 不一定。创建和删除表是一项相对简单的任务
  • 同样,也不一定。这些表应完全由应用程序管理。。这意味着几乎没有直接维护
  • 不知道你是怎么想的
  • 移动到服务器应该像备份数据库并将其恢复到另一台机器一样简单。假设你不能做到这一点,那么有太多的工具可以为你做到这一点

  • 也就是说,我不这么做的原因是:

  • 安全。为了允许应用程序管理表,您必须授予用户创建/删除表的权限。这为黑客完全用核武器攻击数据库打开了可能性。(有人吗?)
  • 安全。您几乎可以保证将使用动态sql通过常规DBMS实现这一点,这意味着您必须了解sql注入的可能性
  • 安全。我有没有提到应用程序用户基本上需要对数据库拥有完全的权限
    至少有两种选择。一种是使用像MongoDB这样的NoSql数据库。它可以动态创建和更改表,而您几乎不需要任何指导。这种相对非结构化的数据正是这些数据库系统的用途。你可以考虑只是上传上传到MunGDB或类似,而你的应用程序使用传统的RDBMS。 第二种方法是使用支持虚拟表的表设计。这意味着您有一个主表保存表名,另一个保存字段,最后一个保存名称/值对关联中的数据。这条路不适合胆小的人,因为报告可能是一个难题,但会跳过所有的安全问题。

    接受您的观点:

  • 虽然这是真的,但您需要用原因来支持这一点
  • 不稳定?取决于您使用的DBMS
  • 不一定。创建和删除表是一项相对简单的任务
  • 同样,也不一定。这些表应完全由应用程序管理。。这意味着几乎没有直接维护
  • 不知道你是怎么想的
  • 移动到服务器应该像备份数据库并将其恢复到另一台机器一样简单。假设你不能做到这一点,那么有太多的工具可以为你做到这一点

  • 也就是说,我不这么做的原因是:

  • 安全。为了允许应用程序管理表,您必须授予用户创建/删除表的权限。这为黑客完全用核武器攻击数据库打开了可能性。(有人吗?)
  • 安全。您几乎可以保证将使用动态sql通过常规DBMS实现这一点,这意味着您必须了解sql注入的可能性
  • 安全。我有没有提到应用程序用户基本上需要对数据库拥有完全的权限
    至少有两种选择。一种是使用像MongoDB这样的NoSql数据库。它可以动态创建和更改表,而您几乎不需要任何指导。这种相对非结构化的数据正是这些数据库系统的用途。你可以考虑只是上传上传到MunGDB或类似,而你的应用程序使用传统的RDBMS。
    第二种方法是使用支持虚拟表的表设计。这意味着您有一个主表保存表名,另一个保存字段,最后一个保存名称/值对关联中的数据。这条路不适合胆小的人,因为报告可能是一个难题,但会跳过所有的安全问题。

    不要混淆客户希望程序做什么,以及您实际如何实现它

    他们想要你的节目