2014-09-19 85 views
0

我的任务是开发评估日志文件的工具,我正在寻找合适的数据库设计。有几十个应用程序以CSV格式生成日志文件,但每个应用程序都有不同的列和数据类型。在启动时,每个应用程序都会将其当前日志文件发送到服务器,该服务器将新行插入到SQL Server数据库中。用于日志数据评估的数据库设计

到目前为止,我想出了以下设计。从我在其他文章中阅读的内容中,强烈建议不要使用EAV设计,也不能说服我将所有数据存储为字符串。所以我想出的唯一选择是每个应用程序都有一个表。

我还没有考虑过其他选项吗?如果您遇到类似的情况,您选择了哪种设计?

  • 简单的设计

缺点::

  • 大量的表格
  • 的每个应用程序

    ApplicationA(A, B, C, D, E) 
    ApplicationB(B, E, H, J) 
    ApplicationC(C, P, N, X, Y) 
    

    优点

    1)一个表

  • 每当一个新的项目推出了相应的表必须创建
  • 如果文件格式更改,表定义已经改变

2)EAV模型

Applications(AppId, Name) 
DataTypes(DTypeId, Name) 
Properties(PropId, Name, DTypeId) 
ApplicationProperties(AppId, PropId) 
Values(ValueId, AppId, PropId, Value) 

优点:

  • 无需添加新表或列

缺点:

  • 所有的值存储为字符串
  • SQL查询更复杂,由于大量的连接和施放

回答

0

在我看来,性感并不总是更好。每个应用程序设计的简单1表让我的投票简单。增加表格的维护应该不是什么大问题。没有其他设计浮现在脑海。

但是,您将需要不同的查询来获取每个应用程序的数据。因此,如果您正在讨论大量的应用程序,那么如果您使用EAV设计,则可以节省大量时间开发应用程序以获取数据,因为您可能会创建一个函数来检索日志任何应用程序的信息只需发送一个不同的参数。

祝您的应用程序顺利。