VERİTABANI YÖNETİMİ İlişkisel Veritabanı 4.HAFTA ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişkisel Veri Tabanı İlişkisel veri tabanı, birbirinden farkı tablolara yerleştirilmiş olan verilerin birbirleri ile belirli alanlara göre ilişkilendirilerek düzenlenen veri tabanlarıdır. İlişkisel veri tabanları birden fazla tablodan oluşabilir. İlişkisel veri tabanlarında veriler tablolarda birbirleri ile ilişkili bir şekilde saklanmaktadır. En geniş kullanım alanına sahip veri modelidir. • Oracle 7.6. ve SQL server bu modeli temel alır. İlişkisel modele bir alternatif nesneye dayalı veri modelidir. Bu iki modelin kaynaşmasından nesne ilişkisel veri modelleri ortaya çıkmıştır. • UniSQL, Informix Universal Server, Oracle 8.0, DB2 bazı örnekleridir. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişkisel Veritabanı İlişkisel veri tabanı modeli ilk defa 1970 yılında Dr. E.F. Codd tarafından ortaya atılmıştır. Model, veri tabanına kayıt edilmiş bilgilerin belli kurallara uymasını kapsar. İlişkisel veri modeli İlişkisel veri tabanı dillerini ortaya çıkarmıştır. İlişkisel Veritabanı Sistemleri büyük miktarlardaki verilerin güvenli bir şekilde tutulabildiği, bilgilere hızlı erişim imkanlarının sağlandığı, bilgilerin bütünlük içerisinde tutulabildiği ve birden fazla kullanıcıya aynı anda bilgiye erişim imkanının sağlandığı programlardır. İlişkisel veritabanı günümüzde en yaygın kullanılan ilişkisel veritabanı sistemlerinden biridir. En çok kullanılan ilişkisel Veritabanı Yönetim Sistemlerine Oracle, MS SQL Server, Sybase, gibi veritabanı yönetim sistemlerini örnek olarak verebiliriz. Günümüzde hemen tüm VTYS’ler ilişkisel veri modelini kullanırlar. Bu model verileri birden çok ilişkili tablolarda tutabilir ve böylece “İlişkisel Veri Tabanı” olarak adlandırılan veri tabanlarını oluştururlar. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Neden İlişkisel VT? 1. 2. 3. 4. Bilgi tekrarını azaltır. Veriyi sorgulama imkanı verir. Veriyi işlemek daha kolaydır. Gereken disk alanı azdır. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişkisel Veri Tabanı İlişkisel Veri Tabanı altında inceleyeceğimiz alt kavramlar: • Sunucular •Tablolar • Sütunlar • Satırlar • Değerler • Kısıtlamalar •Anahtarlar • Şemalar • İlişkiler ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Sunucu-Veri tabanı-tablo-kayıt ilişkileri Sunucu Veritabanı Numara Adi Soyadı Vize 1 2 3 4 Ali Aylin Aydın Sami Kaya Kul Recep Sert 75 76 80 67 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Kayıtlar Tablo Sunucu: SQL Server: Microsoft firmasına ait bir veritabanı sunucu yazılımıdır. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişkisel Veri Tabanın Genel bir Yapısı Birden fazla tablodan oluşabilir. Tablolar en genel halde satır ve sütundan oluşur. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Tablolar ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Kavramlar Tablo (Table): İlişkisel veri tabanı sistemlerinde, aynı özelliklere sahip veri kümelerinin saklandığı yapılar tablo olarak isimlendirilir. Tablo 2 boyutlu bir matris; Kolonları ve satırları var. Kayıt (Record): Veri tabanı sistemi içinde bulunan tablolardaki her bir satırdaki bilgiye kayıt adı verilir. Nitelik (Attribute): Veri tabanında, tablolara yerleştirilen her kayıt için tanımlanmış olan her bir veri alanı nitelik olarak adlandırılır. Tablodaki sütunlar, kayıtların niteliklerini verir. Anahtar Nitelik (Key Attribute): Tablolar içindeki kayıtların diğerlerinden ayrıştırılması ve ihtiyaç durumunda diğer tablolardaki kayıtlar ile olan bağıntılarının kurulabilmesi için her kaydı tek (unique) olarak tanımlamaya yarayan anahtar nitelik belirlenir. Birleşik Anahtar Nitelik (Composite Key): Birden fazla niteliğin bir araya gelmesi sonucu oluşan anahtarlardır. Süper Anahtar Nitelik (Super Key): Bir tabloya ait kayıtların tek olarak tanımlanmasını sağlayan her bir nitelik grubu bir süper anahtar olarak tanımlanır. Bir tabloya ait birçok süper anahtar seti bulunabilir. SA={{kod, ad}, {kod}, {ad, tarih, yer}, {tarih, yer},…} Aday Anahtar Nitelik (Candidate Key): Süper anahtar nitelik kümesinin bir alt kümesidir. Süper nitelikten farkı, süper nitelik içerisindeki minimal elemanlardan oluşmasıdır. Birincil Anahtar Nitelik (Primary Key): Bir ya da daha fazla niteliğin bir araya gelmesi ile tanımlanır. Tablo içindeki her kayıtın sadece bir kez tanımlanmasını garanti etmek için kullanılır. Aday anahtar kümesi içinde bulunan elemanlar içinde seçilen en uygun anahtardır. Yabancıl Anahtar Nitelik (Foreign Key): İlişkisel veri tabanı sistemlerinde, farklı tablolarda tutulan veriler birbirleri ile birincil ve yabancıl anahtarlar yardımıyla ilişkilendirilir. Yabancı anahtar, bir tabloya girilebilecek verileri başka bir tablonun herhangi bir alanında yer alabilecek ©Veritabanı Yönetimi İbrahim Çil veriler ile sınırlandırmak ve ilişkilendirmek Prof. içinDr.kullanılır. Tablo örneği Tablolar veri tabanının ana nesneleridir. Bir veri tabanında verilerin saklanmış olduğu nesneler tablo olarak adlandırılır. Bir veri tabanı en az bir tablodan oluşur. Veri tabanını oluşturan tablolar ise “data field” adı verilen veri alanlarından oluşmaktadır. Tabloları oluşturan sütunlar alanları, satırlar ise kayıtları göstermektedir. NO 1 2 3 4 5 ADI ALİ VELİ AHMET MEHMET HASAN DOĞUM_TARĠHİ 12/01/1990 22/09/1989 23/10/1992 12/05/1993 12/10/1980 DOĞUM_YERİ ANKARA İSTANBUL İZMİR DENİZLİ MANİSA Yukarıdaki tabloda; NO, ADI, DOĞUM_TARİHİ, DOĞUM_YERİ olarak dört adet sütun başlığı, Alan isimleri(sütun başlıkları) hariç beş adet satır bulunmaktadır. Her kayıt, bir kişiye birçok yönüyle bağlıdır. Örneğin, üçüncü kayıt için; 3 numaralı personelin adı AHMET, doğum tarihi 23/10/1992ve doğum yeri İZMİR olduğu bilgisine ulaşılır. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişkisel veritabanında yer alacak olan tabloların aşağıdaki özelliklere sahip olması gerekmektedir; Tablolar satır ve sütunlardan oluşur. Her sütunun alacağı isim birbirinden farklı olmalıdır. Her satır birbirinden farklı olmalıdır yani birbiri ile tamamen ayni olan iki kayıt kullanılmamalıdır. Satırların ve sütunların sırasının nasıl olacağı önemli değildir. İlişki (Relationship) Örneği İlişki adı Özellikler (Attributes)- sütunlar NO 1 2 3 4 5 ADI ALİ VELİ AHMET MEHMET HASAN Anahtar alan DOĞUM_TARĠHİ 12/01/1990 22/09/1989 23/10/1992 12/05/1993 12/10/1980 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil DOĞUM_YERİ ANKARA İSTANBUL İZMİR DENİZLİ MANİSA Satırlar (Tuples) Kayıtlar PERSONEL Tablolar Bir veritabanı tablolarda saklanan verilerden oluşur. Tablolar verilerin satırlar ve sütunlar halinde düzenlenmesiyle oluşan veri grubudur. Örneğin öğrenci bilgilerini veritabanında saklamak için tablo oluşturulur: • Ogrenci_bilgileri Tablo içindeki her bir bilgi kayıt, Sütunlar ise alan olarak isimlendirilir. Örneğin öğrenci bilgileri tablosunda • • • • Alan Öğrenci numarası, adı NO AD SOYAD TEL soyadı, 125 ALİ KAR 32332 tel 349 VELİ KAYA 54324 bilgileri yer alabilir ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Tablolar Tablo veri tabanı mantığı içerisindeki en önemli kavramdır. Tablolar veritabanlarının temelidir, çünkü tablolar bilgileri organize olmuş bir şekilde tutar ve bizim bilgilere ulaşmamızı sağlar. Veritabanı binlerce, milyonlarca parçalanmış bilgiye etkili ve doğru şekilde ulaşmamızı sağlar. Veri tabanı aslında tablolarda saklanan verilerden oluşur. Tablo belli bir konu hakkındaki datalar topluluğudur . Tablodaki veri sütun ve satırlarla ifade edilir. Her sütün, bir bilgi kategorisi olan bir alanı temsil eder. Her satır ise bir öğe için bilgi saklayan kayıttan oluşur. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Bir kaydın veri tabanında saklanması • Bir kayıt, bir kişi, bir yer, yada bir olay gibi hakkında bilgi saklanacak olan tek ve bağımsız bir varlığı (entity) tanımlar. • Mesela bir satış siparişi dosyasındaki bir “sipariş” tipik bir varlıktır. • Bir varlığı tanımlayan her bir özelliğe alan denir. Örneğin, sipariş no, sipariş tarihi, sipariş miktarı, vb. • Bu alanların alabileceği spesifik değerler sipariş kaydını teşkil eden alanlarda bulunabilir. • Bir tablo içindeki her bir kayıt, o kaydın çağırılmasında kullanılabilecek en az bir tane tanımlayıcı alan içermelidir. Bu tanımlayıcı alana anahtar alan adı verilir. • Bu örnekte sipariş numarası anahtar alandır çünkü her bir siparişe kendine özgü bir tanımlayıcı numara verilir. Varlık: Sipariş Alanlar Sipariş no sipariş tarihi Parça no sipariş miktarı 4340 02/08/2013 1580 2 Anahtar alan ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Kayıtlar İlişkisel Veri Modeli - Kavramlar Özellikler (Attributes) Sicil No Adı Soyadı Giriş Tarihi Doğum Tarihi 1 Mehmet Taner 06/03/2004 15/10/1970 2 Aysu Şahin 15/10/2003 01/08/1966 3 Kemal Atlı 29/05/2002 10/02/1971 4 Ali Demirci 12/05/2005 18/07/1974 5 Gülin Merter 07/08/2007 23/02/1972 Birincil Anahtar Satır Sayısı Sütun Sayısı ÜNVANLAR Yabancı Anahtar Sıra No Unvan_Kodu Açıklama Terfi Tarihi Sicil No 1 SM Satış Müdürü 06/03/2004 1 2 PM Proje Müdürü 15/10/2003 1 3 MUH Mühendis 29/05/2002 2 4 UZMUH Uzman Mühendis 12/05/2005 2 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Satırlar (Tuples) İlişki (Relation) PERSONEL Tablolar • İlişkisel veritabanlarının temelini oluşturan yapıdır. • Satır ve sütunlardan oluşur. Örnek bir tablo yapısı: Öğrenci No Ad Soyad E - Posta 101 Ali bilgi [email protected] 102 Veli ak [email protected] 103 Can kara [email protected] Örnek tabloda yer alan her bir satır farklı bir öğrencinin bilgilerini içerir. Her sütun ise kendi içinde aynı tip bilgiyi depolar. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Sütunlar- Alanlar • Tablodaki her sütun benzersiz bir ada sahiptir ve farklı veriler içerir. • Her sütunun ilişkilendirilmiş bir veri tipi vardır. • Örnek tabloda “Öğrenci No” sütunu sayısal veri tipi ile ilişkilendirilmişken diğer alanlar metin veri tipi ile ilişkilendirilmiştir. Tc_Kimlik Ad Soyad E_Posta Telefon 12342378891 Ejder Ayçin [email protected] 02324208994 23421124534 Hakan Aşan [email protected] 02324208923 23474367832 Talip Arsu [email protected] 05555308998 98324534244 Melih Durmuş [email protected] 05332274392 •Tabloların her bir özelliğini tutar. •Her sütunun belli bir tipi vardır.( Metin, Tarih,…) ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Satırlar- Kayıtlar • Tablodaki her satır farklı bir veri girişini (öğrenciyi) temsil eder. • Tablonun biçimi nedeniyle satırların her biri aynı niteliklere sahiptir. • Her bir satır “Kayıt” olarak da ifade edilebilir. • Örnek tabloda üç farklı veri girişi (kayıt) görülmektedir. Tc_Kimlik Ad Soyad E_Posta Telefon 12342378891 Ejder Ayçin [email protected] 02324208994 23421124534 Hakan Aşan [email protected] 02324208923 23474367832 Talip Arsu [email protected] 05555308998 98324534244 Melih Durmuş [email protected] 05332274392 •Her satır bir kaydı temsil eder. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Değerler • Tablodaki her satır sütunlara karşılık gelen bir dizi değerden oluşur. • Her değer, sütunu tarafından belirtilen veri tipinde olmalıdır. • Örnek tabloda yer alan “Ahmet”, “yumak”, “101” ve benzeri sayı ve metin katarlarının her biri değer olarak ifade edilir. Tc_Kimlik Ad Soyad E_Posta Telefon 12342378891 Ejder Ayçin [email protected] 02324208994 23421124534 Hakan Aşan [email protected] 02324208923 23474367832 Talip Arsu [email protected] 05555308998 98324534244 Melih Durmuş [email protected] 05332274392 Girilen her bir veri değere karşılık gelir. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Anahtarlar • Anahtarlar satırları (kayıtları) tanımlayan özel sütunlardır (alanlardır). • Farklı veri tipleri anahtar olarak belirlenebilir. • Anahtar olarak belirlenen sütunların içinde yer alan her bir satır (değer) benzersizdir. Örnek tabloda yer alan “Öğrenci No” alanı anahtar olarak belirlenmek için uygun sütundur. Tc_Kimlik Ad Soyad E_Posta Telefon 12342378891 Ejder Ayçin [email protected] 02324208994 23421124534 Hakan Aşan [email protected] 02324208923 23474367832 Talip Arsu [email protected] 05555308998 98324534244 Melih Durmuş [email protected] 05332274392 •Anahtarlar satırları (kayıtları) tanımlayan özel sütunlardır (alanlardır). ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişkiler Tc_Kimlik Ad Soyad E_Posta Telefon 12342378891 Ejder Ayçin [email protected] 02324208994 23421124534 Hakan Aşan [email protected] 02324208923 23474367832 Talip Arsu [email protected] 05555308998 98324534244 Melih Durmuş [email protected] 05332274392 Sinav_No Tc_Kimlik Sinav_Notu 1 12342378891 80 2 23421124534 90 3 23474367832 85 4 12342378891 75 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Metadata Veri tabanının yapısı hakkındaki verilere metadata adı verilir. ▪Tablo isimleri ▪Sütun isimleri ▪Tablo ve sütunların özellikleri vb. Tablo no Tablo adı 1 Müşteriler 3 7 2 Firmalar 3 4 3 Satışlar 3 Sütun sayısı Satır sayısı Sütun no Sütun adı Veri türü 7 Metadata: Veri hakkında veri. VTYS’de bir varlığın tüm özelliklerinin tanımlanması, ör: Ad Veri türü Büyüklük Biçim veya özel karakteristikler Dosyaların ya da ilişkilerin özellikleri ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Ad, içerik, notlar, vs. Uzunluğu Tablo no 1 id int 4 1 2 Mus_adi char 50 1 3 meslegi char 50 1 Anahtarlar Bir veri tabanının etkin bir şekilde çalışabilmesi için tablonun alanlarından bir veya kayıtları tek başına temsil edebilecek birkaç alan kullanılarak anahtarlar oluşturulur. Bu anahtarlar kayıtların sıralanmasında, aranmasında ve ilişkilerin kurulmasında yardımcı olur. Bunun dışında anahtarlar alanlara çift bilgi girilmesini de önlerler. Birincil Anahtar Nitelik (Primary Key): Bir ya da daha fazla niteliğin bir araya gelmesi ile tanımlanır. Tablo içindeki her kayıtın sadece bir kez tanımlanmasını garanti etmek için kullanılır. Aday anahtar kümesi içinde bulunan elemanlar içinde seçilen en uygun anahtardır. Aday anahtarlar arasından seçilmiş anahtar. Bu anahtar sadece bir özellikten oluşabileceği gibi birden fazla özelliğin birleşiminden de oluşabilir. Çalışan varlık türünde SİCİLNO veya TC_KİMLİK_NO özellikleri birincil anahtar olarak seçilebilir. Yabancıl Anahtar Nitelik (Foreign Key): İlişkisel veri tabanı sistemlerinde, farklı tablolarda tutulan veriler birbirleri ile birincil ve yabancıl anahtarlar yardımıyla ilişkilendirilir. Bir yabancıl anahtar veri tabanı tablosunda bulunan bir©Veritabanı niteliktir. Yönetimi Prof. Dr. İbrahim Çil Anahtarlar Genel anahtar (superkey) ilişki dahilinde satırı eşsiz tanımlayan özellik veya özellikler kümesi Basit anahtar- yalnız bir özellikten oluşan anahtar Karmaşık anahtar- birkaç özellikten oluşan anahtar Aday anahtar (candidate key)-Altkümesi genel anahtar olmayan genel anahtar, başka değişle, her hangi biçimde parçalandığı zaman anahtarlık özelliğini kaybeden karmaşık anahtar; her bir basit genel anahtar aday anahtardır. Birincil anahtar-Aday anahtarlar içinden seçilmiş aday anahtar Yabancı anahtar-Bir ilişkinin , başka bir ilişkinin aday anahtarı ile eşleşen özellik veya özellikler kümesi ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Anahtarlar (devamı) Aday anahtarın özellikleri: eşsizlik- her bir satır için eşsiz değer alması küçülmezlik- karmaşık aday anahtarın her hangi altkümesinin anahtar özelliği yoktur Birincil anahtarın özellikleri: özellikler kümesi en küçük olmalı; değerlerinin değişme olasılığı düşük olmalı; eşsizlik özelliğini kaybetme olasılığı düşük olmalı ismi çok sayıda karakterle ifade edilmemeli; kullanıcı tarafından kolay kullanıla ve anlaşıla bilir olmalı; satır için anlam ifade etmeli ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişkisel Bütünlük (relational İntegrity) Boş (Null) değerler Özelliğin, verilmiş satır için uygulana bilmeyen veya şuan belli olmayan değerini ifade eder Varlık bütünlüğü (Entity İntegrity) Taban ilişkide birincil anahtar özelliği boş değer alamaz Erişimsel Bütünlük (Referential İntegrity) İlişkide yabancı anahtar varsa, bu anahtarın değeri, ana ilişkinin her hangi bir satırındaki aday anahtarının değerine eşit olmalı veya boş değer almalıdır Sınırlamalar 1. Kullanıcılar veya veri tabanı yöneticisi tarafından belirlenmiş kurallar ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Anahtar Alan Anahtar Alan: Varlık kümesinde yer alan her varlığı kesin olarak tanımlamaya yarayan özelliklere aday anahtar adı verilir. Çalışan varlık türünde SİCİLNO ve TC_KİMLİK_NO özellikleri aday anahtar olabilir. Fakat Çalışan_ADI özelliği olamaz, çünkü aynı ada sahip birden fazla Çalışan olabilir. Eğer bir üniversitede tüm öğrencilerin numaraları birbirinden farklı ise, öğrencileri ayırt etmek için öğrenci numarası yeterlidir. Bu durumda “öğrenci numarası”, “öğrenci” varlık kümesi için aday anahtar ya da kısaca anahtardır. Birleşik (Composite) Anahtar: İki veya daha fazla özellikten oluşan aday anahtar. ÖĞRENCİ NO, YIL ve DÖNEM alanları birleşik anahtar olabilir. Süper Anahtar Nitelik (Super Key): Bir tabloya ait kayıtların tek olarak tanımlanmasını sağlayan her bir nitelik grubu bir süper anahtar olarak tanımlanır. Bir tabloya ait birçok süper anahtar seti bulunabilir. SA={{kod, ad}, {kod}, {ad, tarih, yer}, {tarih, yer},…} Aday Anahtar Nitelik (Candidate Key): Süper anahtar nitelik kümesinin bir alt kümesidir. Süper nitelikten farkı, süper nitelik içerisindeki minimal ©Veritabanı Yönetimi elemanlardan oluşmasıdır. Prof. Dr. İbrahim Çil Kısıtlamalar (Constraınts) Veri tabanında depolanan bilgiler arasında bir bütünlük olması yani verilerin birbirleri ile uyumlu olması gerekmektedir. Bütünlük kısıtlamaları, veri tabanında depolanacak verileri kısıtlayan koşullar olarak adlandırılır. Bir veritabanına kısıtlamalar uygulanarak sadece geçerli verilerin depolanması sağlanır. 1. PRIMARY KEY 2. FOREIGN KEY 3. NULL / NOT NULL 4. CHECK 5. UNIQE 6. DEFAULT ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Bütünlük Kuralları Ana tabloda bir kayıt yoksa alt tablolarda da hiçbir kayıt olamaz. Alt tablolara ait bir tablodan bir satır silinmesi yada değiştirilmesi durumunda alt tablolara bakılır. Eğer alt tablolarda ilişkili kayıtlar varsa ana tablo satırının silinmesine izin verilmez. Alt tablolarda girilen bilginin ana tabloya bağlı alanı kontrol edilmeli. Farklı bir bilginin girilmesine izin verilmez. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Anahtar Kısıtlamaları Veri tabanında depolanan bilgiler arasında bir bütünlük olması yani verilerin birbirleri ile uyumlu olması gerekmektedir. Bütünlük kısıtlamaları, veri tabanında depolanacak verileri kısıtlayan koşullar olarak adlandırılır. Bir veritabanına kısıtlamalar uygulanarak sadece geçerli verilerin depolanması sağlanır. Bütünlük kısıtlamalarının sağlanmasında anahtar kısıtlamaları önemli bir role sahiptir. Herhangi bir tablodaki her bir satır için kullanılan anahtarın tek olması gerekmektedir. Aksi takdirde kayıtlar arasında tutarsızlıklar meydana gelebilmektedir. Birincil anahtar(primary key) veya yabancı anahtar(foreign key) türlerinden birisi seçilerek kısıtlamaların gerçekleştirilmesi sağlanmaktadır. Anahtar Kısıtlamaları: Bütünlük kısıtlamalarının sağlanmasında anahtar kısıtlamaları önemli bir role sahiptir. Herhangi bir tablodaki her bir satır için kullanılan anahtarın tek olması gerekmektedir. Aksi takdirde kayıtlar arasında tutarsızlıklar meydana gelebilmektedir. Birincil anahtar(primary key) veya yabancı anahtar(foreign key) türlerinden birisi seçilerek kısıtlamaların gerçekleştirilmesi sağlanmaktadır. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Anahtar Kısıtlamaları Birincil anahtarlar hiçbir zaman NULL(boş) veya birbiri ile ayni olan değerleri içeremez. Yabancı anahtar, bir tabloya girilebilecek verileri başka bir tablonun herhangi bir alanında yer alabilecek veriler ile sınırlandırmak ve ilişkilendirmek için kullanılır. OGRENCI TCKİMLİK_NO AD SOYADİ ADRES BÖLÜMÜ Yabancı anahtar Birincil anahtar NOTLAR ÖĞRENCİNO Birincil anahtar ÖĞRENCİNO ORTALAMANOTU HARFKARŞILIĞI ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Veri Kısıtlamaları Tablo tasarlarken kullanılan verilerin tutarlılığını sağlamak ve ne tür değerlere sahip olabileceğini belirlemek için de kısıtlamalar getirilebilir. Veri kısıtlamaları sırasında kullanılan bazı kısıtlamalar Not Null, Default, Unique ve Check’tir. 1. Not null kısıtlaması; Veri girişi yapılacak bir tablodaki sütunun değer alıp (NULL) almaması (NOT NULL) gerektiğini belirlemek için kullanılan kısıtlamadır. 2. Default kısıtlaması; Veri girişi sırasında bir alanın alabileceği varsayılan bir değer atamak için kullanılır. 3. Unique kısıtlaması; Tablodaki bir alana girilen verinin tekrarsız olmasını sağlamak için kullanılır. 4. Check Kısıtlaması; Kontrol kısıtlayıcı olarak da adlandırılır. Veri girişlerinin belirtilen kriterlere göre yapılmasını sağlar. Örneğin kişinin T.C. Kimlik numarası girilirken 11 haneden fazla değer girilmesi engellenebilir. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil KISITLAMALARIN KULLANIMI Boş Geçilemez : ogr no int NOT NULL Birincil Anahtar : ogr no int NOT NULL PRIMARY KEY • • CONSTAINT pkkey PRIMARY KEY (ogr_no, ders_kodu) CHECK : vize int CHECK(vize>0) • CONSTAINT chkvize CHECK (vize>=0 AND vize<=100) CONSTAINT chchod CHECK (urun_kod IN (‘A089’, ‘A090’, ‘A091’, ‘A100’) OR urun_kod LIKE ‘A9[0-9][0-9]’)) • UNIQE : pers_id int NOT NULL UNIQE (MSSQL, ORACLE) UNIQE(pers_id) CONSTAINT un_deger UNIQE (pers_id, Soyadi) • FOREIGN KEY : CREATE TABLE notlar (ogr_no in FOREIGN KEY PREFERENCES ogrenci(ogr_no), ders_kodu varchar(25) FOREIGN KEY PREFERENCES ders (ders_kodu) (Oracle) • CREATE TABLE notlar ( ogr_no int, ders_kodu varchar (25), vize int, final int, CONSTAINT fk_ogr_no FOREIGN KEY (ogr_no) REFERENCES ogrenci (ogr_no) CONSTAINT fk_dkod FOREIGN KEY (ders_kodu) REFERENCES ders(ders_kodu) ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişki kurmadaki hatalar Tablolardaki anahtar alanların null olması İlişki kuracak alanların veri tiplerinin aynı tipde olmaması İlişki kurulacak alanlarda tutarsız bilgilerin mevcut olması ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil 35 Tablo tasarımındaki sıra Normalizasyon kurallarına göre tablolar oluşturulur. Her tabloda birincil anahtarlar tespit edilir. İlişkileri kuracak ortak alanlar tespit edilir. İlişkiler kurulur Kayıtlar girilir. ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil 36 Şemalar Veritabanında tablonun tasarımına şema adı verilir. Şema veri içermez; veritabanının taslağı olarak kullanılabilir. Şema; tabloları, sütunları ve her tablonun birincil anahtarları ile birlikte varsa yabancı anahtarları da gösterir. Birincil Anahtarlar Yabancıl Anahtarlar ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Örnek Bir Veritabanı Şeması ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişki şeması- Liste İlişkinin adı ve ilişki niteliklerinin adlarından oluşan tanım deyimine ilişki şeması denir. ÖGRENC ilişki şeması. ÖGRENC(Ögr-No, Ögr-Adı,Ögr-Adres) ÇALISMA(Ögr-No.,Ders-Kodu) DERS(Ders-Kodu,Ders-Adı) İlişkisel tablolar Örnek Veritabanı şeması (database Schema) Sınav(kod, tarih,ad, süre, yer, açıklama) Yada; Takım (no, ad, şehir, kyılı) Oyuncu (no, ad, adres, adress, dtarihi, takımno) Pozisyon (no, ad) Oynar(oyuncu,pozisyonno) ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişki Şeması-Liste Veri tabanında tutulan tabloların ve bu tablolardaki veriler ile ilgili diğer bilgilerin tanımladığı yapıları gösterir. Veri tabanı şeması, veri tabanı tasarımı aşamasında hazırlanır ve genelde çok sıklıkla değişmesi beklenmeyen bir yapıdır. Sınavlar (kod, tarih, ad, süre, yer, açıklama) Hazırlayan (sınavKodu, öğretmenKodu (sınavKodu sınavlar tablosunu, öğretmenKodu öğretmenler tablosunu referans verir), tarih) Sınavlar Skodu ad tarih yer açıklama süre Hazırlayanlar öğretmenKodu skodu ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil tarih İlişki Şemaları Varlık-İlişki Diyagramı Kitap Adı Sayfa Sayısı Kitap_No KİTAP N N Bastığı Yazar_Kitap M YAZAR Yayınevi No 1 YAYIN EVİ Yazar Adı Yayınevi Adı Yazar Soyadı Yazar No İlişki Şeması YAZAR (Yazar No, Yazar Adı, Yazar Soyadı) YAYINEVİ (Yayınevi No, Yayınevi Adı) KİTAP (Kitap No, Kitap Adı, Sayfa Sayısı, Yayınevi No) YAZAR_KITAP(Yazar No, Kitap No) ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişkiler Tc_Kimlik Ad Soyad E_Posta Telefon 12342378891 Ejder Ayçin [email protected] 02324208994 23421124534 Hakan Aşan [email protected] 02324208923 23474367832 Talip Arsu [email protected] 05555308998 98324534244 Melih Durmuş [email protected] 05332274392 Sinav_No Tc_Kimlik Sinav_Notu 1 12342378891 80 2 23421124534 90 3 23474367832 85 4 12342378891 75 ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişkisel Veri Tabanı: İlişkiler Tablolar arası bağlantı ilişkiler aracılığıyla sağlanır. İlişkiler iki tabloda bulunan ortak alanlarla yapılır. İki tabloyu ilişkilendirmek ilişkisel veri tabanının en temel çalışma şeklidir. Böylece farklı tablolardaki bilgilerin birbirleriyle etkili biçimde kullanılması sağlanmış olur. Veri tutarlılığının sağlanması için ilişkiler çok önemlidir. İlişkisel veri tabanının en önemli özelliği ilişkilerdir. Tablolar arasındaki verileri bağlamak için çeşitli ilişki türleri vardır. Örneğin Şekil 3 deki gibi ÖĞRENCİ tablosundaki birden fazla satır DERS tablosundaki birden fazla satırla bağlantılıdır. ÖĞRENCİ 1 Öğrenci No Adı Soyadı E - Posta 101 102 103 Ali Fatma Ruhu Can Kara Say [email protected] [email protected] N [email protected] 1 DERS Ders Kodu Ders Adı 201 Programlama 4 105 207 Veri Tabanı Fizik ALINAN_DERS Öğrenci No N Notu Harf Notu 101 Ders Kodu 201 90 AA 101 105 80 BB 102 105 75 CB 102 ©Veritabanı 207 Yönetimi Prof. Dr. İbrahim Çil 85 BA Kredisi 4 3 Örnek Veritabanı (ŞİRKET) Varlık-İlişki Şeması Satış Fiyat KDV Oranı N Ürün ID 1 ÜRÜN N KATEGORİ AİT OLDUĞU Kategori Adı N Kategori ID Ürün Adı TEDARİK EDEN Adet ÜRÜN_SİPARİŞ N Adres Tarih 1 SİPARİŞ Firma ID Firma Adı FİRMA Adres N 1 Telefon MÜŞTERİ_SİPARİŞ MÜŞTERİ Telefon ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Ad Soyad Müşteri ID İlişki Şeması ÜRÜN (Ürün No, Ürün Adı, Satış Fiyatı, Kategori No, Firma No) KATEGORİ (Kategori No, Kategori Adı, KDV Oranı) FİRMA (Firma No, Firma Adı, Adresi, Telefon) MÜŞTERİ (Müşteri No, Adı, Soyadı, Adresi, Telefonu) SİPARİŞ (Sipariş No, Tarih, Müşteri No) ÜRÜN_SİPARİŞ (Sipariş No, Ürün No, Adet) ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil İlişkisel Model ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil Veritabanı Şeması ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil ©Veritabanı Yönetimi Prof. Dr. İbrahim Çil