VERİ TABANI TASARIMI ve NORMALİZASYONU

Slides:



Advertisements
Benzer bir sunumlar
Microsoft Access Bu program Microsoft program paketinin içerisinde yer alan; çok büyük miktarlardaki verilerin depolanabileceği veritabanı oluşturmamıza.
Advertisements

ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
VERİ TABANI VE YÖNETİM SİSTEMLERİ
Veri Tabanı Tasarlama İlk kuralımız, olabildiğince bilgileri parçalamaktır.
Tablo oluşturma İlk olarak tabloları oluşturmamız gerekli..
VERİ TABANI TEMEL KAVRAMLAR.
4.VERİ TABANI TASARIMI ve NORMALİZASYONU
KAVRAMSAL MODEL ikinci aşama.
RELATIONAL DATABASE MAGAMENT SYSTEM (RDMS)
ER diyagramının tablolara dönüşümü
Normalizasyon Kuralları & SQL
İLİŞKİSEL VERİ MODELİ Tablolar ile Gösterim
Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği
3 Örnek Veritabanı Tasarımı
E-R Çizelgelerini İVTYS’ye Dönüştürme
Veri Tabanı Normalizasyonu Devrim ALTINKURT
VERİTABANI ve YÖNETİMİ
Varlık-İlişki Modeli Örneği
İndeksler Sibel SOMYÜREK.
İlişkisel Veri Modeli.
NORMALİZASYON Emin CELİLOĞLU
Tek Tablo İçinde Sorgulamalar
Veritabanı Yönetim Sistemleri Hızlı ve Kısa Giriş
VERİ TABANI ve YÖNETİMİ
Veri Tabanı Yönetim Sistemleri
Veri Tabanı Yönetim Sistemleri
4 Veri Bütünlüğü ve Constraint’ler
VERİTABANI TEMEL KAVRAMLARI
VTYS 2012 Mehmet Emin KORKUSUZ Ders - 02.
VERİ TABANI VE YÖNETİM SİSTEMLERİ  Birincil Anahtar Türleri  Access Veri Tabanında Bulunan İlişkiler  İlişkileri Tanımlama Bir – Çok İlişkisi Çok –
Veritabanı Yönetim Sistemleri-I
VIEW (BAKIŞ) OLUŞTURMA
Veritabanı Yönetim Sistemleri-I
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
ADRES DEFTERİMDE NELER VAR?. Arkadaşlarınızın, akrabalarınızın ve tanıdığınız diğer kişilerin adresleri, telefon numaraları, e-posta adresleri vb. bilgilerini.
Microsoft Office Access Yrd. Doç. Dr. Doğan AYDOĞAN.
VERİTABANI ve YÖNETİMİ
Veri Tabanı Yönetim Sistemleri 1 Ders 8 Normalleştirme
Veritabanı Tasarımı ve Yönetimi
NORMALİZASYON.
Veritabanı Kavramları
Microsoft Office Access
Veri Tabanı Yönetim Sistemleri I
Veritabanı Yönetim Sistemleri-I
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
Veritabanı ve Yönetim Sistemleri
Microsoft Office Access
SQL’ e Giriş Uzm. Murat YAZICI.
Veri Tabanı Yönetimi Ders 6
BTP102 VERİTABANI YÖNETİM SİSTEMLERİ 1
İLİŞKİSEL VERİ MODELİ Tablolar ile Gösterim
VERİ KAYNAKLARI YÖNETİMİ 5. ÜNİTE. GİRİŞ Bilgi sisteminin öğelerinden biride “veri yönetimidir”. Geleneksel yada çağdaş, birinci yada ikinci elden derlenen.
Veritabanı Kavramları
VERİTABANI YÖNETİMİ.
İnsan Kaynakları Bilgi Sistemleri
UNV13107 TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Veri tabanı Bilgisayar ortamında saklanan düzenli verilerdir. Bilgisayar ve ağ ortamındaki bilginin temel.
Yapısal Sorgulama Dili SQL VTYS Giriş Hafta 5 Ders Notu.
T.C. GİRESUN ÜNİVERSİTESİ MEHMET BAYRAK MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI İLİŞKİSEL VERİ MODELİ GÖSTETİMİ VELİ AKKIRAN VERİTABANI YÖNETİMİ Danışman.
MEHMET BAYRAK MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI
İLİŞKİSEL VERİ MODELİ GÖSTERİMİ
4.VERİ TABANI TASARIMI ve NORMALİZASYONU
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
VERİTABANI TEMEL KAVRAMLARI
ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
E-R Çizelgelerini İVTYS’ye Dönüştürme
İNDEKS.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
VERİTABANI YÖNETİM SİSTEMLERİ 2- Tasarım ve ER Modeli
Sunum transkripti:

