Cevaplar - eng.bahcesehir.edu.tr

YZM5507
VERİ MODELLEME VE İLİŞKİSEL VERİTABANLARI
UYGULAMA #4
Aşağıda nitelikleri ve kısıtlamaları verilen veritabanı yapılarını 1NF, 2NF ve 3NF kurallarına
göre normalize ediniz.
1. Bir şirketin çalışan ve proje bilgilerini içeren veritabanı:
a) Nitelikleri: sicilno, personeladı, personelsoyadı, unvanno, unvanadı, projeno,
projeadı, çalışmasaati, birimno, birimadı, birimyönetici
b) Kısıtlamalar:
i. Bir çalışan sadece bir birimde çalışabilir.
ii. Bir çalışan birden fazla projede görev alabilir.
iii. Bir çalışanın sadece bir ünvanı olabilir.
2. Bir kliniğin hasta randevu kayıtlarını içeren veritabanı:
a) Nitelikleri: DoktorNo, DoktorAdı, HastaNo, HastaAdı, TelefonNo, Adres,
RandevuTarihi, RandevuSaati, MuayeneOdası
b) Kısıtlamalar:
i. Bir hasta aynı gün için birden fazla randevu alabilir.
3. Bir hastanede yatan hastalar ile ilgili veritabanı:
a) Nitelikleri: HastaNo, Adı, KoğuşNo, KoğuşAdı, YatakNo, İlaçNo, İlaçAdı,
Açıklama, Doz, UygulamaŞekli, GünlükBirim, BaşlangıçTarihi, BitişTarihi
i. Hastanın kullandığı bir ilacın günlük kullanım miktarı (GünlükBirim)
zaman içerisinde değişiklik gösterebilir.
1.
1NF:
Tekrarların oluşturduğu tablo:
proje_detay (sicilno, projeno, projeadı, çalışmasaati)
Diğer tablolar:
personel_detay (sicilno, personeladı, personelsoyadı, unvanno, unvanadı, birimno,
birimadı, birimyönetici)
Bağımlılıklar:
Tam bağımlıklar:
{sicilno, projeno} → çalışmasaati (proje_detay tablosu)
Kısmi bağımlılıklar:
{projeno} → projeadı (proje_detay tablosu)
Geçişken bağımlılıklar:
sicilno → unvanno, unvanno → unvanadı
sicilno → birimno, birimno → {birimadı, birimyönetici}
2NF:
Bağımlılıklar:
Kısmi bağımlıklar:
{sicilno, projeno} → çalışmasaati
Kısmi bağımlılıkların kaldırıldığı tablolar:
proje_bilgileri (sicilno, projeno, çalışmasaati)
projeler (projeno, projeadı)
Diğer tablolar:
personel_detay (sicilno, personeladı, personelsoyadı, unvanno, unvanadı, birimno,
birimadı, birimyönetici)
3NF:
Geçişken bağımlıklar:
sicilno → unvanno, unvanno → unvanadı
sicilno → birimno, birimno → {birimadı, birimyönetici}
Geçişken bağımlılıkların kaldırıldığı tablolar:
personel_bilgileri (sicilno, personeladı, personelsoyadı, unvanno, birimno)
birim_bilgileri (birimno, birimadı, birimyönetici)
unvan_bilgileri (unvanno, unvanadı)
Diğer tablolar:
proje_bilgileri (sicilno, projeno, çalışma_saati)
projeler (projeno, projeadı)
2.
Fonksiyonel Bağımlılıklar:
Doktor No → Doktor Adı
Hasta No → Hasta Adı, Telefon No, Adres
Hasta No, Randevu Tarihi, Randevu Saati →Doktor No, Muayene Odası
1NF:
Tekrar eden gruplar ortadan kaldırılır ve veri atomik halde saklanır.
Mevcut tablo yapısında bir hastaya birden fazla randevu verilmesi hasta bilgilerinin tekrarına
yol açar.
Bu sebeple hasta ve randevu tanımlamaları ayrıştırılmalıdır.
Ayrıca 1NF’da verinin atomik olarak saklanması gerektiği için hasta ve doktor adı nitelikleri
adı ve soyadı olarak ayrıştırılır.
Benzer şekilde hasta adresi uygun parçalara ayrıştırılır.
R1 (HastaNo, HastaAdı, HastaSoyadı, TelefonNo, Cadde, Sokak, Şehir)
R2 (HastaNo, RandevuTarihi, RandevuSaati, DoktorNo, MuayeneOdası, DoktorAdı,
DoktorSoyadı)
2NF:
Verilen fonksiyonel bağımlılıklara göre kısmi bağımlılık bulunmamaktadır.
Dolayısı ile herhangi bir değişiklik yapmaya gerek yoktur.
3NF:
Geçişken bağımlılıklar kaldırılır.
Verilen fonksiyonel bağımlılıklara göre R2 tablosunda DoktorNo geçişken bağımlılık
oluşturmaktadır.
R1(HastaNo, HastaAdı, HastaSoyadı, TelefonNo, Cadde, Sokak, Şehir)
R2a(HastaNo, RandevuTarihi, RandevuSaati, DoktorNo, MuayeneOdası)
R2b(DoktorNo, DoktorAdı, DoktorSoyadı)
3.
Fonksiyonel Bağımlılıklar:
HastaNo, İlaçNo, BaşlangıçTarihi → GünlükBirim, BitişTarihi
HastaNo → Adı, YatakNo
YatakNo → KoğuşNo
KoğuşNo → KoğuşAdı
İlaçNo → İlaçAdı, Açıklama, Doz, UygulamaŞekli
1NF:
Tekrar eden gruplar ortadan kaldırılır ve veri atomik halde saklanır.
Mevcut tablo yapısında bir hastaya birden fazla ilaç verilmesi hastanın ve koğuş bilgilerinin
tekrarına yol açar.
Bu sebeple hasta ve ilaç tanımlamaları ayrıştırılmalıdır.
Ayrıca 1NF’da verinin atomik olarak saklanması gerektiği için HastaAdı niteliği adı ve soyadı
olarak ayrıştırılır.
R1 (HastaNo, Adı, Soyadı, KoğuşNo, KoğuşAdı, YatakNo)
R2 (HastaNo, İlaçNo, İlaçAdı, Açıklama, Doz, UygulamaŞekli, GünlükBirim,
BaşlangıçTarihi, BitişTarihi)
2NF:
Kısmi bağımlılıklar kaldırılır.
Verilen fonksiyonel bağımlılıklara göre R2 tablosunda İlaç No niteliği kısmi bağımlılık
oluşturmaktadır.
R1 (HastaNo, Adı, Soyadı, KoğuşNo, KoğuşAdı, YatakNo)
R2a(HastaNo, İlaçNo, GünlükBirim, BaşlangıçTarihi, BitişTarihi)
R2b(İlaçNo, İlaçAdı, Açıklama, Doz, UygulamaŞekli)
3NF:
Geçişken bağımlılıklar kaldırılır.
Verilen fonksiyonel bağımlılıklara göre R1 tablosunda YatakNo ve KoğuşNo nitelikleri
geçişken bağımlılık oluşturmaktadır.
R1a (HastaNo, Adı, Soyadı, YatakNo)
R1b (YatakNo, KoğuşAdı)
R1c (KoğuşNo, KoğuşAdı)
R2a (HastaNo, İlaçNo, GünlükBirim, BaşlangıçTarihi, BitişTarihi)
R2b (İlaçNo, İlaçAdı, Açıklama, Doz, UygulamaŞekli)