簡體   English   中英

MySQL數據庫 最佳模式

[英]MySQL Database; best schema

我有一個關於人們可以在其中買賣東西的網站的數據庫架構的問題。

當某人將廣告添加到數據庫時,他將選擇類別並填寫屬於所選類別的過濾器,因此任何人都可以通過瀏覽至類別並選擇以下過濾器來輕松找到其廣告:

[藍牙]是的

[相機] 3-5百萬像素。

等等

將這些過濾器存儲在數據庫中的最佳方法是什么? 這是我到目前為止的內容:

架構http://img98.imageshack.us/img98/5089/database2.jpg

這只是一個主意,但絕不會將過濾器“ megapixels”的值發送回3到5之間的廣告,因為filter_value的類型為VARCHAR

我會用表做的:

  • 廣告
  • 過濾器名稱(類別只是過濾器之一)
  • 過濾值
  • 廣告和過濾器值之間的關聯

以您喜歡的任何方式存儲它,但為了基於這些過濾器進行高效查詢,請設置Solr並使用多面搜索。

根據我的說法,設計工作還不錯,我很好奇您為什么在聯接表中加入了一個額外的id字段,例如廣告和類別之間。 我想你可以不用他們。 總體而言,該設計非常好,因為它使您可以在以后更改基表,例如廣告。

另一件事是filter_value? 為何不能將其放入過濾器表?

您是否考慮過另一個具有表ID,filter_id和value的表filter_value_list? 該表將包含一個VARCHAR答案列表,該列表將以下拉列表的形式提供給用戶,每個下拉列表都鏈接到要放置的廣告類別。

對於“藍牙”過濾器,可能的值為“是”和“否”。 對於“相機”濾鏡,可能的值可能是“小於1百萬像素”,“ 1或2百萬像素”,“ 3到5百萬像素”,“ 5到10百萬像素”,“超過10百萬像素”(在這里規划未來的技術)。

優點:

  1. 用戶選擇而不是鍵入答案。

  2. 保證您的系統可以理解每個過濾器。

  3. 所有廣告的一致性。

  4. 可能的值列表也可以在“添加/刪除過濾器”側邊欄中使用,就像這些天在許多網站上看到的那樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM