2013-12-11 49 views
0

既然這樣,我想建立一個存儲與文件的詳細信息,如作者的數據庫,創建日期,最重要的標籤。存儲多個標籤在一列

我不知道如何去存儲多個標籤爲一個文件,我能想到的就是它們都存儲爲一個超鏈接字符串的最簡單方式。但這引發了能夠在列表視圖中將標籤顯示爲窗口應用程序中的鏈接以及如何使用此方法篩選搜索結果的問題。

一個更復雜的想法我有將創建的標籤一個單獨的表,分配給每個標籤,將用於多個標記INT被存儲爲組合的較長的一個獨特的3位整數。

例如

001 - tag1 
002 - tag2 
003 - tag3 

,然後將它們存儲在文件細節001002003如果所有三個標籤都相關文件。

如果我這樣做,我是否需要將每個Mod聲明爲應用程序中類「Mod」的對象,然後爲每個標記值重新分配一個超鏈接,並將標記作爲Tag對象的集合存儲爲每個mod的屬性?這是一個有價值的想法,還是我有些過度複雜?

編輯:

仍處於發展的早期階段,還沒有尚未測試出它的實現,但目前即時尋找在約50-100標籤。

我怎麼會去如何組織一個files_to_tags表?我對關係數據庫建模相當陌生,我更願意使用CSV來存儲數據,但這不是非常有效!

+0

既然你是以某種方式編碼標籤,我假設你有一組預定義的所有可能的標籤?如果是這樣的話,那有多少標籤? – Tonci

+0

爲什麼不把它們存儲在files_to_tags表中? –

+0

創建一個表來存儲所有標籤,每個標籤都有唯一的標識。創建另一個表,它將使用文件ID和標記ID爲文件和標記的每個組合創建一條記錄。這樣,您可以獲取一個或多個標籤的所有文件,或一個文件的所有標籤。 – Tim

回答

1

這是一個橋表的好例子。比方說,你在你的數據庫:

file_info 
--------- 
file_id 
author 
create_date 

tag_info 
-------- 
tag_id 
tag_name 

tag_id是一個代理鍵,並會爲每個新標籤的唯一的,遞增的價值。因此,它可能看起來像:

tag_id tag_name 
------ -------- 
    1 Apples 
    2 Pears 
    3 Peaches 

然後,您創建的橋樑,哪些文件鏈接到適用的標籤:

file_tag_bridge 
--------------- 
file_id 
tag_id 

的file_id的組合/ TAG_ID將在臺唯一的(這是一個複合鍵),但是給定的file_id可以與多個(不同的)tag_id相關聯,反之亦然。

你將有一個排在該表中與文件相關聯的每個標籤:

file_id tag_id 
------- ------ 
     1  1 
     2  2 
     2  3 

在這種情況下,文件1與Apples標籤相關聯;文件2與PearsPeaches相關聯。文件3不與任何標籤關聯,因此不在橋表中表示。

+0

謝謝,這真的幫助我! – sh3rifme