VERİTABANI MANTIĞI DERS NOTLARI



Benzer belgeler
VERİ TABANI UYGULAMALARI

1 Temel Kavramlar. Veritabanı 1

VERİTABANI ORGANİZASYONU

Örnek bir kullanım ve bilgisayar ağlarını oluşturan bileşenlerin özeti

VERİ TABANI YÖNETİM SİSTEMLERİ

Veritabanı Uygulamaları Tasarımı

Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş

10-Veri Tabanları.

1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA

Veritabanı Tarihi. 1960s: Bilgisayarlar artan saklama kapasiteleri ile birlikte firmalar tarafından karşılanabilir hale gelmeye başladı

=A1+A2-A3, =A1*A2/A3,

İNTERNET PROGRAMCILIĞI - II

İnternet Programcılığı

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Veri Tabanı Yönetim Sistemleri Bölüm - 3

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

PERKON PDKS Kurulum ve hızlı başlangıç rehberi

Veritabanı Yönetimi Bilgisayarların. Keşfi Hedefler. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi

BIM 312 Database Management Systems. Veritabanı Kavramına Giriş

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

2-Veritabanı Yönetim Sistemleri/ Temel Kavramlar

UZAKTAN EĞİTİM MERKEZİ

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

Enterprise Resource Planning - ERP - Kurumsal kaynak planlaması ya da iş letme kaynak planlaması,

2 Temel Kavramlar (Devam) Veritabanı 1

Ġşlem tablosu kavramını tanımlamak ve işlem tablolarının işlevlerini öğrenmek. Ġşlem tablolarının temel kavramlarını tanımlamak.

SQL e Giriş. Uzm. Murat YAZICI

MOBİL UYGULAMA GELİŞTİRME

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

MİCROSOFT WORD. Araç çubukları: menü çubuğundan yapabileceğimiz işlemleri daha kısa zamanda araç çubukları ile yapabiliriz.

Veritabanı Tasarımı. Tablo Değiştirme

Veri Tabanı Örnekleri

BLGM 354 DENEY 1 * GİRİŞ

Resim 1. Access açılış sayfası. Resim 2. Access veri tabanı düzenleme sayfası

Veri Tabanı Tasarım ve Yönetimi

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

13 Aralık Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Raporlar. Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz

VERİ KAYNAKLARI. Bilgi sisteminin öğelerinden biride veri

MÜ DAD ONLİ NE Ü YELİ K

VERİ TABANI YÖNETİM SİSTEMLERİ

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

NovaFortis Yazılım Danışmanlık. E-dönüşüm adaptörü

Ünite-3 Bilgisayar Yazılımı.

MOODLE UZAKTAN ÖĞRETİM SİSTEMİ

Exepto Bilgi Teknolojileri A.Ş. Sözleşme Yönetim Yazılımı

Veritabanı. SQL (Structured Query Language)

VERİ TABANI YÖNETİM SİSTEMLERİ I

İÇERİK YÖNETİM SİSTEMİ (CMS) Bir web sitesi yayınlamak için yapılması gerekenler:

Asansör firmaları için özel olarak geliştirilen takip yazılımı: Asansör Otomasyon tanıtım sunumu ve kullanım açıklamaları. / 25

1 Temmuz 2014 Netsis Standard 2 1 Temmuz 2014

MongoDB. Doğan Aydın. Eylül, 2011

KOLAY SİPARİŞ TAKİBİ v4

1 Temmuz 2014 Netsis Standard 2 1 Temmuz 2014

Veritabanı. Ders 2 VERİTABANI

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

KISITLAMALAR (CONSTRAINT)

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

1 Temel Kavramlar. Veritabanı 1

1 / 5. Cenk Sözeri. Proje Yöneticisi. İletişim Bilgileri

NPratik Yazılım Kurulum Kılavuzu. Yedekleme İşlemi

TIGER ENTERPRISE FİYAT LİSTESİ 23 Eylül 2010 tarihinden itibaren geçerlidir.

Herhangi bir tablonun tekrarlı veriler içerdiği duruma birinci normal form denir. Birinci normal formu Aşağıdaki tablo ile ele alacağız.

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

Veritabanı Tasarımı. Basit Eşleme: Dönüşüm İşlemi

Veritabanı Yönetim Sistemleri (Veritabanı Kavramı) Veri Modelleri

Bo lu m 7: Hesap Tabloları

VERİ TABANI PROGRAMCILIĞI DALI

Kablo Üretim Çizelgeleme Paketi. dinamo Kablo GANT. dinamo KABLO Kablo Üretim Planlama/Çizelgeleme Paketi Bilgi Dosyası

UNIVERSAL BİLGİ TEKNOLOJİLERİ

Bölüm 10: PHP ile Veritabanı Uygulamaları

RESTORAN Sistemi AKINSOFT BÖLGE BAYİ

HASTANE OTOMASYONU VERİ TABANI YÖNETİM SİSTEMLERİ TEMEL VERİTABANI KAVRAMLARI

Veri Tabanı-I 1.Hafta

Flow Kullanım Klavuzu Mart 2014

VERİ TABANI NEDİR A. TABLO OLUŞTURMA

BİLGİSAYAR PROGRAMLAMA. Yrd. Doç. Dr. Beytullah EREN

VERİ TABANI UYGULAMALARI

4.2. Kayıt formlarındaki bilginin alanlara bölündüğünü ve birkaç kayıt formunun bir dosya oluşturduğunu fark eder.

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

Veritabanı Tasarımı. DML İşlemleri ve Görünümler

DB.NET Laboratuvar Uygulaması-Öğrenci Notları

1.PROGRAMLAMAYA GİRİŞ

1C:İŞLETME Platformu ÜRETİM - TİCARET - MUHASEBE

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Swing ve JDBC ile Database Erişimi

3. Hafta Tablo İşlemleri BPR255 Veritabanı Yönetim. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri

ACCESS DERS Tablolarda Düzenleme

Aşağıdaki programı inceleyip ekrana ne yazacağını söyleyebilir misiniz?

Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

PERSONEL TAKİP SİSTEMİ

TIGER ENTERPRISE FİYAT LİSTESİ 1 Aralık 2010 tarihinden itibaren geçerlidir.

Mevcut Yazılım Değerlendirme Rehberi Kullandığınız yazılım ne kadar verimli?

cofaso ile farkı yaşayın Şubat


Transkript:

VERİTABANI MANTIĞI DERS NOTLARI Mustafa KILIÇ Mersin Hem ve ASO Müdürlüğü mustafa@kilic.us

Veritabanı Kavramı Veri Kavramı Bu bölümde, veri tabanının ne anlama geldiğini öğreneceğiz. Veri tabanlarının hangi amaçla kullanıldığı, nasıl bir yapıya sahip oldukları ve belli başlı veritabanı terimleri, bu bölümde inceleyeceğimiz temel kavramlar arasında yer alıyor.

Veritabanı Kavramı Veritabanı Nedir? Tek bir cümleyle ifade etmek gerekirse; veritabanı, bir kuruma ait verilerin düzenli bir yapı çerçevesinde saklandığı yazılım olarak nitelendirilebilir. Veri tabanının İngilizce karşılığı olan Database kelimesi, bu kavramın global karşılığıdır. Bir okul; öğretmen ve öğrencilere ait kimlik bilgileri, ders programları, sınav sonuçları, yoklama raporları gibi bilgileri veri tabanında saklayabilir. Buna karşılık bir meteoroloji istasyonu; veritabanında bölgelere ve şehirlere ait coğrafi veriler, günlük hava durumu, hava akımlarının yönü, kar yoğunluğu gibi bilgileri saklayacaktır.

Veritabanı Kavramı Veritabanı Nedir? Örnekleri çoğaltabiliriz. Ticari bir firma; veritabanında personel özlük bilgileri, depodaki malzemelere ait hareketler, müşterilerin telefon numaraları, gelen siparişler, gönderilen teslimatlar, ürün fiyatları gibi bilgileri saklamak isteyecektir. Bir doktor için hastalara ait özlük ve sağlık verilerini, bir restoran için mönüdeki yemeklere ait malzeme verilerini, bir futbol takımı için oyunculara ve lig fikstürüne ait verileri, bir sinema için ise seans & koltuk verilerini saklamak önemli olacaktır. Konular ve sektörler ne kadar farklı olursa olsun, değişmeyen tek bir gerçek var: Herkes, belli bir düzen içinde saklamak isteyeceği bir dolu bilgiye sahiptir. Veri tabanlarının; günümüzde, bilgi saklamak için var olan en elverişli ve yaygın ortam olduğu söylenebilir.

Veritabanı Kavramı

Veritabanının Avantajları Veritabanları, bize son derece güvenilir ortamlar sunmaktadır. Öyle ya, yıllarca süren çalışmalar sonucunda birikmiş son derece değerli bilgileri saklayan bir veritabanının bozulması, sadece rakiplerimizi sevindirecektir. %100 güvenlik diye bir şey olmasa da, bu gibi felaket senaryolarına karşı geliştirilmiş sayısız çözüm vardır. Özellikle SQL Server ve Oracle gibi büyük veritabanlarının getirdiği yedekleme çözümleri, bir sistem hatası yüzünden yaşanabilecek veri kaybı riskini minimuma indirmektedir. Bunun yanı sıra, veritabanındaki gizli bilgilere sadece yetkisi olan kullanıcıların erişmesini sağlamak da mümkündür. Kim hangi veriyi okuyabilir, kim ne yazabilir gibi düzenlemeleri kullanıcı & kullanıcı grubu bazında yapabiliriz.

Veritabanının Avantajları Bilgileri kağıt & kalem kullanarak dosyalarda saklamak elverişli bir yöntem olsaydı, bugün veritabanı diye bir şey icat edilmiş olmazdı; bunu hepimiz kolayca söyleyebiliriz. Ancak; Ben verilerimi Word & Excel dosyalarında saklayabiliyorum. Veritabanı olsa ne olur, olmasa ne olur? diye düşünenler için, veritabanı kullanıyor olmanın getirdiği avantajları kısaca inceleyelim. Veritabanları, herhangi bir programda saklayabileceğimizden çok daha fazla veriyi kolayca muhafaza edebilir. Piyasada terabyte larca veri saklayan veritabanlarıyla çalışmış biri olarak, yeterince disk alanı ve akıllı bir sistem yöneticisi olan bir firmanın istediği kadar veri saklayabileceğini garanti edebilirim. Excel söz konusu olduğunda, sayfa başına 65.000 kayıtlık bir sınırla karşı karşıyasınız demektir.

Veri Kavramı Veritabanları, programcılığa açık bir yapı getirmektedir. Programcılar; dünya çapında kabul görmüş standartlar sayesinde, verilere istedikleri programlama dili & platformu kullanarak kolayca erişebilir. Bu programları kullanan kullanıcılar, Veritabanına ait hiçbir teknik bilgiye sahip olmadan kolayca veri girişi yapabilir veya veritabanında yatan verileri okuyabilir. Örneğin; Oracle üzerinde saklanan verileri Internet ortamına açmak istiyorsak; C#, Basic, Java, PHP gibi dillerden herhangi birini kullanabiliriz. Bu diller yardımıyla hazırladığımız siteye giren bir ziyaretçi, Oracle dan gelen yazıları kolayca okuyabilir.

Veri Kavramı Bunun yanı sıra; temel SQL bilgisine sahip herhangi bir kullanıcı, programcı desteği olmadan dilediği veriye erişebilir. Özellikle analiz ve raporlama yapan şirket çalışanları için, veritabanları eşsiz nimetler sunmaktadır. Veritabanı kullanmanın getireceği avantajlar saymakla bitmez, ileride Yaşasın Veritabanı! adlı bir kitap yazacak olursam, avantajları madde madde sıralamaya orada devam ederim. Şimdilik, ilerleyen konularda yer alan uygulamalı örneklerde bu avantajların büyük bir kısmını hep birlikte göreceğimizi söylemekle yetinelim.

Popüler Veritabanları Hangisi en iyi? formatındaki her soru gibi, Hangi veritabanı en iyisidir? sorusunun da net bir cevabı yok. Bir veritabanının marifetleri arttıkça fiyatı da yükselmektedir; bu yüzden, ihtiyaçlarımızı karşılayan en hesaplı ver ita banını seçmek önem kazanmaktadır. Şimdi gelin, piyasada popüler olarak kullanılan veritabanlarını kısaca inceleyelim.

Popüler Veritabanları - Access Microsoft un Office paketi içerisinde sunduğu veritabanı yazılımıdır. Dosyalarının son derece taşınabilir olması ve Office lisansı dışında hiçbir lisans ücreti olmaması, Access i küçük ve orta çaplı projelerde oldukça cazip bir hale getirmiştir. Günümüzde, küçük çaplı işletmelerin önemli bir kısmı ve sayısız Web sitesi, Access temel alınarak kurulmuş yazılımlar kullanmaktadır. Access, veritabanı mantığına başlamak için oldukça elverişli bir ortam sunmaktadır. Buna karşılık, büyük ölçekli kurumsal projelerde ihtiyaç duyulacak özelliklerin büyük bir kısmına sahip değildir. Bu yüzden, büyük projeler ve şirketler tarafın dan pek tercih edilmemektedir. Windows harici platformlarda yardımcı programlar olmadan çalışmıyor olması ise, Linux / Unix kullanıcılarını Access den uzak tutmaktadır. Dezavantajlarına rağmen Access, Windows ve Office in popülerliği nedeniyle piyasada oldukça yaygın bir şekilde kullanılmaktadır. Access hakkında daha fazla bilgi almak için http://office.microsoft.com/trtr/default.aspx adresini ziyaret edebilirsiniz.

Popüler Veritabanları - MySql Microsoft un Access i varsa, Linux un MySql i var! cümlesi, MySql in ortaya çıkış amacını kolayca ifade edecektir. Linux ortamında PHP ile birlikte kullanıldığında oldukça hızlı çalışan MySql in, çıktığı dönemde ASP+Access kullanan Microsoft Web programcılarıyla PHP+MySql kullanan Linux Web programcıları arasında Benimki döver! Hayır hayır, benimki döver! tarzı tartışmalara yol açtığını hatırlıyorum. Günümüzde; MySql in, gittikçe gelişen özellikleriyle birlikte, Access den daha marifetli bir hale geldiğini söylemek sanırım yanlış olmaz. Hala büyük ağabeyleri kadar güçlü olmasa da, kaynak kodunun açık olması ve kişisel kullanım için herhangi bir lisans ya da ücrete tabi olmaması, veritabanına yeni başlayan veya küçük & orta ölçekli projeler hazırlayan Linux kullanıcılarını cezbetmektedir. MySql i yardımcı programlarla Windows ortamında çalıştırmak mümkün olsa da, Microsoft teknolojilerini kullanan programcılar tarafından çok tercih edilmemektedir. MySql hakkında daha fazla bilgi almak için http://www.mysql.com adresini ziyaret edebilirsiniz.

Popüler Veritabanları - SQL Server İşte Microsoft un güçlü veritabanı! Access in sahip olmadığı birçok özelliğe sahip olan SQL Server, Oracle ile birlikte piyasada yer alan en güçlü iki veritabanından biri olarak kabul edilmektedir. 2000 yılında piyasaya sürülen versiyonunda kurumsal ölçekte ihtiyaç duyulacak her türlü özelliğe yer veren Microsoft, yakında piyasaya sürmeye hazırlandığı 2005 versiyonunda bizi (Recursive Query ve.net Procedures gibi) daha büyük sürprizlerin beklediğini de duyurdu. SQL Server, piyasada oldukça yaygın bir şekilde kullanılmaktadır. Express Edition, Personal Edition, Enterprise Edition gibi farkı versiyonları farklı lisanslandırma ücretlerine sahip olduğu için, herkese ve her keseye uygun bir SQL Server bulmak mümkün. SQL Server; sadece Windows platformunda çalışmasına rağmen, ciddi ve büyük projeler söz konusu olduğunda tercih edilen iki yazılımdan biridir. SQL Server hakkında daha fazla bilgi almak için http://www.microsoft.com/sql adresini ziyaret edebilirsiniz.

Popüler Veritabanları - Oracle Oracle ı En büyükler tarafından tercih edilen en büyük veritabanı diye tanımlamak sanırım yanlış olmaz. Yetenek anlamında SQL Server ile aşağı yukarı aynı seviyededir. Bunun ötesinde, 10G versiyonuyla birlikte Grid Computing kavramının veritabanı üzerindeki uygulamasını piyasaya sürmüştür. Oracle; Windows, Linux, Unix gibi farklı platformlarda çalışabilmektedir. Ara yüzleri Java ile yazıldığı için; Windows ortamında Oracle kullanmış birinin, Linux ortamında Oracle kullanabilmek için neredeyse hiçbir şey öğrenmesi gerekmez. Ancak; Oracle ı verimli bir şekilde kullanabilmek için konusunda uzmanlaşmış ve ne yaptığını bilen bir veritabanı yöneticisiyle çalışmak şarttır. Arabirimi SQL Server kadar basit değildir ve performans ayarlamalarını yapmak için ciddi teknik tecrübe gerekmektedir. Bu yüzden, tüm bu yatırımı yapabilecek sermayeye sahip kurumlar tarafından tercih edilmektedir. Oracle hakkında daha fazla bilgi almak için http://www.oracle.com adresini ziyaret edebilirsiniz.

Bir Veritabanının Yapısı Evet... Şimdiye kadar veritabanının ne anlama geldiğini ve ne işe yaradığını görmüş olduk. Şimdi, veritabanlarını mikroskop altına yatıracak ve bir veritabanının hangi parçalardan oluştuğunu inceleyeceğiz. Aşağıdaki resimde, veritabanı yapısına ait genel yapıyı görebilirsiniz. Bu bölümde, söz konusu yapı üzerinden konuşacağız.

Tablo Tablo, veritabanı mantığı çerçevesindeki en önemli kavramlardan biridir. Genel bir ifadeyle; bir veritabanı, tablolarda saklanan verilerden oluşur. Tablolar, ihtiyaçlar doğrultusunda kullanıcılar veya programcılar tarafından yaratılabilir.

Tablo Örneğin; personel ve ürünlerimize ait bilgileri veritabanında saklamak istiyorsak; atacağımız ilk adım, PERSONEL ve URUN adlı iki tablo oluşturmaktır. Ardından, her bir personele ait verileri PERSONEL tablosuna, her bir ürüne ait verileri de URUN tablosuna eklememiz gerekir. Bu işlemi yaptığımızda, elimizde personel ve ürünlere ait tam bir liste olur.

Tablo Bir veritabanı tablosunu, yapı itibariyle bir Excel tablosuna benzetebiliriz. Aşağıdaki resimde, Access veritabanı üzerinde tutulan bir personel tablosunu görebilirsiniz.

Tablo Şimdi ürünlere ait bir örnek tablo görelim.

Tablo Veritabanı mantığı çerçevesinde; tabloların en önemli fonksiyonu, verileri birbirinden ayırmasıdır. Örneğimizde; personel ve ürün verileri ayrı ayrı tablolarda tutulmaktadır. Şirketimizde kaç erkek çalışıyor? sorusunun cevabını arayan biri PERSONEL tablosuna, Hangi cep telefonlarını satıyoruz? sorusunun cevabını arayan biri ise URUN tablosuna başvuracaktır. Bu şekilde, farklı özelliklere sahip veriler de standardize edilecek ve standart bir şekilde saklanacaktır. Örneğimizde; her bir personele ait ad, soyad, doğum günü, E-Posta adresi ve maaş bilgileri PERSONEL tablosunda saklanmaktadır. Bunun yanı sıra, her bir ürüne ait ad ve görsel bilgileri URUN tablosunda saklanmaktadır. PERSONEL tablosunda bir ürün bulunması veya URUN tablosunda bir personel bulunması söz konusu değildir.

Tablo Not: Veritabanı mantığı çerçevesinde; personel, ürün gibi her bir nesne tipi için ayrı ayrı tablolar bulunur. Bu tablolar, sadece barındırdığı nesnelere ait bilgileri saklayacaktır.

Tablo Tabloların bir başka fonksiyonu, verileri standardize etmektir. Örneğin; AD, SOYAD, EMAIL, DOĞUM ve MAAŞ bilgilerini saklamak üzere hazırlanmış olan PERSONEL tablosu, tabloya bilgileri eklenen her bir kişinin adını, soyadını, E- Posta adresini, doğum tarihini ve maaşını barındıracaktır. Bu tabloya, bir personelin çocuk sayısını, ev adresini veya göz rengini eklemek mümkün değildir. Benzer bir şekilde, URUN tablosuna da ürünlerin ağırlığını ve rengini eklemek mümkün değildir. İleride personelin çocuk sayılarını da saklamak istersek, PERSONEL tablosun da bu doğrultuda bir modifikasyon yapıp COCUK adında yeni bir sütun eklememiz gerekecektir. Aynı şekilde; ileride ürünlerin ağırlığını eklemek istediğimizde, URUN tablosuna AĞIRLIK adında yeni bir sütun eklememiz gerekecektir.

Tablo Not: Tablolar, veritabanında standardizasyonu mümkün kılar. Bir tablo, barındırdığı nesnelerin sadece önceden tanımlanmış özelliklerini saklayabilir.

Tablo Bir veritabanı, ihtiyaç doğrultusunda yaratılmış sayısız tabloya sahip olabilir. Aşağıdaki resimde, bir Access veritabanı üzerinde bulunan tabloların listesini görebilirsiniz. Dikkat ederseniz; her bir tablo, sadece tek bir nesne tipini saklamaktadır.

Tablo "Neden ürünler ayrı tabloya (URUN) ve fiyatları ayrı tabloya (URUN_FIYAT) konmuş? URUN tablosuna FİYAT diye bir sütun ekleyemez miydik? gibi sorular kafanızı kurcalıyor olabilir. Bu gibi soruların cevabını, ilerleyen bölümlerinde hep birlikte vereceğiz. Şimdilik kavramları anlamanız yeterlidir.

Alan (Sütun) Bir veritabanının temel yapı taşı tablo ise, tablonun temel yapı taşı alandır. Kabaca bir tabirle, tabloyu oluşturan her bir sütuna alan denmektedir.

Alan (Sütun) Az önce; tabloların en önemli fonksiyonunun nesne tiplerini birbirinden ayırmak ve standardize etmek olduğunu söylemiştik. Alanların en önemli fonksiyonu ise, belli bir tablodaki bilgileri birbirinden ayırmak ve standardize etmektir Tabloları incelerken; PERSONEL tablosunda sadece şirket çalışanlarına ait bilgilerin bulunabileceğini az önce gördük. Bu şekilde, personel ve ürün bilgilerim birbirinden tamamen ayırdık ve şirket çalışanlarına ait hangi bilgilerin girebileceğini net bir şekilde ifade ettik. Benzer bir mantıkla, alanların bize sağladığı ilk fayda; şirket çalışanlarına ait ad, soyad, doğum tarihi, maaş gibi bilgileri birbirinden ayırmamıza olanak tanımasıdır. Bugün kimin doğum günü? sorusunun cevabını arayan birinin, PERSONEL tablosunun DOĞUM alanına bakması yeterlidir. Kişilerin E-Posta adresleri ve maaşlarıyla ilgilenmesi gerekmez.

Alan (Sütun) Alanların ikinci faydası ise, belli bir sütuna girilecek verilerin standardizasyonu nu sağlamasıdır. Örneğin, PERSONEL tablosunun AD alanını 10 karakter uzunluğunda bir metin alanı haline getirirsek, bu alana en fazla 10 karakterlik bir isim girilebilir. Abdurrahman adında yeni biri işe başladığında, ismi 11 karakter uzunluğunda olduğu için; ya adını kısmen girmemiz, ya da alanı modifiye ederek uzunluğunu 11 (veya daha fazla) karaktere çıkarmamız gerekir.

Alan (Sütun) Tablo ve alanları, ihtiyaçlar doğrultusunda programcı veya kullanıcıların yarattığını unutmayın. PERSONEL tablosundaki AD alanını ele alacak olursak; tablo adının PERSONEL olmasına da, alan adının AD olmasına da, alan uzunluğunun 10 karakter olmasına da kendim karar verdim.

Alan (Sütun) Şimdi bir de PERSONEL.MAAS alanına göz atalım. Şirket çalışanlarının aylık maaşlarını saklayan MAAŞ alanı, sadece sayı girilebilecek şekilde hazırlanmıştır. Bu alana Delphi, Diesel, Packard gibi metin değerleri girilmesi mümkün değildir. PERSONEL.DOGUM alanı ise, tarih saklamak üzere hazırlanmış bir alandır. Bu alana sadece ve sadece tarih girilebilir. Metin, sayı veya başka bir şey girmek mümkün değildir.

Alan (Sütun) Bu örnek çerçevesinde, veritabanı alanlarında kullanılabilecek 3 temel veri tipi olduğunu da görmüş olduk: Metin: Ad, soyad, soru, telefon, açıklama gibi metin bazlı bilgilerin saklanacağı alanlarda kullanılır. Çeşitli veri tabanlarında Text, Memo, Char, Varchar, Varchar2 gibi karşılıkları vardır. Sayı: Tutar, puan, ağırlık, yaş gibi sayı bazlı bilgilerin saklanacağı alanlarda kullanılır. Çeşitli veri tabanlarında Number, Currency, Integer, Intl6, Int32 gibi karşılıkları vardır. Tarih: Tarih, saat gibi tarih bazlı bilgilerin saklanacağı alanlarda kullanılır. Çeşitli veri tabanlarında Date, DateTime, ShortDate gibi karşılıkları vardır.

Kayıt (Satır) Bir tablo içerisinde bulunan her bir satıra kayıt adı verilmektedir. Örneğin; PERSONEL tablosunda Mehmet Ozman, Güray Oskay, Serkan Çiftçi gibi kişilere ait birer kayıt bulunmaktadır.

Kayıt (Satır) Her bir kayıt, tablodaki alanlara ait tek bir veri içerebilir. Örneğin; Mehmet Ozman a ait satır, E-Mail sütununda sadece bir tane E-Posta adresi barındırabilir. Eğer Mehmet in ikinci E-Posta adresini mutlaka veritabanına eklemek istiyor sak, PERSONEL tablosunda EMAIL2 diye yeni bir sütun açmak ve ikincii Posta adresini bu sütuna eklemek iyi bir fikir olacaktır. Bir veritabanı tablosu, teoride sonsuz sayıda kayda sahip olabilir. Pratikte ise; girilebilecek kayıt sayısı, veritabanının çalıştığı bilgisayar(lar)ın disk alanı ile sınırlıdır.

Gelişmiş Kavramlar Şimdiye kadar bir veritabanının temel yapı taşlarını görmüş olduk. Sırada, veri tabanı teorisinin gelişmiş kavramları var.

Primary Key Artık tablo ve alan kavramlarının ne anlama geldiğini herkes biliyor, öyle değil mi? Güzel... Şimdi sırada daha eğlenceli bir şey var. Diyelim ki şirketimizde Reha Engin adında iki farklı kişi var... Olası bir senaryo, öyle değil mi? Böyle bir durumda; PERSONEL tablosunda, AD sütunun da Reha ve SOYAD sütununda Engin yazan iki farklı kayıt yer alacaktır.

Primary Key Aşağıdaki resimde ilk iki kayda dikkat edin.

Primary Key Peki, biz bu iki kaydı birbirinden nasıl ayıracağız? Diyelim ki maaş günü geldi ve muhasebe departmanı bu tablodaki kayıtlara göre maaş dağıtacak. Muhasebe elemanı hangi Reha Engin e 450, hangi Reha Engin e 800 TL ödeyeceğini nereden bilebilir? Öyle ya, Sayın Reha Engin, lütfen maaşınızı almak için muhasebeye gelin diye bir anons yapıldığında, muhasebeye iki kişi gelecektir. Bu problemin çözümü, oldukça basittir. Şirketteki her kişiye bir personel numarası atasak, ve bu personel numaralarını da veritabanına eklesek nasıl olur?

Primary Key Evet... Şirkette herkesin kendine ait bir personel numarası olsa ve maaşları ada göre değil personel numarasına göre dağıtsak, problemimiz tamamen çözülmüş olur. Öyle ya; şirketimizde 2 tane değil 100 tane Reha Engin de olsa; her birinin personel numarası farklı olacağı için, 56 numaralı personel, gel de maaşını al! anonsunu yaptığımızda vezneye tek bir kişi gelecektir.

Primary Key Personel numarası ile ilgili iki özellik dikkatinizi çekmiş olmalı: Şirketimizdeki her bir kişiye sadece tek bir personel numarası atandı. Örneğin; Serkan Çiftçi nin personel numarası 3 tür. 3 dışında başka bir personel numarasına sahip değildir. Bir personel numarası, şirketimizde sadece tek bir kişiye atandı, örneğin; 43 numarası, sadece Suna Yaşar a aittir. Şirket bünyesinde, 43 numarasına sahip başka hiçbir çalışan yoktur.

Primary Key Bu durumda; personel numarası bilgisi, şirket çalışanlarımıza ait Primary Key haline gelmiş oluyor! Bu Primary Key sayesinde, her bir insana özel ve tekrarlanmayan bir numara atıyoruz. Aynı mantık, veritabanı tablolarında da geçerlidir. PERSONEL tablosuna ID adında bir alan eklediğimizi varsayalım. Bu alanda, her bir kişiye ait personel numarası yer alıyor olsun. Bu durumda; veritabanına 56 numaralı kaydı getir komutunu verdiğimizde, karşımıza sadece bir tane Reha Engin çıkacaktır.

Primary Key Not: Primary Key; verilerin birbirine karışmaması için tabloya eklenen tekrarsız alana verilen isimdir. Genelde, varolan her tablonun bir Primary Key'e sahip olması beklenir.

İlişki (Relation) Veritabanı teorisinin bir başka önemli konusuna gelmiş bulunuyoruz... İlişki kavramı o kadar önemlidir ki, İlişkisel Veritabanı (Relational Database) adında başlı başına bir teori vardır. Şimdi, bu teoriye küçük bir giriş yapacağız.

İlişki (Relation) Diyelim ki patronumuz şöyle bir taleple karşımıza dikildi: Her personel hangi departmanda çalışıyor görmek istiyorum. Bunun yanı sıra, departmanın bulunduğu odanın numarasını da göreyim. Böyle bir talep karşısında, birçoğumuzun aklına ilk gelecek fikir, PERSONEL tablosuna DEPARTMAN ve ODANO diye birer alan eklemektir.

İlişki (Relation) Bu çözüm ilk etapta kullanışlı gözükse de, birtakım sakıncaları da beraberinde getirecektir. Diyelim ki Muhasebe departmanının adı Finansman olarak değiştirildi. Bu durumda, PERSONEL tablosunda departman ismi Muhasebe olan bütün kayıtları birer birer tarayıp hepsini değiştirmemiz gerekirdi. Veya, şirketin yeni bir binaya taşındığını varsayalım. Bu durumda, her bir departmanın oda numarası değişecektir. Binlerce kişinin çalıştığı bir ortamda, her bir personelin karşılığındaki oda numaralarını değiştirmeye çalıştığınızı düşünebiliyor musunuz? Ya birini atlarsanız? Ya küçük bir hata yapılırsa? Bir başka sakıncalı örnek daha... Şirketimizin muhasebe departmanında yeni biri işe başladı diyelim. Bu kişiye ait veri girişini yapan kişi oda numarasını 1312 yerine yanlışlıkla 6235 diye girerse ne olacak? Kişi, muhasebe elemanı olmasına rağmen IT departmanına ait odada çalışıyormuş gibi gözükecektir.

İlişki (Relation) Bu basit örnekte bile bu kadar sakıncalı senaryo ortaya çıkabiliyorsa, yarattığımız modelde bir problem var demektir. Evet; gerçekten de, sakıncalarını görebilmek adına kasten yanlış bir model yarattık. Teknik olarak doğru olmasına rağmen; modelimiz, veritabanı mantığına aykırıdır. Veritabanı mantığının önemli ilkelerinden biri şöyle der: Her bir nesne tipi için ayrı bir tablo yarat! Nasıl personel verileriyle ürün verilerini birbirine karıştırmıyorsak, personel verileriyle departman verilerini de birbirine karıştırmamalıyız.

İlişki (Relation) Bu yüzden; doğru model kurmaya, ancak departmanlara ait bilgileri DEPARTMAN adlı yeni bir tabloya aktararak başlayabiliriz.

İlişki (Relation) Buraya kadar anlaşılmayan bir şey olmadığını düşünüyorum. Tablomuzun ID alanı Primary Key karakterindedir; yani her bir departmana ait tekrarlanma yan bir sayımız olacak. AD alanı ise, söz konusu departmanın ismini taşımaktadır. Bu şekilde, PERSONEL ve DEPARTMAN tablolarını birbirinden ayırmış bulunuyoruz... Peki, hangi personelin hangi departmanda çalıştığım nasıl ifade edeceğiz?

İlişki (Relation) Bu sorunun cevabı, DEPARTMAN tablosuna ait Primary Key i (DEPARTMAN.ID) PERSONEL tablosuna eklemekten geçiyor. PERSONEL tablosuna DEPARTMAN_ID adında yeni bir sütun eklemiş olduğumuza dikkat edin. Bu sütundaki değerler, DEPARTMAN tablosundaki ID sütununa karşılık gelmektedir.

İlişki (Relation) Not: İki farklı tablo arasındaki bağlantı; tablolardan birine, diğerinin Primary Key'i eklenerek sağlanır.

İlişki (Relation) Örneğin; Mehmet Ozman a ait PERSONEL kaydının DEPARTMAN_ID alanında 4 değeri yer alıyor. DEPARTMAN tablosuna giderek 4 numaralı kaydın hangi departmana ait olduğuna bakarak, Mehmet in nerede çalıştığım kolayca söyleyebiliriz. Gördüğünüz gibi, kendisi 4 numaralı departman olan IT departmanında çalışıyormuş ve oda numarası 6235 imiş. Güzel, değil mi?

İlişki (Relation) Şimdi... Az önceki senaryoları bu yeni yapı üzerinde tekrar gözden geçirelim. Muhasebe departmanının isminin Finansman olarak değiştirildiğini varsayalım. Bu durumda, DEPARTMAN tablosunda 1 numaralı kaydın AD alanına Finansman değerini girmemiz yeterlidir. DEPARTMAN tablosunun Primary Key i olan ID sütununda hiçbir değişiklik yapmadığımız için, PERSONEL tablosuna elimizi bile sürmüyoruz. Şirket başka bir binaya taşındığı için departmanların oda numaralan değişecek olursa, tek yapmamız gereken şey DEPARTMAN tablosundaki 9 kaydı güncellemektir. DEPARTMAN - PERSONEL bağlantısındaki anahtar alan olan DEPARTMAN.ID alanında değişen bir şey olmadığı için, PERSONEL tablosuna yine elimizi sürmüyoruz.

İlişki (Relation) Dikkat: Tablodaki kayıtlara ait Primary Key değerleri asla değiştirilmemelidir.

İlişki (Relation) Daha önce, veritabanı mantığına ait iki önemli prensip görmüştük. Bunlardan ilki, farklı nesne tiplerini ayrı tablolarda tutma prensibi idi. İkincisi, bir tablo içerisindeki kayıtları Primary Key ile etiketleme prensibi idi. Bu bölümde, yeni iki prensip daha gördük, iki farklı tablo arasındaki bağlantı; tablolardan birine, diğerinin Primary Key i eklenerek sağlanır. Bunun yanı sıra, bir kayda ait Primary Key asla değiştirilmemelidir. Bu şekilde, veritabanı tabloları arasındaki ilişkinin nasıl sağlandığını hep birlikte görmüş olduk. Bu şekilde ilişkilendirilmiş tablolar barındıran verıtabanına ise ilişkisel veritabanı (Relational Database) adı verilir.

Foreign Key İlişki kavramını incelerken, Foreign Key in ne anlama geldiğini farkında olmadan öğrenmiş olduk. DEPARTMAN tablosundaki ID sütunu, DEPARTMAN tablosunun Primary Key idir, bunu hepimiz biliyoruz. Buna karşılık, PERSONEL tablosundaki DEPARTMAN_ID sütunu, bir başka tablonun Primary Key ine referans olduğu için Foreign Key diye adlandırılır.

Normalizasyon Kabaca bir tabirle; bir veritabanını derli toplu bir hale getirme sürecine normalizasyon denir. Az önceki örneğimizde; departmanlara ait bilgileri PERSONEL tablosundan çıkarıp DEPARTMAN adlı yeni bir tabloya aktarmak, basit bir normalizasyon örneği idi. Normalizasyon çalışmaları çerçevesinde; bir veritabanı, genel veritabanı prensiplerine uygun hale getirilir.

Sonuç Bu bölümde, veritabanı mantığına ait temel kavramların üzerinden şöyle bir geçtik. Gördüğümüz örnek çerçevesinde, DEPARTMAN ve PERSONEL adlı iki tablo yaratarak, küçük bir şirket veritabanının temelini atmış olduk. Veritabanından bahsedebilmek ve diğer üniteleri takip edebilmek için ihtiyacımız olan teorik bilgileri bu bölümde edinmiş bulunuyoruz. Bundan sonraki bölümlerde; teori ve kavramları parça parça açıklamak yerine, eğitimimize kapsamı gittikçe artan örnekler üzerinde devam ediyor olacağız. Bu şekilde, pratiğe dayalı eğlenceli bir öğrenme çizgisi izlemeyi hedefliyorum.