VERİ TABANI YÖNETİM SİSTEMLERİ Yrd. Doç. Dr. Fırat YÜCEL Akdeniz Üniversitesi Enformatik Bölümü Ders Hakkında • Dersin Kredisi : Veri Tabanı I : 3+1 Veri Tabanı Yönetim Sistemleri : 3+0 • Dersin Yarıyılı : Güz • Derse Devam : %70 zorunlu • Kullanılan Yazılım: Ms SQL Server Management 2014 • Değerlendirme : Mutlak değerlendirme (Ortalama >= 60) • Ara sınav (Vize)……………… %30 • Ödev/Proje……………………. %10 • Yarıyıl Sonu Sınavı…………. %60 Ders İçeriği o o o o o o o o o o o o o o 1. Hafta: Veri Tabanlarına Giriş 2. Hafta: Veri Tabanı Sistemi Temel Kavramları ve Mimarisi 3. Hafta: İlişkisel Veri Modeli ve İlişkisel Veri Tabanı Kurulumu 4. Hafta: Veri Tabanı Tasarımı ve Normalizasyonu 5. Hafta: SQL (Yapısal Sorgulama Dili) 6. Hafta: SQL (Yapısal Sorgulama Dili) 7. Hafta: Aritmetiksel Operatörler ve İşleçler 8. Hafta: Karmaşık Sorgular (Birden Fazla Tablo Üzerinde Sorgular) 9. Hafta: Karmaşık Sorgular (Birden Fazla Tablo Üzerinde Sorgular) 10. Hafta: Tetikleyiciler (Triggers) 11. Hafta: Görünümler (Views) 12. Hafta: Şema Düzenlemeleri (Schema Modification) 13. Hafta: ER Modeli ile Veri Modelleme 14. Hafta: XML: Genişletilebilir İşaretleme Dili Başarılı Olabilmek için Bazı Öneriler • Derslere düzenli bir şekilde devam etmek • Verilen proje ve ödev çalışmalarını zamanında ve eksiksiz şekilde teslim etmek • Derste notlar almak, daha sonradan bu notları incelemek, üzerinde düşünüp anlamak, yeni fikirler üretmek • Derste uygulamalara katılmak, varsa ders dışında bilgisayar ortamında ilgili program üzerinde uygulamaları tekrar etmek • Ders öğretim üyesi ile sağlıklı bir iletişim ortamı kurmak • • • • Ofis : Akdeniz Üniversitesi Enformatik Bölümü E-Posta : fyucel@akdeniz.edu.tr Sosyal ağ Web sitesi : firatyucel.com Veri Tabanı Sistemlerine Giriş Veri Tabanları ve Veri Tabanı Kullanıcıları Veri Tabanı (Database) • Veri tabanı, birbiriyle ilişkili verilerin bir koleksiyonudur. • Modern dünyada hayatımızın birçok alanında kullanılmaktadır. Örneğin; Bir otel ya da uçak/otobüs rezervasyonunda, Banka hesap işlemlerinde, Kütüphane katalog taramasında, Hastane randevu ve protokol işlemlerinde, Elektronik olarak bir ürün sipariş ederken veya satın alırken, • Marketlerde alışveriş yaptıktan sonra kasada, • E-devlet işlemlerinde,… • • • • • Toplumların Gelişimi Tarım Sanayi Bilgi Bir soru • Aşağıdaki iki cümle anlam bakımından aynı mıdır, farklı mıdır? 1. «Hava durumu ile ilgili verileri aldım.» 2. «Hava durumu hakkında bilgileri aldım.» Veri (Data) • Veri, kendi başına bir anlam ifade etmeyen işlenmemiş (ham) bilgi parçacığıdır. • Bilgi, verilerin işlenerek anlamlı bir şekilde bir araya getirilmesiyle oluşur. Veri 10 bilgisayar Bilgi Geleneksel Veri Tabanlarından Modern Veri Tabanlarına… • Geleneksel veri tabanlarında sayısal ve metin şeklinde veriler tutuluyordu. • Günümüz modern veri tabanlarında (multimedya veri tabanları) bunlara ilaveten multimedya öğeleri de yer almaktadır. • Resim • Video • Konum (Coğrafi Bilgi Sistemleri) • Modern veri tabanı sistemlerinde ayrıca çok miktardaki verilerden (big data) çıkarımlar yapan «karar destek sistemleri» yer almaktadır. Veri Tabanının Temel Nitelikleri • Veri tabanı, gerçek dünyanın bir parçasıdır. Çoğu zaman «mini dünya» (miniworld) veya «söylem evreni» (universe of discourse, UoD) olarak adlandırılır. • Veri tabanı, verilerin mantıksal olarak organize edilmiş halidir. Rastgele bir araya getirilmiş veriler, veri tabanı kavramı dışındadır. • Veri tabanı, özel amaçlarla tasarlanan, oluşturulan ve üretilen verilerden oluşur. Veri Tabanı Yönetim Sistemi (DBMS) • Veri tabanı yönetim sistemi (database management system, DBMS) veri tabanını oluşturmak ve işlemek için kullanıcıları yetkilendiren bir program koleksiyonudur. DB DBMS Kullanıcı DBMS’nin İşlevleri DBMS, değişik kullanıcılar ve uygulamalar tarafından veri tabanı üzerinde tanımlama, oluşturma, değiştirme ve paylaşma işlemlerini yöneten genel amaçlı bir yazılım sistemidir. Tanımlama (Defining) • Veri tabanında saklanan veriler için veri tiplerinin, mimarinin ve veri kurucuların tanımlanması ile ilgili işlemleri içerir. Buradaki tanımlamalar meta-data olarak adlandırılır. Oluşturma (Constructing) • DBMS tarafından kontrol edilen bazı saklama medyaları içerisinde verinin saklanması işlemleridir. Düzenleme (Manipulating) • Özel verileri geri döndürmek için hazırlanan sorgulamalar, veri tabanının güncellenmesi ve verilerden raporlar oluşturulması işlemleridir. Paylaşım (Sharing) • Veri tabanına çok sayıda kullanıcının veya programın eş zamanlı erişimine izin vermektir. Meta-Data • Veri tabanı oluşturma süreci, verilerin saklanması için veri tipleri, yapıları ve veri kurucularının tanımlanması işlemlerini içerir. Veri tabanı tanımlamaları, bir katalog formunda DBMS içerisinde tutulur. Bu verilere «meta-data» adı verilir. Uygulama Programı, Sorgu, İşlem • Uygulama programı (application program), DBMS’ye sorgular ve istekler göndererek veri tabanına erişim sağlar. • Sorgu (query), genellikle veri tabanından bazı verilerin dönmesini sağlayan ifadelerdir. • İşlem (transaction), veri tabanından bazı verileri okumak veya veri tabanına bazı verileri yazmak için yapılan işlemlerdir. • Koruma (protection), DBMS’nin diğer bir işlevidir. Zararlı yazılımlara karşı donanımsal veya yazılımsal sistem koruması önemlidir. • Zaman zaman verilerin kaybına karşı veri tabanındaki verilerden yedekler alınması gerekmektedir. Bu işleme yedekleme (maintaining) denir. Basitleştirilmiş Veri Tabanı Sistemi Kullanıcılar/Programcılar Veri Tabanı Sistemi DBMS Yazılımı Uygulama Programları/Sorguları İşlem Yazılımı Sorgular/Programlar Erişim Yazılımı Saklanan Veri Veri Tabanı Tanımlamaları (Meta-Data) Veri Tabanı Bir Veri Tabanı Örneği • Örnek olarak, UNIVERSITE adlı bir veri tabanı içerisinde yer alan OGRENCI, DERS, DONEM, SINAV_SONUC, ONKOSUL adlı 5 dosyada tutulan aynı türdeki verileri düşünelim. • Bu veri tabanını tanımlamak için, her bir dosyada tutulacak kayıtların hangi alanlardan oluşacağını belirlemek gerekmektedir. • Her bir alanın veri türü (string, integer, char,…) belirlenmelidir. • Orta düzey ve büyük veri tabanları için veriler arasındaki ilişkiler belirlenmelidir. Örnek Veri Tabanının Yapısı OGRENCI Ad DONEM Ogrenci_No Sinif Bolum Mehmet 17 1 YBS Ayşe 5 2 YBS Donem_ID DERS Ders_Ad Ders_Kodu Kredi Bolum Bilgi Teknolojileri Kullanımı ENF101 4 ENF Veri Tabanı I MBIL103 5 MBIL Veri Tabanı Yönetim Sistemleri YBS201 4 YBS Programlama Dilleri I BIL203 3 MAT ONKOSUL Ders_Kodu Onkosul_Kodu YBS201 ENF101 BIL203 ENF101 Ders_Kodu Donem Yil Ogr_Elemani 85 ENF101 Güz 16 Ahmet 92 YBS201 Güz 16 Sezgin 102 BIL203 Bahar 16 Kamil 112 ENF101 Bahar 16 Ahmet 119 YBS201 Güz 17 Fırat 135 MBIL103 Güz 17 Fırat SINAV_SONUC Ogrenci_No Donem_ID Not 17 85 AA 17 119 BB 5 85 AA 5 102 BA 5 119 CC Örnek Veri Tabanı Üzerinde Bazı Uygulamalar • Veri tabanı üzerinde yapılabilen bazı işlemlere örnekler; • Transkript alınması • 2017 yılında alınan Veri Tabanı Yönetim Sistemleri dersini alan tüm öğrencilerin sınav notları • Önkoşul durumlarının listesi • Güncelleme işlemlerine örnekler; • Mehmet isimli öğrencinin sınıfının değiştirilmesi • Yeni yarıyıl için yeni dersler açılması • Ayşe adlı öğrencinin Veri Tabanı Yönetim Sistemleri dersi notunun CC olarak girilmesi Veri Tabanı Yaklaşımının Karakteristikleri • Geleneksel dosya-tabanlı sistemlerde, her kullanıcı kendisi ile ilgili verileri tanımlayıp bağımsız bir dosyada saklar. Ancak aynı verilerin bir kısmı başka bir kullanıcı tarafından yine tanımlanmak zorundadır. Bu verilerin birbiriyle ilişkilendirilmesi için ise ayrı bir uygulama gereklidir. • Problemler; • • • • • • Gereksiz yinelenen veriler Tutarsızlık Güvenlik sorunları Veri kaybı Veriye erişim zorluğu Uygulama geliştirmedeki güçlükler Veri Tabanı Yaklaşımı • Veri tabanı yaklaşımında, tanımlamalar en başta bir defaya mahsus gerçekleştirilir ve veri girişi tekrar yapılmaz. Bu veriler çok sayıda kullanıcı ile paylaşılarak ortak kullanılabilir. Veri tabanı yaklaşımının temel karakteristikleri Veri tabanı sisteminin kendiliğinden tanımlı doğası Programlar, veri ve veri tanımlamaları arasında yalıtım Verilere çoklu rapor desteği Verilerin paylaşımı ve çok kullanıcılı işlemlerin gerçekleştirilmesi Veri Tabanı Sistemlerinin Kendinden Tanımlı Doğası • Veri tabanı yaklaşımının temel karakteristiği, veri tabanı sisteminin yalnızca kendi veri tabanını değil, aynı zamanda veri tabanı yapısının ve kurucularının da tanımlama ve açıklamalarını da içeriyor olmasıdır. Bunlara meta-data denir. • Dosya tabanlı sistemlerde bu tanımlamalar spesifik olarak program kodları ile tanımlanır. DBMS Yazılımı Veri Tabanı Tanımlamaları (Meta-Data) Veri Tabanı Veri Tabanı Katalog Bilgilerine Bir Örnek İLİŞKİLER Relation_Name ALANLAR (SÜTUNLAR) No_of_columns Column_Name Data_type Belongs_to_relation OGRENCI 4 Ad Char(150) OGRENCI DONEM 5 Ogrenci_No Char(11) OGRENCI DERS 4 Sinif Integer(1) OGRENCI SINAV_SONUC 3 Bolum Char(100) OGRENCI ONKOSUL 2 Donem_ID Integer DONEM Ders_Kodu XXXXNNNN DONEM Donem Char(5) DONEM … … … Ders_Kodu XXXXNNNN ONKOSUL Onkosul_Kodu XXXXNNNN ONKOSUL XXXXNNNN: 4 alfakarakter, 4 sayıdan oluşan biçim. Programlar, Veri ve Veri Tanımlamaları Arasında Yalıtım • Geleneksel sistemlerde, veri dosyalarının yapısı uygulama programının içerisinde tanımlanır. Değişiklik gerektiğinde hem dosyaların hem de program yapısının değiştirilmesi gerekir. • DBMS erişim programlarında tüm durumlarda değişiklik gerekmez. Veri dosyalarının yapısı DBMS kataloğunda yer alır. Bu durum, program-veri bağımsızlığı olarak adlandırılır. Veri Alan Adı Kaydın Başlama Yeri Karakter Uzunluğu (byte) Ad 150 150 Ogrenci_No 151 11 Sinif 162 1 Bolum 163 100 Dosya sisteminde verilerin tutulmasına OGRENCI tablosundan bir örnek Programlar, Veri ve Veri Tanımlamaları Arasında Yalıtım • Bazı nesne yönelimli veya nesne ilişkili veri tabanı sistemlerinde, kullanıcılar veri üzerindeki işlemleri (fonksiyonları, yöntemleri ya da parametreleri) de veri tabanı tanımlamalarının bir parçası olarak tanımlayabilir. • DBMS’de, arayüz değişse de tanımlanan bu işlemlerde bir aksama söz konusu olmaz. Bu durum program-işlem bağımsızlığı olarak adlandırılır. • Hem program-veri bağımsızlığı hem de program-işlem bağımsızlığı özelliğini içeren karakteristik veri yalıtımı (data abstraction) olarak tanımlanır. Verilere Çoklu Rapor Desteği • Bir veri tabanı sisteminin birçok kullanıcısı vardır ve bu kullanıcılar farklı konularda verilerle ilgilenirler. Bu verilerden elde edilen raporlar (views) DBMS’de her kullanıcı için oluşturulabilir. TRANSKRİPT (RAPOR ÖRNEĞİ) Ad Mehmet Ayşe Ders_Kodu Not Donem Yil Donem_ID ENF101 AA Güz 16 85 YBS201 BB Güz 17 119 ENF101 AA Güz 16 85 BIL203 BA Bahar 16 102 YBS201 CC Güz 17 119 Verilerin Paylaşımı ve Çok Kullanıcılı İşlemlerin Gerçekleştirilmesi • Bir DBMS, eş zamanlı olarak çok sayıda kullanıcının veri tabanına erişimine izin vermelidir. • Aynı anda veri güncelleme istemlerinin, veri işlem kontrol uygulamalarıyla kontrol edilmesi gerekir. Bu uygulamalara, online transaction prosessing (OLTP) uygulamaları denir. • Veriler üzerinde yapılan işlemlerin sonucu hakkında çıkarımda bulunan sistemlere ise online analytical processing (OLAP) uygulamaları denir. Sahnedeki Aktörler Veri Tabanı Yöneticileri (Database Administrators, DBA) •Veri tabanı kaynaklarını yöneten ve kontrol eden tüm yetkilere sahip kullanıcılardır. Veri Tabanı Tasarımcıları (Database Designers) •Verilerin saklanabilmesi için tanımlamaları yapmak, bu verilerin gösterimi ve saklanması için uygun yapıları seçmek ile sorumludurlar. Son Kullanıcılar (End Users) •Veri tabanına çeşitli işlemleri gerçekleştirmek üzere erişim sağlayan kullanıcılardır. Sistem Analistleri ve Uygulama Programcıları (Yazılım Mühendisleri) •Sistem analistleri, son kullanıcıların gereksinimlerini belirleyen, gereksinimleri bulan kullanıcılardır. Uygulama programcıları, gereksinimlere uygun yazılımı kodlayan, daha sonra test eden derleyen, dokümantasyonunu hazırlayan ve veri işlemlerinin bakımını gerçekleştiren kullanıcılardır. Sahne Gerisinde Çalışanlar DBMS sistem tasarımcıları ve geliştiricileri • DBMS modüllerini ve yazılım paketi arayüzlerini tasarlayan ve geliştiren kişilerdir. Araç geliştiricileri • Araç (tool) adı verilen veri tabanı modelleme ve tasarım, veri tabanı sistem tasarım ve performansı yükseltmek için hazırlanan yazılımları geliştiren kişilerdir. Operatörler ve bakım personeli • Veri tabanının yer aldığı donanımın çalışması ve bakımı ile yazılım için gereken çevresel gereksinimlerden sorumludur. DBMS Yaklaşımını Kullanmanın Üstün Yönleri • • • • • • • • • • Gereksiz verilerin kontrolü Yetkisiz erişimlerin engellenmesi Program nesneleri için kalıcı saklama Etkin sorgulama işlemleri için saklama yapıları ve arama teknikleri Yedekleme ve geri yükleme Çok kullanıcı erişimi Veri üzerindeki karmaşık ilişkilerin tanımlanması Bütünlük kısıtlamalarını uygulayabilme Kurallara uygun işlemlere ve sonuç çıkarmaya izin verme İlave faydalar • Kullanıcılar arasında iş dağılımı, azalan uygulama geliştirme süresi, esneklik, günlük bilgilerin kullanılabilmesi, ölçeklenmiş ekonomi… Veri Tabanı Uygulamalarının Kısa Tarihçesi Hiyerarşik ve Ağ Sistemleri Tabanlı Veri Tabanı Uygulamaları 1970’ler İlişkisel Veri Tabanı Yönetim Sistemi (RDBMS) 1980’ler XML (eXtended Markup Language) 1990’lar Yeni Veri Tabanı Uygulamaları 2000’ler • Bilimsel uygulamalar • Resim ve video tabanlı veri tabanları • Veri madenciliği (data mining) • Uzay uygulamaları • Zaman serileri Bilgi Çıkarım (Information Retrieval, IR) Günümüz DBMS’nin Zayıf Yönleri • Donanım, yazılım ve öğrenme açısından gereksinimler • Verilerin tanımlanması ve işlenmesi için DBMS’ye gereksinim duyulması • Güvenlik, eşzamanlı erişim kontrolü, kurtarma ve ileri düzey fonksiyonlara hakim olunması gereksinimi Veri Tabanı Sistemi Kavramları ve Mimarisi Veri Modelleri, Şemalar ve Olaylar Üç Şema Mimarisi İlişkisel Veri Tabanı Veri Tabanı Mimarisi • İlk Veri Tabanı Mimarileri Tek bir bilgisayar (mainframe) üzerine kurulu • Günümüz Veri Tabanı Mimarileri Sunucu-istemci yapısında Veri isteği LAN veya WAN Döndürülen veri Veri Tabanı Sunucu (DBMS) İstemci 1 İstemci 2 İstemci n Veri Modeli • Veri tabanının mimarisini tanımlamak için kullanılan kavramlar bütünüdür. Veri tabanı mimarisi; veri tipleri, ilişkiler ve veri giriş kısıtlamalarını ifade eder. • Varlık (Entity): Bir gerçek dünya nesnesini veya kavramını ifade eder. Örneğin; bir çalışan veya veri tabanı içerisindeki mini dünyada tanımlanan bir proje gibi. • Nitelik (Attribute): Bir varlığı tanımlayan özelliktir. Örneğin; çalışan adı veya ücreti gibi. • İlişki (Relationship): İki veya daha fazla varlık (entity) arasındaki ortak nokta ve birleşmeyi ifade eder. Örneğin bir çalışan ile bir projeyi ilişkilendirme gibi. Varlık Nitelik İlişki İlişkisel Veri Modeli (Relational Data Model) Nitelik (Attribute) Tablo (Table) OGRENCİ Ad Kayıtlar (Records) Ogrenci_No Sinif Bolum Mehmet 17 1 YBS Ayşe 5 2 YBS Alanlar (Fields, Columns) Varlık (Entity) İlişkisel Veri Tabanı Modeli (Relational Database Model) İlişkisel model, bir veri tabanı üzerinde tanımlanan ilişkilerin koleksiyonudur. SQL: Structural Query Language • MS SQL Server • Oracle • PostrgreSQL • MySQL • Sybase SQL Server • Informix Birincil Anahtar ve Yabancı Anahtar • Birincil Anahtar (Primary Key); bir tabloda her bir kayıt için verilen benzersiz alandır. Kayıtların birbirinden ayırt edilmesini sağlar. • Bir tabloda birincil anahtar alanında tanımlanan veriler aynı olamaz. • Yabancı Anahtar (Foreign Key, Secondary Key, Index); bir tabloda # diğer tablodaki kayıtlarla ilişki kurulan alanlardır. Örnek İlişkisel Veri Tabanı Tasarımı • Bir işletmenin ürünlerini internet üzerinden satmak üzere bir veri tabanı tasarımı • Ürünler; Barkod, Ürün Adı, Marka, Özellikleri, KDV Oranı, Alış Fiyatı, Satış Fiyatı, Ürün Adedi • Müşteriler; Müşteri Kodu, Müşteri Adı, Müşteri Soyadı, e-posta, Parola, Adres, Şehir, Telefon • Siparişler; Sipariş Kodu, Müşteri, Ürün, Sipariş Tarihi, Sipariş Durumu, Sipariş Adedi Örnek İlişkisel Veri Tabanı Tasarımı Marka Özellikler Adı Soyadı Ürün Adı Müşteri Kodu KDV Oranı Barkod ÜRÜNLER Ürün Adedi E-Posta N Satış Alış Fiyatı Satış Fiyatı Parola N Telefon # Müşteri Kodu Sipariş Kodu Sipariş Adedi MÜŞTERİLER 1 SİPARİŞLER Şehir Adres # Ürün Barkodu Birincil Anahtar # Yabancı Anahtar Sipariş Durumu Sipariş Tarihi Örnek İlişkisel Veri Tabanı Tasarımı ÜRÜNLER Barkod Ürün Adı Marka Özellikler 35126 Sabit Disk Seagate 500 GB 12525 Anakart Gigabyte 18121 RAM OEM KDV Oranı Alış Fiyatı Satış Fiyatı Ürün Adedi %18 80,12 96,15 21 GA-Z170X-Gaming 3-EU %18 201,15 250,83 12 4 GB DDR %18 50,22 75,91 30 MÜŞTERİLER Müşteri Kodu Adı Soyadı E-posta Parola Adres Şehir Telefon 1 Ahmet Akcan akcan@abc.com ****** Ak. Ün. Kampus Antalya 02423212212 2 Hatice Özay hozay@xyz.com ******* KYK Yurdu Kampus Antalya 05333333333 3 Salih Zafer zafer@hotmail.com ***** Dumlupınar Bulvarı Antalya 02423221112 SİPARİŞLER Sipariş Kodu # Müşteri Kodu # Ürün Barkodu Sipariş Tarihi Sipariş Durumu Sipariş Adedi 121 2 35126 22/09/2017 Teslim edildi 3 122 1 12525 30/09/2017 Kargoda 1 Birincil Anahtar # Yabancı Anahtar UNIVERSITE Veri Tabanı için İlişkisel Model Birincil Anahtar # Yabancı Anahtar Ogrenci_No Ad Donem # Ders_Kodu Yil Sinif Bolum Ogr_Elemani Donem_ID 1 OGRENCİ 1 seçer N DONEM N N N açılır N ONKOSUL # Ders_Kodu N Değerlendirme # Onkosul_Kodu belirlenir 1 1 # Ogrenci_No Not # Donem_ID DERS Ders_Kodu SINAV_SONUC Ders_Ad Bolum Kredi Veri Tabanı Şema Diyagramı (Database Schema Diagram) • Veri tabanındaki varlıkları, nitelikleri ve bunların birbiriyle ilişkisini gösteren şekillerdir. Üç Şema Mimarisi (Üç Katman Mimarisi) İç Katman (İç Şema) • Veri tabanının fiziksel saklama yapısını tanımlar. Kavramsal Katman (Kavramsal Şema) • Veri tabanının veri modelini tanımlar, kullanıcı ile iç katman arasında iletişimi sağlar. Harici (Dış) Katman (Dış Şema) • Veri tabanının kullanıcı grubunun erişimi için hazırlanan arayüzüdür. Örnek Veri Tabanı Tasarımı • Bir kütüphane kitap ödünç verme/sorgulama işlemleri için veri tabanı • Bir eczane ilaç satışı için veri tabanı • Bir şehirlerarası otobüs firması bilet satışı için veri tabanı