PHP + MySQL küçük bir uygulama writng yaşıyorum ve onunla ilişkili bayrakları (8 şimdiye kadar ama değil artması bekleniyor) bir çift olan bir nesne olduğu noktaya gelmiş. Hiçbir mantıklı olur bazı kombinasyonlar olsa bayraklar oldukça fazla ilgisiz. Nesnesi, bir DB satır temsil (çok yüklemeden / tasarrufu için bazı yöntemler vardır) böylece soru aynı zamanda bir depolama yöntemi seçerek için geçerlidir.
Soru - how to best represent them both in code and DB? Ben çeşitli şekillerde düşünebilirsiniz:
DB bunları saklamak için bir yoldur bit bayrakları gibi tek tamsayı alanında. PHP tarafında sonra bunları temsil eden çeşitli yollar hayal edebiliyorum:
- Sadece tamsayı değeri vermek ve bayrak sabitleri bir çift var; Bayraklar kendi bit büyü yapmak gerekiyor her yer olsun;
- Sınıfı yöntemlerini tanımlayın
GetFlag()
,SetFlag()
veUnsetFlag()
Bu özel bir tamsayı değişken üzerinde bitsel büyü yapmak; Bu yöntemler daha sonra bir parametre olarak bayrak sabitleri biri geçti olacaktır. - (Set ve Unset meslektaşları ile birlikte) yöntemleri
GetFlagA()
,GetFlagB()
vb tanımlayın; - Her biri bayrağı temsil eden üye değişkenler bir grup tanımlayın; DB yükleme onları ayarlayın ve kaydederken onları toplamak.
- Tüm bayrak değerleri dizisi olan bir üye değişkeni oluşturun. Her bayrak erişmek için dizi indeksleri olarak önceden tanımlanmış sabitleri kullanın. Ayrıca yükleme / tasarrufu diziyi toplamak / doldurun.
Başka bir yol, ayrı BIT alanlar olarak DB bunları saklamak olacaktır. PHP sonra birkaç üye değişkenleri çevirmek söyledi. IMHO bu sorguları zorlaştıracaktır.
Ve son yolu bayraklar ve orijinal nesneler arasında çok-çok ilişkisi için tüm bayrakları ve bir ara tablo için anothed tablo tanımlamak olacaktır. IMHO tüm çözümleri messiest, aksi takdirde sadece 3 tablolar gibi olacağını düşünüyor.
Ben bu yüzden en iyi yöntem ne olacağını bilmiyorum çok PHP geliştirme yapmadım. C # Ben muhtemelen onları gibi bitsel bayrakları saklamak ve özel bir tamsayı üzerinde bitsel büyü yapmak özelliklerini yapacak. Ama PHP (ben son kararlı sürümünü kullanıyorum) özelliklerine sahip değildir ...