, ben genişletilmiş metin ile kısa alfanümerik kod kullanın ve sonra bir arama tablosu olmasını tercih ederim. Gerektiğinde, veritabanı tablosundan dinamik olarak programdaki enum tablosunu yapıyorum.
Örneğin, diyelim ki, işlem türünü içeren beklenen bir alan varsa ve olası değerler satışı, İade, Servis ve Layaway varsayalım. Kod ve açıklama içeren bir işlem türü tablosu oluşturabilir, kodları "SA", "RE", "SV" ve "LY" yapabilir ve kod alanını birincil anahtar olarak kullanabilirim. Sonra her işlem kaydında bu kodu yayınlayacağım. Bu, kayıttaki ve dizin içindeki bir tamsayı anahtarından daha az yer tutar. Tam olarak nasıl işlendiği, veritabanı motoruna bağlıdır, ancak tamsayı anahtarından önemli ölçüde daha az verimli olmamalıdır. Ve anımsatıcı olduğu için kullanımı çok kolay. Bir kaydı dökebilir ve değerlerin ne olduğunu kolayca görebilir ve hangisinin hangisi olduğunu hatırlayabilirsiniz. Kodları çeviri olmadan kullanıcı çıktısında görüntüleyebilir ve kullanıcılar bunları anlayabilir. Gerçekten de bu, tamsayı tuşlarına göre bir performans artışı sağlayabilir: Çoğu durumda, kısaltmalar kullanıcılar için iyidir - genellikle ekranları kompakt tutmak ve kaydırma işlemlerinden kaçınmak için kısaltmalar isterler - böylece işlem masasına katılmanız gerekmez çeviri almak için
Her kayıtta uzun bir metin değeri saklamıyorum. Bu örnekte olduğu gibi, işlem masasını dağıtmak ve "Layaway" i saklamak istemem. Bu sadece verimsiz olmakla kalmıyor, aynı zamanda kullanıcıların bir gün "Layaway satışı" ya da "Lay-away" gibi ince bir fark yaratmalarını istediklerini söylemesi oldukça olası. Sonra sadece veritabanındaki her kaydı güncellemeniz gerekmez, ancak bu metnin gerçekleştiği her yer için programı araştırmanız ve değiştirmeniz gerekir.Ayrıca, metin ne kadar uzun olursa, bir programcının bir programcı tarafından yanlış yazılması ve anlaşılmaz hatalar yaratması daha olasıdır. Ayrıca, bir işlem türü tablosuna sahip olmak, işlem türü hakkında ek bilgi depolamak için uygun bir yer sağlar. Asla, "eğer what whatcode = 'A' ya da whatevercode = 'C' ya da 'what' = 'X' yazıyorsa kod yazmayın." Bu üç kod, diğer kodlardan bir şekilde farklı kılan şey ne olursa olsun, işlem tablosunda ve bu alanı test edin. "Peki, bunlar vergiyle ilgili tüm kodlar" dır ya da herneyse, daha sonra "tax_related" adlı bir alan yaratır ve her kod değeri için doğru ya da yanlış olarak ayarlar. Aksi halde, bir kişi yeni bir işlem türü oluşturduğunda, bunların/veya listelerin tümünü incelemek ve bu türlerin eklenip eklenmemesi gerektiğini belirlemek zorundadır. Bu üç kod değerine niçin bazı mantıkların neden uygulandığını anlamak zorunda olduğum çok sayıda şaşırtıcı program okudum ve listede yer alması gereken dördüncü bir değer olduğunu düşündüğünüzde bunun çok mu olduğunu söylemek zor. Bir şekilde gerçekten farklı olduğu için ya da programcı bir hata yaptığında eksik.
Çeviri tablosunu oluşturmama neden olan tek liste, listenin çok kısa olduğu zamandır, tutulacak ek bir veri yoktur ve evrenin niteliğinden hiç değişmeyeceği açıktır. değerler güvenli bir şekilde kodlanmış olabilir. Doğru/yanlış veya pozitif/negatif/sıfır veya erkek/dişi gibi. (Ve yine de, bu sonuncusu, göründüğü kadar bariz, şu anda "transgendered" ve benzerlerini içermekte ısrar eden insanlar var.)
Bazı insanlar dogmatik olarak her tablonun otomatik olarak oluşturulmuş bir sıralı tamsayı anahtarına sahip olduğu konusunda ısrar ediyorlar. Bu gibi anahtarlar birçok durumda mükemmel bir seçimdir, ancak kod listeleri için yukarıda belirtilen nedenlerden dolayı kısa alfa anahtarını tercih ederim.
Tam çift: http://stackoverflow.com/questions/229856/ways-to-save-enums-in-database – ChssPly76