VERİ TABANI TASARIMI ve NORMALİZASYONU

Veri Tabanı Tasarımı 1. Nesneler Tanımlanır: Nesne, çeşitli özellikleri bulunan bir varlıktır. Herhangi bir proje de öncelikle nesneler tanımlanır. Birkaç proje için nesnelere örnek verilecek olunursa, Kütüphane sistemi : Kitap, üyeler, türler, ödünç hareketleri E-ticaret sistemi : Ürünler, müşteriler, siparişler, teslimat, fatura bilgileri, üreticiler, tedarikçiler, dağıtıcılar... Futbol Ligi : Takımlar, sahalar, oyuncular, fikstür, hakemler, antrenörler Okul Sistemi : Öğrenciler, öğretmenler, dersler, derslikler Personel Sistemi : Çalışanlar, meslekler, çalışılan birimler, maaşlar, izinler Sözlük : kelimeler, anlamlar, diller Not : Tablolara isim verilirken mümkünse tekil isimler kullanılmalıdır. Böyle yapılırsa; hem daha anlaşılır bir tasarım yapılmış olur hem de daha sonra kodlama aşamasında karışıklığın önüne geçilmiş olur. Örneğin içinde Kitap ile ilgili bilgiler bulunduran tablonun adını Kitap koymak oldukça mantıklıdır.

Veri Tabanı Tasarımı 2. Her nesne için bir tablo oluşturulur: Her nesne için bir tablo oluşturulur ve her bir tabloya içereceği veriyi en iyi anlatan bir isim verilir. Tablo oluşturma işi, bir kağıt üstünde sembolik olarak gösterilebilir veya doğrudan MS Access, SQL Server, MySQL, Oracle ... gibi kullanılmakta olunan VTYS üstünden de oluşturulabilir. Tüm proje bitirilinceye kadar bu tablolar üzerinde muhtemel değişiklikler yapılabilir.

Veri Tabanı Tasarımı 3. Her bir tablo için bir anahtar alan seçilir: Veritabanındaki herhangi bir veriye erişilmeden önce tabloya erişilir. Bir veritabanında üzerinde en çok işlem yapılan nesne grubu genellikle tablolardır. Bu aşamaya kadar hangi tabloların oluşturulacağına karar verildi. Her bir tablonun içinde hangi bilgilerin saklanılacağı kabaca tasarlanır. Bu aşamada, tabloda yer alacak her bir kaydı bir diğerinden ayırabilecek bir sütuna ihtiyaç duyulur.

Veri Tabanı Tasarımı 4. Nesnelerin gerekli her bir özelliği için tabloya bir sütun eklenir: Tablo adları tanımlandıktan ve anahtar adları belirlendikten sonra, tablolara sırasıyla adını veren nesnelerin her bir özelliği için bir alan (sütun) eklenir. Örneğin, kitap için; Kitap no, ISBN no, kitap adı, yazarı, türü, sayfa sayısı, özeti, fiyatı, baskı yılı... İPUCU : 1. En başa birincil anahtar olarak belirlenen alanı eklemek bir kural değildir, ancak tablonun anlaşılırlığı ve göze hoş görünmesi açısından tercih edilmesi faydalı olacak bir tekniktir. 2. Genellikle, yapay birincil anahtar alanlar tablo adı ile başlar ve sonunda ID vardır. Ogrenci tablosu için ogrenciID, Personel tablosu için personelID gibi.

Veri Tabanı Tasarımı 5. Tekrarlayan nesne özellikleri (çoka çok ilişki) için ek tablolar oluşturulur : Akılda hep şu soru olmalıdır: veri tekrarı olacak mı? Veri tekrarı olacaksa bir yerlerde hata yapılıyor demektir. Bu durumda eldeki tablonun en az bir tabloya daha ayrılması gerekiyor demektir. Bazı durumlarda veri tekrarı gerekli olabilir. Örneğin, bir öğrencinin vize notundan bütünlemeye girmesi gibi. Bu durumda, eski notun da silinmemesi için veri tekrar girilmiş olur. Ancak sorgu esnasında son kayıt çağrılır.

