我最近開始學習Linq和SQL。作爲一個小型項目,我正在爲Windows Phone編寫一個字典應用程序。該項目分爲兩個應用程序。一個應用程序(目前運行在我的電腦上)在我的電腦上生成一個SDF文件。第二個應用程序在我的Windows Phone上運行並搜索數據庫。不過,我想優化數據使用情況。字典的原始條目被寫入TXT文件中,文件大小約爲39MB。該文件具有以下佈局優化SDF文件大小
germanWord \tab englishWord \tab group
germanWord \tab englishWord \tab group
使用以下表格將文件解析到SDF數據庫中。
表字與列_version(rowversion),ID(INT IDENTITY),字(爲nvarchar(250)),語言(INT)
此表包含文件中的每一個字。該語言是我使用的代碼中的一個標誌,以備日後添加更多語言。一個詞語對是獨一無二的。
表組與列_version(rowversion)的GroupId(INT IDENTITY),字幕(nvarchar的(250))
本表包含不同的組。每組都有一次。
表條目與列_version(rowversion),ENTRYID(INT IDENTITY),WordOneId(INT),WordTwoId(INT),的GroupId(INT)
此錶鏈接翻譯在一起。 WordOneId和WordTwoId外鍵在Word中表一排,它們包含一個行的id。 GroupId定義了單詞所屬的組。
我選擇了這種佈局來減少數據佔用量。原始文本文件多次包含一些德語(或英語)單詞。大約有60個團體重複自己。以編程方式,我將wordcount從1.800.000左右減少到1.100.000左右。在組表中有大約50行。儘管單詞數量減少了,但SDF的文件大小仍在80MB左右。這是原始數據的兩倍多。另一件事是,爲了加快翻譯的搜索,我打算索引字列的字表。通過添加這個索引,文件增長到超過130MB。
怎麼可能是原始數據的〜60%的SDF是兩倍大?
有沒有辦法優化文件大小?