2016-04-10 19 views
2

önceden tanımlanmış değerler için sql tablosunda bir tamsayı veya varchar tutun önceden tanımlanmış bir set veya dizeleri Ben sadece ekleyebilirsiniz Ben bir sütun varchar başlıklı Frekans sahip

'Daily', 'Weekly', 'Monthly', 'Yearly' 

ve başka bir şey ve onlar kazandı emin değilim.

ayrı bir tablo başlıklı Frekansları ve ben performans, okunabilirlik, bakım açısından ana tabloda sütun Frekans tutmalı veya yabancı bir tuş yoluyla kendi kimliklerini bir başvuru oluşturmak için herhangi bir neden var mı, vs

Performans-bilge, int daha iyidir, evet, ama ayrı bir tablo için bir ek istek daha kötüdür.

Ya da belki oluşturmak bir harita değil 2 tablo oluşturmak için, ana tabloda tamsayılar tutmak ve bir istemci tarafında daha iyidir:

1 -> 'Daily', 
2 -> 'Weekly', 
3 -> 'Monthly', 
4 -> 'Yearly' 
+0

Olası olarak ilgili soru //stackoverflow.com/q/1419210/4519059);). –

cevap

2

Makul RDBMS frekanslarının küçük masaya arama optimize eder karma tablo arama veya böyle. Tam dizgiyi saklamak, ana tabloda boşluk israfıdır. Sayısal indeksleri ve ayrı tabloyu kullanın. Eğer müşteriniz haritalamayı istemci tarafında yapmak istiyorsa, o zaman hala yapabilir, eğer küçük tabloya katılarak tam isimleri almak istiyorlarsa, yine de yapabilirler.

+0

Bu eski bir tartışma: ** Yapay anahtarlar ** ** doğal tuşlara karşı ** Her ikisinin de artıları ve eksileri vardır. Her iki sistemde de veritabanları yazdım. Bugün doğal anahtarları tercih ediyorum çünkü bir masaya baktığınızda, her seferinde bir 2. masaya katılmak zorunda kalmadan içeriğini doğrudan görebilir ve düzenleyebilirsiniz. –

2

Veritabanınızı normalleştirilmiş olarak tasarlayın, bu değerler için ayrı bir tablo anlamına gelir. Veri tutarlılığı (çoğaltma yok) ve gelecekteki ispat esnekliği için en iyisidir. İhtiyaç duyulduğunda nolu performans nedenleriyle denormalize edin () (müşteri üzerinde denormalizasyon, materyal görünümü vb.). Birincil anahtar olarak int yerine char (1) 'i kullanarak okunabilirliği artırabilirsiniz - D, W, M, Y.