Veri Tabanı Tasarımı 6. Anahtar Alan Belirlenir : İlişkisel veritabanında, tablodan herhangi bir tek kayda erişmek için mutlaka bir farklı özellik sağlanmalıdır ve bu özellik de anahtar alan tarafından sağlanır.

Veri Tabanı Tasarımı 7.Tablolar arasındaki ilişkiler tanımlanır : Her biri bir nesneye dair özellikleri barındıran tabloların tümü göz önüne alınır ve birbirleri ile olan ilişkileri tanımlanmaya çalışılır. Örneğin kitabı ödünç verebiliriz. Bu durumda, ödünç tablosu ile Kitap tablosu ilişkili olacaktır. Kitap üyelere ödünç verilir. Bu durumda, ödünç ile üyeler arasında da bir ilişki vardır. Türler ile Kitap arasında bir ilişki vardır, bir kitabın en az bir türe dahil olması gerekir.

Normalizasyon veri tabanı tasarım aşamasında veri tekrarını, veri kaybını veya veri yetersizliğini önlemek için gerçekleştirilen işlemlerdir. Normalizasyon(Ayrıştırma), tanım olarak ise ; veritabanlarında çok fazla sütun ve satırdan oluşan bir tabloyu tekrarlardan arındırmak için daha az satır ve sütun içeren alt kümelerine ayrıştırma işlemidir

Normalizasyon yapılırken uyulması gereken kuralların her birine normal form adı verilir. Birinci Normal Form (1NF) İkinci Normal Form (2NF) Üçüncü Normal Form (3NF) Daha yüksek düzey formlar var ama çok fazla kullanılmıyor.

Normalizasyon Amaçları Veri Bütünlüğünün Sağlanması Gereksiz veri tekrarını önleyerek verilerdeki bozulmaları önlemek Uygulamadan Bağımsızlık Uygulama değişse bile veritabanı tutarlı olarak çalışmalı Performansı Arttırmak Veri tekrarı en aza iner ve arama hızlı olur

Normalizasyon 1NF Bir satırdaki bir alan yalnızca bir tek bilgi içerebilir.

Normalizasyon 1NF Örnek uyeno ad eposta 1 Ayşe ayse@gazi.edu.tr 2 Zerrin zerrin@gmail.com,zerrin1992@yahoo.com 3 Mehmet mehmet@gmail.com,mehmet@hotmail.com

Normalizasyon 1NF Örnek uyeno ad 1 Ayşe 2 Zerrin 3 Mehmet uyeno eposta ayse@gazi.edu.tr 2 zerrin@gmail.com zerrin1992@yahoo.com 3 mehmet@gmail.com, mehmet@hotmail.com

Örnek:2 1NF

1NF Örnek:2

Örnek:2 1NF

1NF 1NF Örnek:3 Normal Olmayan Form İlişkisel veri tabanı modelinin temel kuralına göre bütün niteliklerin aldığı değerler atomik (tek ve basit) olmalıdır. Aşağıdaki DAĞITIM tablosu bu kurala uymamaktadır, bu yüzden normal değildir. müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 1,2,3,4,6 300,200,400,200,100 2 6 Ankara 1,2 300,400 3 200 4 2,4,5 200,300,400

Birinci Normal Form Uygulandığında: müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 300 2 200 3 400 4 6 100 Ankara 5

Birinci Normal Formun Sorunları Birinci normal formdaki bir tablo bazı alanlarda tekrarlı verilere sahiptir. Örneğimizde şehir_kodu ve şehir_adı alanlarında her müşteri için tekrarlı veriler vardır. Bu tekrarlar ekleme, silme ve güncelleme işlemlerinde sorunlara neden olacaktır.

Satır Ekleme Sorunu Başka bir müşterinin bilgilerinin (müşteri_no, şehir_kodu, şehir_adı) girilmesi için mutlaka o müşteriye bir dağıtım işleminin yapılması (gönderi_no ve miktar değerlerinin girilmiş olması) gerekiyor. müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 300 … 4 5 400 5 35 İzmir

Satır Silme Sorunu Bir müşteriye tek bir dağıtım yapıldıysa (örn. 3 no’lu müşteri), o dağıtım işlemi iptal edildiğinde, sadece gönderi_no ve miktarı değil, o dağıtımın yapıldığı müşteri hakkındaki diğer bilgiler de (müşteri_no, şehir_kodu, şehir_adı) yok olur. müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 300 2 200 … 3 6 Ankara

