250 likes | 459 Views
İlişkisel Veri Modeli ve İlişkisel Kısıtlar (The Relational Data Model and Relational Constraints). İlişki (Relation) Küme teorisi üzerine kurulan matematiksel bir kavramdır, İlk olarak Dr. E.F. Codd (IBM Research) tarafından 1970 yılında yayımlanan bir makalede ortaya çıkmıştır,
E N D
İlişkisel Veri Modeli ve İlişkisel Kısıtlar (The Relational Data Model and Relational Constraints)
İlişki (Relation) • Küme teorisi üzerine kurulan matematiksel bir kavramdır, • İlk olarakDr. E.F. Codd (IBM Research) tarafından 1970 yılında yayımlanan bir makalede ortaya çıkmıştır, • "A Relational Model for Large Shared Data Banks," Communications of the ACM, June 1970 Kavramlar
Bir ilişki (relation) bazı değerlerin oluşturduğu bir tablodur, • Tipik olarak bir ilişki satırlardan oluşan bir veri kümesi gibi düşünülebilir, • Her bir satırda bulunan değerler gerçek dünyadaki bir varlık (entity) ya da ilişki (relationship) ile ilgili bir durumu yansıtır, • Bir ilişki içindeki satırlar (row) resmi olarak (formal) tupleolarak adlandırılır, • Bir ilişki içindeki sütun başlıkları (columnheader) resmi olarak attribute(özellik) olarak adlandırılır, Resmi Olmayan (Informal) Tanım
Bir tablo içerisindeki her bir satırı diğerlerinden ayırt etmeye yarayan özellik ya da özellikler kümesine anahtar (key) adı verilir, • STUDENT tablosunda SSN • Bir tabloda satırları bir birinden ayıracak özellikler bulunamaz ise bu durumda her bir satıra ardışık olarak artan numaralar anahtar değeri olarak verilir, • Bu tür anahtarlar artificial (yapay) key ya dasurrogate (vekil) keyolarak adlandırılır İlişki Anahtarı (Relationship Key)
Tablolarla ilgili yapısal bilgileri tanımlayan yapıdır, • R(A1, A2, .....An) biçiminde ifade edilir, • R İlişki adı • A1, A2, .....An İlişkiye ait özellikler • Örneğin;CUSTOMER (Cust-id, Cust-name, Address, Phone#) • Bir tablo içerisinde bulunan her bir özellik (attribute) bir domainiçerisinde tanımlıdır, • Diğer bir deyişle her bir özelliğin alabileceği değerler için tanımlı bir aralık vardır, • Örneğin, öğrenci numarası 5 haneden oluşan bir pozitif tam sayı olmak zorundadır (domain = tam sayı veya integer). VT Şeması (Schema veya Description)
Bir tuple içerisinde, tablo için tanımlanmış olan özelliklerin değerleri tutulur ve bu değerler < … > arasında gösterilir, • <632895, "John Smith", "101 Main St. Atlanta, GA 30332", "(404) 894-2000"> • Yukarıdaki örnek 4 özellik barındırdığı için 4-tuple olarak adlandırılır, • Bir tablo tuple kümelerinden oluşur. Tuple (Row veya Satır)
Tablo içerisindeki özelliklerin domain değerlerine göre kartezyen çarpımı sonucu ortaya çıkan kümenin bir alt kümesidir, • Given R(A1, A2, .........., An), • r(R) dom (A1) X dom (A2) X ....X dom(An) • R(A1, A2, …, An) schemaof the relation • Rnameof the relation • A1, A2, …, An the attributesof the relation • r(R) = {t1, t2, …, tn} where each ti is an n-tuple • ti = <v1, v2, …, vn> where each vjelement-ofdom(Aj) Relation State
R (A1, A2) bir relationschema olsun • dom(A1) = {0,1},dom(A2) = {a,b,c} • dom (A1) X dom (A2) = tüm olası kombinasyonlar • {<0,a> , <0,b> , <0,c>, <1,a>, <1,b>, <1,c> } • Relation State r(R) dom(A1) X dom(A2) • Örneğin, r(R) = {<0,a> , <0,b> , <1,c> } olabilir • Bu küme Üç 2-tuplesolarak tanımlanır: <0,a> , <0,b> , <1,c> Relation State Örneği
Tuple değerleri • Tüm değerlerin atomik olduğu kabul edilir (bölünemez - indivisible) • Tuple içindeki her bir değer ilgili özelliğe (attribute) ait domain’in bir elemanı olmak zorundadır • NULL ilgili özellik için değerin bilinmediği ya da bir değer kullanmanın uygun olmadığı durumlarda kullanılır • Gösterim (Notation) • t tuple’ı için bileşen değerleri (component values) t[Ai] veya t.Ai biçiminde gösterilir • Anlamı: t tuple’ı için A özelliğinin (attribute) vi değeri • Benze şekilde: t[Au, Av, ..., Aw] Tablo (Relation) Özellikleri
Kısıtlama (constraint) bir ilişkinin (veya tablonun) bütün durumlarında (states) uyulması zorunlu olan koşulları ifade eder • Genel olarak 3 farklı kısıttan söz edebiliriz • Anahtar kısıtları (Keyconstraints ) • Varlık bütünlük kısıtları (Entity integrity constraints) • Referans bütünlük kısıtları (Referential integrity constraints) • Diğer bir dolaylı kısıtta domainconstraints’ dir • Bir tuple içerisindeki her bir değer ilgili özelliğin (attribute) domain kümesinden bir elemen olmalıdır • Eğer izin verilirse değer domain kümesi dışından bir değer olan NULL da olabilir. İlişkisel Bütünlük Kısıtları (Relational Integrity Constraints)
Superkey of R • Herhangi bir geçerli relation state’ inde r(R) var olan tuple değerleri için (t1, t2); t1[SK] t2[SK] • Bu koşul tüm geçerli relation state için korunmak zorundadır • Key of R • Minimal superkey anlamına gelir • Herhangi bir key aynı zamanda superkey’dir • Tersini söyleyemeyiz • Bir key içeren herhangi bir özellik (attribute) kümesi bir superkey’ dir • Minimal superkey aynı zamanda bir key’ dir • Bir tabloda birden fazla aday anahtar (candidate keys) varsa en kısa olanı seçilir (zorunluluk değildir) Key Constraints
Veritabanı içerisinde yer alan tabloların bir kümesini tanımlar • S = {R1, R2, ..., Rn} • S tüm veritabanı şemasını ifade eder • R1, R2…. Rn veritabanı içerisinde bulunan ilişkileri (tabloları) ifade eder İlişkisel Veritabanı Şeması (Relational Database Schema)
İlişkisel Veritabanı Şeması (Relational Database Schema) S = {EMPLOYEE, DEPARTMENT, DEPT_LOCATIONS, PROJECT, WORKS_ON, DEPENDENT}
Varlık Bütünlüğü (Entity Integrity) • Bir S veritabanında bulunan herhangi bir tablonun (R) Primary Key (PK) değeri NULL olamaz, t[PK] null for any tuple t in r(R) • Eğer PK değeri birden fazla özelliğin birleşimi ile oluşturulmuşsa, PK’yi oluşturan hiçbir özellik NULL olamaz
Referans Bütünlüğü (Referential Integrity) • Önceki kısıtların hepsi tek bir ilişki (relation) üzerinde geçerliydi • Referans kısıtları iki ilişki içerir ve iki tablonun satırları arasındaki kısıtları belirler • Bir tablodaki PK özelliği başka bir tabloya aktarılırsa Foreign Key (Yabancı Anahtar) özelliği kazanır • Bir FK değeri, referans veren ilişkiden alınan PK değeri yada NULL olabilir • Eğer FK değeri NULL olacaksa bu FK’in, ilgili tablonun PK’sının bir parçası olmaması gerekir,
İlişkisel Veritabanı ve Kısıtlamaların Gösterilmesi • Her bir relation (tablo) özelliklerden oluşan bir satır gibi gösterilir, • Relation isimleri özelliklerin üzerine yazılır, • PK özellikleri altı çizili yazılır, • FK özellikleri hangi tablodan geliyorsa bir okla gösterilir,
Veritabanına Veri Girilmesi • INSERT • DELETE • MODIFY
INSERT a tuple • DELETE a tuple • MODIFY a tuple • Düzenleme işlemleri esnasında herhangi bir bütünlük kısıtı ihlal edilemez • Aynı anda birden fazla düzenleme işlemi yapabilmek mümkündür • Bazı düzenleme işlemleri otomatik olarak yeni düzenlemeleri tetikler Veri Düzenleme ve Kısıtlar
Yapılmak istenen işlem iptal edilebilir (RESTRICT or REJECT option) • İşlem gerçekleştirilir ancak öncelikle kullanıcı ihlal konusunda uyarılır • Yapılan işlemle beraber yeni düzenlemeler tetiklenir ve hata düzeltilir (CASCADE option, SET NULL option) • Kullanıcı tanımlı bir hata düzeltme prosedürü çalıştırılır Bütünlük Kısıtlarının İhlali
INSERT işlemiaşağıdaki ihlallere yol açabilir : • Domain constraint: • Girilen değer tanımlı domain sınırlarında olmayabilir, • Key constraint: • Yeni satırla girilen key değeri tabloda zaten vardır, • Referential integrity: • Yeni satırdaki FK değeri ilgili tabloda var olmayan bir PK değerini gösterebilir, • Entity integrity: • Yeni satırdaki PK değeri NULL olabilir INSERT ihlalleri
DELETE işlemiyalnızca renferans kısıtlarının (foreign key constraint) ihlal edilmesine yol açar: • Eğer silinen bir PK diğer tablolarda FK olarak kullanılıyor ise; • RESTRICT option: silme işlemini gerçekleştirme • CASCADE option: silinen PK’e bağlı tüm FK satırlarını da sil • SET NULL option: silinen PK’e bağlı tüm FK değerlerini NULL yap • VT tasarlanırken silme işleminde ne yapılacağı mutlaka belirlenmelidir DELETE ihlalleri
Satırların yeniden düzenlenmesi domain constraint veya NOT NULL constraint ihlallerine yol açabilir • Updating the primary key (PK): DELETE ve INSERT işlemlerine benzer şekilde ihlaller olabilir, ne yapılacağı tasarım esnasında belirlenmelidir, • Updating a foreign key (FK): Referans kısıtının ihlal edilmesine yol açabilir, • Updating an ordinary attribute (neither PK nor FK): Sadece domain ihlallerinin neden olur. MODIFY ihlalleri