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 Dersin Yarıyılı Derse Devam Veri Tabanı Yönetim Sistemleri : 3+0 : Güz : %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 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 o 8. Hafta: Karmaşık Sorgular (Birden Fazla Tablo Üzerinde Sorgular) o 9. Hafta: Karmaşık Sorgular (Birden Fazla Tablo Üzerinde Sorgular) o 10. Hafta: Tetikleyiciler (Triggers) o 11. Hafta: Görünümler (Views) o 12. Hafta: Şema Düzenlemeleri (Schema Modification) o 13. Hafta: ER Modeli ile Veri Modelleme o 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 E-Posta Sosyal ağ Web sitesi : firatyucel.com : Akdeniz Üniversitesi Enformatik Bölümü : fyucel@akdeniz.edu.tr
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 Ogrenci_No Sinif Bolum Mehmet 17 1 YBS Ayşe 5 2 YBS 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 DONEM Donem_ID 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. Veri Tabanı Tanımlamaları (Meta-Data) DBMS Yazılımı Veri Tabanı
Veri Tabanı Katalog Bilgilerine Bir Örnek İLİŞKİLER Relation_Name No_of_columns OGRENCI 4 DONEM 5 DERS 4 SINAV_SONUC 3 ONKOSUL 2 XXXXNNNN: 4 alfakarakter, 4 sayıdan oluşan biçim. ALANLAR (SÜTUNLAR) Column_Name Data_type Belongs_to_relation Ad Char(150) OGRENCI Ogrenci_No Char(11) OGRENCI Sinif Integer(1) OGRENCI Bolum Char(100) OGRENCI Donem_ID Integer DONEM Ders_Kodu XXXXNNNN DONEM Donem Char(5) DONEM Ders_Kodu XXXXNNNN ONKOSUL Onkosul_Kodu XXXXNNNN ONKOSUL
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 Ders_Kodu Not Donem Yil Donem_ID Mehmet ENF101 AA Güz 16 85 YBS201 BB Güz 17 119 ENF101 AA Güz 16 85 Ayşe 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ı İlişkisel Veri Tabanı Yönetim Sistemi (RDBMS) XML (extended Markup Language) Yeni Veri Tabanı Uygulamaları Bilgi Çıkarım (Information Retrieval, IR) 1970 ler 1980 ler 1990 lar 2000 ler Günümüz Bilimsel uygulamalar Resim ve video tabanlı veri tabanları Veri madenciliği (data mining) Uzay uygulamaları Zaman serileri
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 İstemci 1 LAN veya WAN Veri isteği Döndürülen veri Sunucu (DBMS) Veri Tabanı İ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) Tablo (Table) OGRENCİ Nitelik (Attribute) Kayıtlar (Records) Ad Ogrenci_No Sinif Bolum Mehmet 17 1 YBS Ayşe 5 2 YBS Varlık (Entity) Alanlar (Fields, Columns)
İ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ı Ürün Adı Marka Özellikler KDV Oranı Müşteri Kodu Adı Soyadı E-Posta Barkod Ürün Adedi ÜRÜNLER Satış Fiyatı Alış Fiyatı N 1 Satış Sipariş Kodu N # Müşteri Kodu Telefon MÜŞTERİLER Şehir Adres Parola Sipariş Adedi SİPARİŞLER # Sipariş Durumu Sipariş Tarihi Ürün Barkodu Birincil Anahtar # Yabancı Anahtar
Örnek İlişkisel Veri Tabanı Tasarımı ÜRÜNLER Barkod Ürün Adı Marka Özellikler KDV Oranı Alış Fiyatı Satış Fiyatı Ürün Adedi 35126 Sabit Disk Seagate 500 GB %18 80,12 96,15 21 12525 Anakart Gigabyte GA-Z170X-Gaming 3-EU %18 201,15 250,83 12 Birincil Anahtar # Yabancı Anahtar 18121 RAM OEM 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
UNIVERSITE Veri Tabanı için İlişkisel Model Ad Ogrenci_No Birincil Anahtar # Yabancı Anahtar # Ders_Kodu Donem Yil Bolum Sinif Donem_ID Ogr_Elemani OGRENCİ 1 N Değerlendirme DONEM 1 N N N seçer açılır belirlenir N 1 N 1 ONKOSUL SINAV_SONUC Ders_Kodu DERS Bolum # Ders_Kodu # Onkosul_Kodu # Ogrenci_No Not Ders_Ad Kredi # Donem_ID
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ı