2011-09-15 15 views
5

Geçerli para birimi kodlarını içeren bir tablomuz var. Örneğin, 3 kodlu bir ISO Para Birimi yerine birincil anahtar olarak sayısal bir değer kullanmayı seçiyoruz.Bir referans tablosunda 0 sayısal PK kimlik sütun değeri mi var?

Genel görüş birliği, bu CurrencyId sütununun sıfır ile başlayan değerler içermesi gerektiği sonucuna varmıştır. ABD doları bizim için birincil para birim olduğundan, ilk pozisyonu 0 olan bir değerle iddia ediyordu.

Düşüncelerim, bazı dillerin sayısalları sıfıra ve sıfır olarak başlatması için kimlik sütunlarının sıfırdan başlamaması gerektiğidir. Sonuç olarak, hiçbir zaman atama yapılmadığında para birimi kodu istemeden USD olarak ayarlanmış olabilir.

Hepiniz ıslanmış mıyım? 1 CurrencyId 1 ila USD'u atamayı tercih ederim.

+2

Ne karar verirseniz verin - sadece bir yeri açıkça belgelediğinizden emin olun ve tüm geliştiricilerden ve DBA'lardan aldığınız çözüm hakkında anlaşmaya varın! Ayrıca: "0" değerini "gerçek" bir değer olarak kullanırsanız, yine de her zaman "Bilinmeyen" veya "tanımsız" için bir yer tutucu değeri olarak -1 değerini girin ve bu değeri varsayılan olarak kullanmak için bu tabloya başvuran sütunları ayarlayın. –

+2

@Chad - Size katılıyorum. [Bu sorunun enumlar hakkında benzer bir tartışması vardır] (http://stackoverflow.com/questions/7257409/should-an-enum-start-with-a-0-or-a-1/7257458#7257458) –

+1

"Ben hep ıslandım mı?" ?? – AakashM

cevap

3

Asıl kimlik önemli olmamalıdır. 0'dan başlayarak (veya bu konu için 1 tane) tamamen keyfi olduğu için, bu sayı kullanıcı için bir anlamı yoktur - sadece sistem tarafından bir referans olarak kullanılır. 0 veya 1 veya 4,536,901'de başlayıp başlamadığı kritik bir tasarım kararı değildir.

Yükseltdiğiniz sorunun% 100 geçerli olduğunu düşünüyorum; 0'dan başlayarak yan etkilere neden olabilir, bunların bazıları ince ve takip edilmesi güç olan hatalar olarak sonuçlanabilir. Bu uzak'dan kaçınmak, herhangi birinin itirazını numaralandırmayı sıfıra başlatmak için yapılan bir abitrary/aethstetic arzusuna ağır basar.

+1

+1, kısa versiyon: sadece 1'de başlıyorsunuz, C dizini yapmıyorsunuz. –