Güncelleme Sorunu 1 numaralı müşteri Ankara’ya taşınırsa, bu müşteri ile ilgili tüm satırların güncelleştirilmesi gerekecektir. Eğer tablo çok büyük ise, sadece bir müşteri ile ilgili küçük bir değişiklik bile binlerce kaydın güncelleştirilmesini gerektirebilir. müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 300 2 200 3 400 4 …

Normalizasyon 2NF 2NF İkinci normal formda, ilişkisel tablonun her bir anahtar olmayan sütunu birincil anahtara kısmi bağımlı değil, tam işlevsel bağımlı olmalıdır. VEYA 1. Tabloda bir birincil anahtar olmalı ve anahtar olmayan sütunlar birincil anahtara bağımlı olmalı. 2. Birincil anahtar birden fazla sütundan oluşuyorsa tablodaki veriler her iki sütuna da bağımlı olmalıdır

Normalizasyon 2NF Örnek Turnuva Yıl kazanan Kazanan doğum tarihi Doğum yeri X 2000 Ayşe 24.01.1992 Ankara Y 2001 Ahmet 03.12.1990 İzmir

Normalizasyon 2NF Örnek Turnuva Yıl kazanan X 2000 Ayşe Y 2001 Ahmet Kazanan doğum tarihi Doğum yeri Ayşe 24.01.1992 Ankara Ahmet 03.12.1990 İzmir

2NF Örnek:2

2NF Örnek:2

Birinci Normal Form Uygulandığında (Önceki örnek): müşteri_no şehir_kodu şehir_adı gönderi_no miktar 1 34 İstanbul 300 2 200 3 400 4 6 100 Ankara 5

İkinci Normal Form Birinci normal formdaki sorunlardan (en azından güncelleme sorunundan) kurtulmak için nitelikler arasındaki işlevsel bağımlılıktan yararlanılarak birinci normal form (1NF) tablolarının birden fazla tabloya dönüştürülmesi sonucunda ikinci normal forma (2NF) ulaşılır. İkinci normal formda, ilişkisel tablonun her bir anahtar olmayan sütunu birincil anahtara kısmi bağımlı değil, tam işlevsel bağımlı olmalıdır.

İkinci Normal Form şehir_kodu ve şehir_adı nitelikleri (müşteri_no, gönderi_no) birleşik anahtarının sadece müşteri_no niteliği üzerinde tam işlevsel bağımlıdır. O halde şehir_kodu ve şehir_adı nitelikleri müşteri_no ile beraber ayrı bir tablo oluşturmalıdır. DAĞITIM(müşteri_no, şehir_kodu, şehir_adı, gönderi_no, miktar) MÜŞTERİLER(müşteri_no, şehir_kodu, şehir_adı) MİKTARLAR(müşteri_no, gönderi_no, miktar)

İkinci Normal Form Uygulandığında: müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 Ankara 3 4 müşteri_no gönderi_no miktar 1 300 2 200 3 400 4 6 100 5 MÜŞTERİLER MİKTARLAR

İkinci Normal Formun Sorunları Birinci normal formdaki güncelleme sorununu ikinci normal forma dönüştürme ile ortadan kaldırmış olsak ta, ikinci normal formda da ekleme ve silme sorunları olabilmektedir.

Satır Ekleme Sorunu MÜŞTERİLER tablosuna yeni bir müşteri kaydı girilmediği sürece yeni bir şehir tanımı yapılamaz. İzmir ilini tabloya dahil edebilmek için İzmir’de bulunan bir müşteriye ihtiyaç vardır. müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 Ankara 3 4 35 İzmir

Satır Silme Sorunu Tablodan bir müşteri silindiğinde, eğer o şehirdeki tek müşteri ise, şehir_kodu ve şehir_adı bilgileri de yok olacaktır. müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 Ankara 3 4 5 35 İzmir

Normalizasyon 3NF Bir tablo için, anahtar olmayan tüm nitelikler anahtara geçişsiz bağımlı BAŞKA BİR İFADEYLE Anahtar olmayan sütunlar anahtar sütuna tam bağımlı olmalı Anahtar olmayan sütuna bağımlı olmamalı.

Normalizasyon Örnek 2 3NF

Normalizasyon Örnek 2 3NF

Önceki Örnek: müşteri_no şehir_kodu şehir_adı 1 34 İstanbul 2 6 Ankara gönderi_no miktar 1 300 2 200 3 400 4 6 100 5 MÜŞTERİLER MİKTARLAR

