Veritabani Normalizasyon - II
| Veritabanı Normalizasyonu - Bölüm-III |
Bu yazı birkaç seriden oluşmaktadır. Başlıklardan konulara kolayca erişebilirsiniz.
Bölüm 1 - Veritabanı normalizasyonu konusunu ele alış ve Hastane örneğinin çıkışı. HASTALAR tablosunun oluşturulması ve ilişkilerinin oluşturulması.
Bölüm 2 - Doktor bilgilerini tutacagımız DOKTORLAR tablosunu ve tüm ilişkileirni anlatmaya devam ediyoruz.
Bölüm 3 - Muayene, Poliklinik tablolarını oluşturup tablo ilişkilerini sonlandırıyoruz.
Bölüm 4 - Testler, örnek data girişi, sorgulamalar vs. |
Birinci Bölümde HASTLAR tablomuzu oluşturduk ve Adres verisini oluşturabilmek için gerekli iki tablo (ILLER ve ILCELER) ile ilişkilendirdik.Yazımıza birhastnede olmazsa olmaz DOKTORLAR tablosunu oluşturarak devam edecegiz. Bu aşamada önce HASTLAR tablosu değilde INSANLAR tablous oluşturarak bir parametre ile hasta ve doktoru ayrabilirmiyim diye düşündüm fakat sonra Doktorların hastalara göre daha fazla bilgi içermesi gerektiğini farkettim. Örneğin Adı,Soyadı,DogumTarihi ve adres bilgisi yapı olarak benzemekle beraber, Doktorların ünvan, Braş gibi ek bilgileri var ve bir doktor çift ana dal yapma ihitmalını de göz önüne bulundurarak (Nekadar güç olsada :) ) buna uygun bir yapı tasarlamak gerekli. Örnegin Prof.Doc. Hasan Erdem hem çocuk hastalıkları hemde iç hastalıları alanında uzmanlık sahibi olabilir. Bu durumda bu bilgileri INSANLAR tablosunda harmanlamak güç olacaktı. Bu nedenle yapıyı şu şekilde tasarladım.
Doktorlar tablosunda gördüğünüz üzere HASTALAR tablosundan farklı olarak UnvanNo ve UzmanlıkNo adında iki alandaha var bu alanlar iel unvan ve Uzmanlık bilgilerini desenleyeceğiz. Örnegin unvanları ayrı bir tabloya almamış olasaydık, Prof.Doc, Yar.Doc, Uzman Dr gibi ifadeleri Doctorlar tablosunda tekrarlıyor olacaktır. Oysaki işimdi Doktorlar tablosunda bu uzun ifadele ryerine 1, 2 , 3 gibi Nolar (ID ler) kullanıyor olacağız. Unvanlar tablosunu ve Uzmanlık tablolarını da şu şekilde tasarladım.
Bu aşamaya kadar herşey normal gibi görünüyor. Fakat datayı biraz düşündüğümüzde aslında Doctorlar.UnvanNo ile Unvanlar.UnvanNo ilişkisinin aslında çok da palnladığımız yapıyı sağlamadığını görüyoruz. Şöyleki; Ahmet adında bir doktorumuz olsun ve bu Dr.Ahmetin Uzmanlık alanı Cocuk Hastalıkları olsun. Bu ornek için herşey güzel. Cocuk Hastalıkları örnegin 4 nolu kayıt( UZMANLIKLAR tablosunda ) bu kaydı doktorlar tablosunda ilgili alana kaydederiz ve Dr. Ahmetin kaydı tamam olur. Fakat örnegin gene Dr.Ayse adında bir doktorumuz daha var ve bu arkadaş çif uzmanlıga sahip, bu yapı ile Dr.Ayse için iki kayıt oluşturmız gerekcek şöyleki
Ayse, Demir, 12-10-1985, ...., 4 (Cocuk Hastalıkları)
Ayse, Demir, 12-10-1985,.....,7 (iç hastalıkları)
Görüldüğü gibi Dr.Ayşe için iki kayıt oluşturmak kaçınılmaz. Fakat yapıda yapacağımız küçük bir normalızasyon ile bu durumdan kurtulabılırız. Ara bir tablo yapıyoruz ve adını DOKTOR_UZMANLIKLARI adını vererek yapısını şu şekilde tanımlıyorum.
Tabi bu drumda DOKTORLAR tablosundaki UzmanlıkNo alanına artık ihtiyacımız kalmadı. Yeni yapıda tablolar arası ilişkimiz şu sekilde olacak.
Ornek kayır vermek gerekirse;
UZMANLIKAR
1, Cocuk Hastalıkları
2, Dahiliye
DOKTORLAR
1,Hasan,Engin
2,Ayse,Gurel
DOKTOR_UZMANLIKLAR
1,1,1 (Hasan Engin, Cocuk Hastalıları)
2,2,1 (Ayse Gurel, Cocuk Hastalıkları)
3,2,2 (Ayse Gurel, Dahiliye)
şeklinde örneklenebilir.