İlişkisel veritabanları ile oldukça fazla çalışma yaptım ve iyi şema tasarımının temel kavramlarını oldukça iyi anladığımı düşünüyorum. Geçenlerde, DB'nin yüksek ücretli bir danışman tarafından tasarlandığı bir projeyi devralmakla görevlendirildim. Bağırsaklarım içgüdüsel olursa lütfen bana bildirin - "WTF ??!?" - garantili mi, yoksa bu adam benim dünyamda kullandığı kadar dahi mi?
Söz konusu DB çalışanlardan gelen istekleri girmek için kullanılan bir içi uygulama. Sadece küçük bir bölümüne baktığımızda, kullanıcılar hakkında ve yapılan istek hakkında bilgileriniz olur. Bunu şöyle tasarlardım:
Kullanıcı tablosu:
UserID (primary Key, indexed, no dupes)
FirstName
LastName
Department
İstek tablosu
RequestID (primary Key, indexed, no dupes)
<...> various data fields containing request details
UserID -- foreign key associated with User table
Basit değil mi?
Danışman bu şekilde tasarladı (örnek verilerle):
UsersTable
UserID FirstName LastName
234 John Doe
516 Jane Doe
123 Foo Bar
DepartmentsTable
DepartmentID Name
1 Sales
2 HR
3 IT
UserDepartmentTable
UserDepartmentID UserID Department
1 234 2
2 516 2
3 123 1
RequestTable
RequestID UserID <...>
1 516 blah
2 516 blah
3 234 blah
Veritabanının tamamı, kendi tablosunda kapsanan her veri parçası ve her şeyi birbirine bağlayan sayısal kimliklerle bu şekilde oluşturulmuştur. Görünüşe göre danışman OLAP hakkında bir şeyler okudu ve 'tamsayı arama hızını' istedi
Ayrıca tüm bu tabloları çapraz referanslamak için çok sayıda saklı yordama sahiptir.
Bu geçerli tasarım, küçük ve orta ölçekli bir SQL DB için mi?
Yorumlarınız / cevaplarınız için teşekkürler ...