2014-09-19 86 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設計,則可以節省大量時間開發應用程序以獲取數據,因爲您可能會創建一個函數來檢索日誌任何應用程序的信息只需發送一個不同的參數。

祝您的應用程序順利。