Üçüncü Normal Form Birinci normal formdaki sorunlardan kurtulmak için nitelikler arasındaki kısmi işlevsel bağımlılıkları ortadan kaldırmıştık. İkinci normal formdaki sorunlardan kurtulmak için de nitelikler arasındaki geçişli işlevsel bağımlılıkları ortadan kaldırmamız gerekir. Örneğimizde “şehir_kodu  şehir_adı” işlevsel bağımlılığının geçişli olduğunu belirtmiştik . Bir anahtara bağlı olmayan bu bağımlılığı ayrı bir tabloya dönüştürerek üçüncü normal formu (3NF) elde edebiliriz.

Üçüncü Normal Form Uygulandığında: ŞEHİRLER MİKTARLAR şehir_kodu şehir_adı 6 Ankara 34 İstanbul 35 İzmir müşteri_no gönderi_no miktar 1 300 2 200 3 400 4 6 100 5 MÜŞTERİLER müşteri_no şehir_kodu 1 34 2 6 3 4 5 35

Normalizasyon 4NF Birincil anahtar alanlar ile anahtarı olmayan alanlar arasında, birden fazla bağımsız bire-çok ilişkisine izin verilmez. Her bağımsız bire çok ilişki için ayrı bir tablo oluşturulması gerekir.

Normalizasyon Örnek ogrno bolum spor 123 Fizik Kayak Kimya Tenis

Normalizasyon Örnek 123 Fizik Kayak Kimya Tenis 123 Fizik Kimya 123 ogrno bolum spor 123 Fizik Kayak Kimya Tenis ogrno bolum 123 Fizik Kimya ogrno spor 123 Kayak Tenis

çok-değerli bağımlılık Dördüncü Normal Form Burada bir öğrenci birden çok bölüme kayıt olabilmekte ve birden çok spor etkinliğine katılabilmektedir. Bu nedenle ÖğrNo ile Bölüm ve ÖğrNo ile Spor arasındaki ilişkiler birer işlevsel bağımlılık değil çok-değerli bağımlılık (multivalued dependency) halindedir. ÖĞRENCİ ÖğrNo Bölüm Spor 123 Fizik Kayak Kimya Tenis 999 ÖğrNo  Bölüm ÖğrNo  Spor çok-değerli bağımlılık

Dördüncü Normal Form 123 numaralı öğrencinin bir bölüme daha kayıt olması yada bir spor etkinliğine daha katılması halinde iki kayıt daha ilave edilmelidir. Bu gibi yineleme sorunlarını ortadan kaldırmak için ÖĞRENCİ ilişkisi ikiye ayrılırak dördüncü normal form (4NF) oluşturulur. ÖĞRENCİ_BÖLÜM ÖĞRENCİ_SPOR ÖğrNo Bölüm 123 Fizik Kimya 999 Biyoloji ÖğrNo Spor 123 Kayak Tenis 999 Yüzme

Normalizasyon 5NF Veri tekrarlarını önlemek için her bir tabloyu mümkün olduğunca küçük parçalara bölmek gerekir.

Normalizasyon Örnek ogrenci (no, adi, soyadi, turu) Doktora/Y.lisans/Lisans ogrenciturleri (no, turu)

Normalizasyon Örnek

Normalizasyon Örnek

Normalizasyon Örnek

Örnek 1 Ö.NO Ö.AD Ö.SOYAD DERS_NO DERS_ADI VIZE FINAL H.NO H.AD H.SOYAD 2001001 Ahmet Solmaz 202 Matematik 2 70 60 11 Özlem UÇAR 203 Fizik 2 80 40 204 Bilgisayar Mühendisliğine Giriş 2 45 3 Aydın CARUS 205 Atatürk İlkeleri ve İnkılap Tarihi 2 90 95 9 Zeki DURMUŞ 206 Türk Dili 2 75 12 Nebahat YILDIZ 2001005 Seyhan Gülmez 2001002 Selim 702 Veri Tabanı Yönetimi 50 6 Altan MESUT 2001003 Vardar 2001004 Sezai Kantar 65 55

Verilen şema 1. Normal Formda (atomik değerler) OKUL (Ö.No, Ö.Ad, Ö.Soyad, Ders_No, Ders_Adı, Vize, Final, H.No, H.Ad, H.Soyad) 2. NF’ye geçerken kısmi bağımlılıklar ortadan kaldırılır NOTLAR(Ö.No, Ders_No, Vize, Final) ÖĞRENCİLER(Ö.No, Ö.Ad, Ö.Soyad) DERSLER(Ders_No, Ders_Adı, H.No, H.Ad, H.Soyad)   3. NF’ye geçerken geçişli bağımlılıklar ortadan kaldırılır DERSLER(Ders_No, Ders_Adı, H.No) HOCALAR(H.No, H.Ad, H.Soyad)

Örnek 2 UrunNo UrunAd ParcaNo ParcaAd Miktar UreticiNo UreticiAd UreticiSehir UreticiTel 10026201 Pavilion DV2620ET 1 Intel Core 2 Duo T5450 100 HP Seattle 123456789 2 Kingston 512MB DDR2 3 Samsung 160GB HDD 4 Nvidia GeForce 8400M 10026501 Pavilion DV2650ET Intel Core 2 Duo T7500 Kingston 1024MB DDR2 10220012 Satellite A200-1N2 Intel Core 2 Duo T5250 102 Toshiba Tokyo 335678912 Samsung 1024MB DDR2 Maxtor 120GB HDD Intel GMA X3100

Verilen şema 1. Normal Formda (atomik değerler) Urun_Parca (UrunNo, UrunAd, ParcaNo, ParcaAd, Miktar, UreticiNo, UreticiAd, UreticiSehir, UreticiTel)   1NF → 2NF (kısmi bağımlılıklar giderilir) Urun_Parca (UrunNo, ParcaNo, ParcaAd, Miktar) Urunler (UrunNo, UrunAd, UreticiNo, UreticiAd, UreticiSehir, UreticiTel) 2NF → 3NF (geçişli bağımlılıklar giderilir) Urunler (UrunNo, UrunAd, UreticiNo) Ureticiler (UreticiNo, UreticiAd, UreticiSehir, UreticiTel)

Örnek 3 SiparisNo Tarih UrunAd UrunNo Adet MusNo MusAd MusSoyad 1 23.11.2007 Nokia 6300 57463 875 Ali Korkmaz Kingston 2 GB USB 73624 2 Samsung D600 72352 932 Selin Atasoy 3 24.11.2007 Nokia 5070 71224 123 Kamil Sönmez 4 Philips DVP 5160/12 90876 452 Metin Kaplan 5 25.11.2007 Samsung Digimax S850 98123 786 Kemal Durukan 6 Sinbo SBS-4414 Baskül 35465 7 Canon Powershot A560 95293 Kingston 2 GB SD 37285 8 26.11.2007 321 Ece Çağlayan

Verilen şema 1. Normal Formda (atomik değerler) SIPARIS (SiparisNo, Tarih, UrunAd, UrunNo, Adet, MusNo, MusAd, MusSoyad)   1NF → 2NF (kısmi bağımlılıklar giderilir) SIPARIS_URUN (SiparisNo, UrunNo, Adet) SIPARIS_MUSTERI (SiparisNo, Tarih, MusNo, MusAd, MusSoyad) URUN (UrunNo, UrunAd) 2NF → 3NF (geçişli bağımlılıklar giderilir) SIPARIS_ MUSTERI (SiparisNo, Tarih, MusNo) MUSTERILER (MusNo, MusAd, MusSoyad)

Örnek 4 FilmNo FilmAdı Yılı Yönetmeni Senaristi ŞirketID ŞirketAdı 110912 Pulp Fiction 1994 Quentin Tarantino MF Miramax Films Roger Avary 114369 Se7en 1995 David Fincher A. Kevin Walker NL New Line Cinema 416496 Bandidas 2006 Joachim Rønning Luc Besson EC Europa Corp. R. Mark Kamen Espen Sandberg 1375666 Inception 2010 Christopher Nolan WB Warner Bros Pic.

Verilen şema 1. Normal Formda (atomik değerler) Verilen şema 1. Normal Formda (atomik değerler). Anahtar alanlar Film_No, Yönetmeni ve Senaristi. Filmler (FilmNo, Film_Adı, Yılı, Yönetmeni, Senaristi, ŞirketID, ŞirketAdı)  1NF → 2NF (Yönetmeni ve Senaristi dışındaki tüm nitelikler FilmNo niteliğine kısmi olarak bağımlı) FilmYönetmenSenarist (FilmNo, Yönetmeni, Senaristi)  Filmler (FilmNo, FilmAdı, Yılı, ŞirketID, ŞirketAdı)  2NF → 3NF (ŞirketAdı niteliği ŞirketID niteliğine geçişli olarak bağımlı) Filmler (FilmNo, FilmAdı, Yılı, ŞirketID)  Şirketler (ŞirketID, ŞirketAdı) 3NF → 4NF (Çok-değerli bağımlılık var: Yönetmen ve Senaristin aynı tabloda olması gereksiz tekrarlara neden oluyor) FilmYönetmen (FilmNo, Yönetmeni) FilmSenarist (FilmNo, Senaristi) NOT: 4NF anlatırken verdiğimiz ÖĞRENCİ(ÖğrNo, Bölüm, Spor) örneğine benziyor

