2009-03-04 13 views
2

Veritabanlarıyla yazılım tasarlarken, numaralandırmaları ayrı tablolara normalleştirmeye değer mi?Numaralandırma değerlerini yeni bir tabloya normalize etmeye değer mi?

örn. Ben bir sınıf varsa:

public class Alert 
{ 
    public int ID 
    public System.DayOfWeek AlertDay; 
    public string Message; 
} 

benim tekabül Uyarısı tablo sadece bir şey gibi olmalı:

CREATE TABLE Alert 
(
    ID INT IDENTITY, 
    AlertDay INT, 
    Message VARCHAR(50) 
) 

Ya ayrı tabloya haftanın günlerini normalleştirmek gerektiğini ve bir FK ilişki eklemek benim Uyarı tablosu?

Bu tür bir tasarım kararı için temel bir kural var mı?

cevap

1

Genellikle değil. Haftanın günleri değişmeyecek ve gereksiz bir katılım gerçekleştirmek zorunda değilsiniz. Diğer yandan, "haftanın günlerinin" kaynağının tutarlı olduğundan ve değişmeyeceğinden emin olmak istersiniz (örneğin yerelleştirme, büyük harf kullanımı, kısaltma, vb.).

1

sabit bir şey varsa, haftanın günleri hakkında bilgi olarak, sadece kodda bir numara tanımlayın ve veritabanında tamsayı depolardım.

0

Verilerinize, nesnelerinizden geçmeden doğrudan veritabanından erişilebilecek mi? Eğer öyleyse bir arama tablosunu tavsiye ederim ya da haftanın gününe göre bir rapor yazan herhangi bir kişi, haftanın gününün metin değerlerini görüntülemek için bir durum ifadesi yazması gerektiğinde veya dönüştürme hatasını yaptıklarında biraz rahatsız olurlar. sistem işlevini kullanarak haftanın gününe int ve sunucusundaki startOfWeek ayarının, nesnenize kodladığınızdan farklı olduğunu öğrenin.

0

Alternatif olarak, DateTime'ı saklayabilir ve uygulamanın haftanın gününü belirlemesine izin verebilirsiniz. Birçok dil, bunu yapmak için yerleşik bir yönteme sahiptir.

İlgili konular