2010-12-02 72 views
0

最近我試圖解決這個問題,但我並不知道如何。 我有一個應用程序,允許用戶註冊和創建配置文件(儘可能多他們想要的)。 對於每個配置文件,他們可以創建廣告系列(每個配置文件所需的數量儘可能多),併爲每個廣告系列添加鏈接(鏈接數量有限,但無論如何都很大)。每個鏈接都可以擁有自己的關鍵字(多於1個關鍵字)。適用於大型數據庫的模式

我想到的最明顯的事情是爲用戶設置一個表格,一個用於配置文件,一個用於活動,一個用於鏈接,一個用於關鍵字。但想一想,有些用戶可能會使用相同的關鍵字,我不想在數據庫上重複這些信息n次。我不知道這是否可能在MySQL中,但我想在鏈接表中有一個字段,它將引用關鍵字表中的關鍵字的ID。就像一個ID數組。我希望這個實現是靈活的,使我能夠輕鬆地檢索關鍵字,更新「關鍵字數組」並執行某些計算(例如計算關鍵字數)。你能推薦一個關於如何實現這個的可能解決方案嗎?

只是再次聲明:我使用mySQL和php。 謝謝。

回答

1

你應該創建一個表來存儲的關鍵字,即

id (int) keyword (varchar)

而且存儲環節的關聯表 - >關鍵字即

link_id (int) keyword_id (int)

希望這有助於!

  • 基督教
0

你需要有一個多對多的表,該表存儲鏈接的ID,用戶的ID和關鍵字的ID(我假設各個環節都有關鍵字)

然後,只需通過正常的數據庫操作即可完成所談論的內容。

+0

因此,每個實體都是獨立的,沒有指定外鍵和連接它們的關聯表。我知道了嗎? – user253530 2010-12-02 03:05:13

2

從描述我想這些表:

user (id, ...) 
campaigns (id, user_id, ...) 
links (id, campaign_id, link) 
keywords (link_id, keyword) 
+0

缺少`個人資料(id,user_id,...)`(這意味着它應該是`campaign(id,profile_id ...)`),但+1無論如何給一個實際合理的模式 – tobyodavies 2010-12-02 03:11:47

1

我認爲,你的每一個實體的初始執行表的是正確的。如果您將關鍵字存儲在單獨的表中,並將它們與link_id或類似的關聯起來,那麼您可以比包含每個鏈接的所有關鍵字的數組快速查找具有常用關鍵字的鏈接。

+0

但是不同的用戶會發生什麼?不同的用戶可能對不同的鏈接使用相同的關鍵字。例如,我想查看哪些關鍵字更頻繁地使用。 – user253530 2010-12-02 03:01:31

+0

然後你可以使用sql來計算每個關鍵字有多少。從keyword_tbl中選擇count(關鍵字);或類似的東西 – 2010-12-02 03:05:03

0

有2個想法 1)每個用戶都有自己的一組關鍵字 有一個用戶表,並在另一個表中有關鍵字,用戶ID爲FK。

當用戶無論他們在哪個檔案/活動中需要添加鏈接時,都會顯示該用戶的關鍵字。

鏈接仍然通過一個連接表,將持有 有關鍵字keywordID和鏈路ID

2)全球關鍵字鏈接到keywordID只是keywordID和關鍵字 會有一個連接表來保存keywordID和鏈路ID ,允許一個鏈接有多個關鍵字。

然後必須製作前端以確保用戶在添加新關鍵字之前搜索現有的關鍵字,這將有助於防止重疊。添加關鍵字的過程還應該在添加之前檢查現有值

1

我會爭辯說盡管可能會爲用戶選擇相同的關鍵字作爲不同的鏈接。這不會使它們在語義上相同。

如果如果有一個針對浮木和flotsom的廣告系列,並且在鏈接上使用「炮彈」作爲關鍵字,這與我在unix公用廣告系列中用作關鍵字的「炮彈」不同。

堅持您的原始清潔和邏輯模式,並不通過解決想象中的問題使其複雜化。

相關問題