MySQL Veritabanı;

3 Cevap php

Ben insanların satmak ve malzeme satın alabilirsiniz belirli bir web sitesi için bir veritabanı şeması hakkında bir sorum var.

Birisi veritabanına bir reklam ekler, o kategoriyi seçin ve seçilen kategoriye ait filtreleri doldurur, bu nedenle herkesin kolayca bir kategoriye tarama ve benzeri filtreleri seçerek onun reklamı bulabilirsiniz olacaktır:

[Bluetooth] evet

[Kamera] 3 - 5 megapiksel.

Ve saire

Veritabanında bu filtreleri depolamak için en iyi yolu nedir? Bu ben bugüne kadar ne var:

Schema

Bu sadece bir fikir, ama filter_value tipinde beri, 3 ve 5 arasında filtre "megapiksel" değeri ile geri reklamlar göndermek asla VARCHAR.

3 Cevap

Eğer filter_value_list sütunlar id, idJiltresi, ve değer, ek bir tablo düşündünüz mü? Bu tablo konuyor reklamın kategorisine bağlı her filtre için aşağı bir damla şeklinde kullanıcıya sağlanacaktı VARCHAR cevapların listesini içerecektir.

"Bluetooth" filtre için olası değerleri "Hayır" "Evet" ve olacaktır. "Kamera" filtre için olası değerleri "az 1 megapiksel", "1 ya da 2 megapiksel", "3 ila 5 megapiksel", "5 ila 10 megapiksel", "fazla 10 megapiksel" (biz konum olabilir ) burada geleceğin teknolojisi için planlama.

Avantajları:

  1. User yerine türlerine göre, kendi cevap seçer.

  2. Her bir filtre sistemi tarafından anlaşılması için garanti edilir.

  3. Tüm reklam arasında tutarlılık.

  4. Bu gün birçok sitelerde gördüğünüz gibi olası değer listesi aynı zamanda bir "ekleme / filtreleri kaldırabilirsiniz" kenar çubuğu kullanılabilir.

Ben tablolarla yaparım:

  • reklamlar
  • filtre adları (kategori sadece bir filtre olan)
  • filtre değerleri
  • reklam ve filtre değerleri arasındaki ilişki

Eğer istediğiniz şekilde saklayın ama SOLR kurmak bu filtrelerin dayalı etkili sorgulama ve yönlü arama kullanın.

Tasarım bana göre oldukça iyi çalışıyor, ben reklamları ve kategorileri arasındaki birleştirme tablosunda, örneğin ek bir id alanı dahil neden olarak merak ediyorum. Ben onlar olmadan yapabileceğini düşünüyorum. Eğer baz tabloları değişiklikleri sonradan reklamları örneğin yapmanıza olanak sağlar, çünkü bütün olarak tasarımı oldukça iyi.

Filter_value ne başka bir şey? ve neden filtreler tabloda gidemem?