Örnek 5 KitapNo KitapAdı Yazarı YayıneviAdı YayıneviYeri TürID TürAdı 100 Kar Orhan Pamuk İletişim Yayınları İstanbul 1 Roman 101 Benim Adım Kırmızı YK Kültür Sanat 102 Kar Kokusu Ahmet Ümit Doğan Kitap 103 Aşk Köpekliktir 2 Öykü 104 Hırsız Köpek Muzaffer İzgü Bilgi Yayınevi Ankara 105 Oracle 11g Teoman Dinçel KODLAB 4 Bilgisayar 106 Visual Basic 10 Memik Yanık Seçkin Yayınları 107 Taş Meclisi Jean C. Grange 108 Anna Karenina Lev Tolstoy 3 Klasik 109 İstatistiğe Giriş Vasfi N. Tekin 5 Akademik

Verilen şema atomik değerlere sahip olduğu için 1NF'de Verilen şema atomik değerlere sahip olduğu için 1NF'de. Aynı zamanda KitapNo alanı tek başına PK olabildiği için kısmi bağımlılık araştırması yapmaya gerek yok (2NF'de). PK haricindeki alanlar içinde geçişli bağımlılık var (TürID  TürAdı & YayıneviAdı  YayıneviYeri). KİTAPLAR(KitapNo, KitapAdı, Yazarı, YayıneviAdı, TürID) TÜRLER(TürID, TürAdı) YAYINEVLERİ(YayıneviAdı, YayıneviYeri) Eğer şemada YazarID ve YayıneviID alanları bulunsaydı: KİTAPLAR(KitapNo, KitapAdı, YazarID, YayıneviID, TürID) YAYINEVLERİ(YayıneviID, YayıneviAdı, YayıneviYeri) YAZARLAR(YazarID, YazarAdı) 3NF 3NF

Eğer bir kitabın birden çok yazarı olabilseydi: Bu durumda KitapNo tek başına PK olamaz, "KitapNo, YazarID" ikilisi PK olurdu. Tablo 2NF'de olmazdı. YazarAdı niteliği YazarID niteliğine kısmi bağımlı olur, YAZARLAR(YazarID, YazarAdı) tablosu 1NF  2NF geçişte oluşurdu. Bir kitabın birden çok türü de olabilseydi: "KitapNo, YazarID, TürID" üçlüsü PK olurdu. TÜRLER(TürID, TürAdı) tablosu da 1NF  2NF geçişte oluşurdu. Çok değerli bağımlılık ta oluşurdu: KİTAPLAR(KitapNo, KitapAdı, YayıneviID) YAZARLAR(YazarID, YazarAdı) TÜRLER(TürID, TürAdı) YAYINEVLERİ(YayıneviID, YayıneviAdı, YayıneviYeri) KİTAP_YAZAR(KitapNo, YazarID) KİTAP_TÜR(KitapNo, TürID) 1NF  2NF 2NF  3NF 3NF  4NF

Genel Kavramlar Anahtar (Key) Anahtar, bir kaydı tanımlamak için kullanılan veri öğesidir. Genel olarak iki tür anahtar kullanılmaktadır: Süper Anahtar (superkey) ve Aday Anahtar ( candidate key). Süper anahtarlar bir varlığı tek olarak tanımlar ve bir veya birden fazla veri öğesinden oluşabilir. Süper anahtar olmayan ancak anahtar olabilecek durumdaki veri öğelerine aday anahtar denir. Örneğin “Ad”, “Okulno”, “tlf” gibi veri öğeleri birer aday anahtardır. Ancak “ad” veri öğesi birincil anahtar için iyi bir seçim değildir. Çünkü ad bilgisi birçok kişide aynı olabileceğinden varlığı tek olarak tanımlamaz.

Veritabanı neden kullanılır? İlişkiler Yabancı Anahtar Yabancı Anahtar Müşteri No Firma Fiyat 1 1000 YTL 2 250 YTL 3 350 YTL 4 700 YTL 5 1200 YTL 6 100 YTL 7 150 YTL Birincil Anahtar Firma No Adres 1 A Çanakkale Cad. 43/5 2 B Kayabaşı mah. A Blok 8/4 3 C Gazi Mah 6/7 4 D Birincil Anahtar Müşteri No Müsteri adı Mesleği 1 Ahmet mimar 2 Sema öğretmen 3 Serdar mühendis 4 Zerrin emekli 5 Mehmet Öğretim elemanı 6 Defne Doktor 7 Elif avukat

Genel Kavramlar Anahtarlar ile iki varlık arasında bir ilişki kurulabilmektedir. İlişki kurmak için iki anahtar tipi kullanılmaktadır: birincil(primary) ve ikincil (secondary) anahtar.

Genel Kavramlar Birincil (primary) anahtar, bir kaydı tek olarak tanımlamak için kullanılan bir veri öğesidir. Örneğin bir eğitim kurumundaki öğrenci kaydı için ogrenci_no bilgisi tek olacağından bu öğe bir birincil anahtar yapılabilir. İkincil (secondary) anahtar, normalde bir kaydı tek olarak tanımlamaz fakat aynı özellikleri taşıyan bir kaydın numarasını veya genelde ilişkilerde kullanılan kayıt numarasını tanımlar.

Genel Kavramlar Birincil (primary) anahtar tanımlanması zorunlu değildir ancak tavsiye edilmektedir. Birincil anahtar olan sütun boş değerleri (null) veya birbirinin aynı olan değerleri içeremez.

Genel Kavramlar İkincil (secondary) anahtar, normalde bir kaydı tek olarak tanımlamaz fakat aynı özellikleri taşıyan bir kaydın numarasını veya genelde ilişkilerde kullanılan kayıt numarasını tanımlar.

Genel Kavramlar Yabancı anahtar, başka bir tablodaki anahtar alanı gösteren alanlara denilir. Yabancı anahtar genelde diğer tablolarla ilişki kurmak için kullanılır.

Joining (ilişkilendirme) Genel Kavramlar Joining (ilişkilendirme) İki veya daha fazla tabloyu birlikte sorgulama işlemine join ismi verilir. İlişkisel veritabanının en temelinde birden fazla tablo üstünde birlikte işlem yapabilmek yatar. Bu sayede verilerin tekrarlanması önlenmiş olur ve sonuçta veri yönetimi kolaylaşır. Örneğin, Kitap tablosunda, Kitabın bir tekil numara ile listesini tutmak ve ödünç listesinde de bu Kitabın kim tarafından alındığının, geri getirilip getirilmediğinin kaydı tutulmaktadır. Bazen, bu iki tablodaki bilgilere de bir tek sorgu sonucu olarak ihtiyaç duyulabilir.

Zorlayıcı (Constraint) Genel Kavramlar Zorlayıcı (Constraint) Herhangi bir alan için girilebilecek verileri kısıtlayıcı kurallara zorlayıcılar denir. İlgili alana girilebilecek değerleri sınırlayan bir deyim yazılır. Yanlış bilgi girişini engeller ve verilerin doğru girilmesini zorunlu hale getirir.

View (Görüntü) Genel Kavramlar Bazen, tabloları olduklarından farklı gösterecek filtrelere ihtiyaç duyulur. Bu türden işlevler için VIEW kullanılır. VIEW ’ler, saklanmış sorgulardan ibarettirler. Aslında tablo gibi kullanılsa da halihazırda böyle bir tablo veritabanında bulunmaz, sadece view(görüntüsü) bulunur. VIEW ’ler şu görevler için kullanılır: Kullanıcıların bazı kritik tabloların sadece belli sütunlarını veya satırlarını görmesi istenildiğinde, Kullanıcıların, çeşitli birim dönüşümlerinden geçmiş değerler görmeleri gerektiğinde, Halihazırdaki tablolarda var olan verilerin başka bir tablo formatında sunulması gerektiğinde Çok kompleks sorguları basitleştirmek için Not : MSAccess ’de VIEW oluşturulamaz.

Kaynaklar http://ali.pau.edu.tr/2012bahar/veritabani/hafta_2_1%20normalizasyon.pdf http://sibelsomyurek.com/veritabani/ders_notlari.html http://altanmesut.trakya.edu.tr/vt/