/
*----------------------------------------------------------------------------------
------------------------------------
C ve Sistem Programcıları Derneği
Veritabanı Programlama Kursu
Genel Notlar
Eğitmen: Oğuz KARAN
-----------------------------------------------------------------------------------
------------------------------------*/
Veritabanı (database) nedir?
Bilgilerin ve verilerin saklanması ve geri alınması için organize edilmiş dosyalara
denir. Veritabanları tek bir dosyada
olabileceği gibi farkklı dosyalar kullanılarak da organize edilebilir. Genellikle
bu organizasyon veriye en hızlı ve/veya
en iyi performansla erişmek için düzenlenir. Günümüzde pek çok uygulama veriler
üzerinde işlemler yaparlar ve dolayısıyla
veritabanları kullanırlar.
Veritabanının organizasyonuna yönelik pek çok model (paradigm) kullanılmaktadır.
Bunlardan en yagın kullanılardan biri
ilişkisel veritabanlarıdır (relational databases). Ancak farklı uygulamalarda
farklı modeller de kullanılabilmektedir.
Bu modellerin seçimi ve kullanımı yapılan uygulama için en avantajlı olan biçiminde
düşünülmelidir.
Veritabanı Yönetim Sistemi (Database Management System):
Veritabanı işlemleri ticari uygulamalarda uygulamanın performansını doğrudan ya da
dolaylı olarak etikileyen en önemli
elemanlardandır. Bu nedenle uygulama geliştiriciler veritabın işlemlerini mümkün
olduğunca hızlı, güvenli, güvenilir vb.
yapan araçlar kullanmak isterler. Veritabanı Yönetim Sistemleri (VTYS) veritabanı
işlemlerini yapan özel yazılımlardır.
Bir yazılım ürününe VTYS denmesi için bazı özelliklere sahip olması gerekir.
Bunlardan tipik olan bazıları şunlardır:
- Aşağı seviyeli dosya formatları ile kullanıcının ilişkisini keserler. VTYS'lerde
kullanıcıların, bilgilerin hangi
dosyalarda tutulduğunu ve nasıl organize edildiğini bilmeleri gerekmez. Yani adeta
veritabanını kullanıcıya bir kara
kutu gibi gösterir. Kullanıcı VTYS'ye ne yapacağını iletir ve işlemler VTYS
tarafından yapılır.
- VTYS'ler genel olarak yüksek seviyeli deklaratif dillerle kullanıcı isteklerini
karşılarlar ve yerine getirirler. Bu
dillerden ilişkisel veritabanı modelini kullanan sistemlerde en yaygın olanı "SQL
(Structured Query Language)"'dir.
- VTYS'ler genel olarak "client-server" çalışma modeline sahiptir. Birden fazla
kullanıcı VTYS'ye istekte bulunabilir
ve isteğine karşılık cevap alabilir.
- VTYS'lerin bir çoğu bir takım araçları da içerirler. Örneğin, yönetici
programlar, sorgulamaya ilişkin optimizasyon
araçları gibi.
- VTYS'ler belli düzeylerde security ve reliability/safety mekanizması ile
üretilirler. Yani bilgiler bu sistemlerde kolayca
bozulmazlar ve çalınamazlar
Anahtar Notlar: VTYS'lerde kullanılan dil her ne kadar SQL olarak adlandırılsa da
VTYS'ye özgü sentaks ve semantik kurallar
değişebilir. Örneğin, PostgreSQL'de kullanılan dil genel olarak "plpgsql"'dir.
MSSQL'de kullanılan dil de genel olarak
"T-SQL"'dir. Oracle'da kullanılan dil de "PL/SQL" olarak adlandırılır
VTYS'ye erişmek ve işlem yapmak için çeşitli araçlar vardır. Bu araçlar VTYS ile
birlikte yüklenebildiği gibi ayrı ayrı da
yüklenebilmektedir. Aslında bir VTYS'ye console üzerinden de erişilebilir. Bu işlem
görsel olarak çok fazla güçlü olmadığından
kullanıcı açısından karmaşık olabilmektedir. Ancak VTYS programcısının bunları
kullanmayı öğrenmesi gerekir. Biz de MSSQL Server
ve PostgreSQL için bu programları ileride ele alacağız. Ancak çoğu zaman hem görsel
açıdan güçlü hem de bir takım işlemleri
kolaylaştıran araçlar tercih edilir. Bu tip araçlara Integrated Development
Environment (IDE) denilmektedir. Bu anlamda çok
fazla IDE program bulunmaktadır. Bu IDE programlardan bazıları geneldir yani bir
VTYS için kullanılabilir. Bazıları ise
spesifik VTYS için geliştirilmiştir. Örneğin MSSQL Server için yıllardır kullanılan
SQL Server Management Studio isimli IDE
SQLServer'a özgüdür. Bu IDE programın yeni versiyonunun ismi Azure Studio olarak
değiştirilmiştir. Ya da örneğin DBeaver,
DataGrip gibi IDE'ler daha geneldir ve bir çok VTYS için kullanılabilmektedir. Peki
VTYS programcısı neyi tercih etmelidir?
Aslında tipik olarak ilgili VTYS geliştirilen araçlar tercih edilmelidir. Ancak
bazı VTYS'lere özgü geliştirilen IDE programları
çok gelişmiş değildir. Bu sebeple aslında VTYS için geliştirilmiş olanı da öğrenip
eğer çok gelişmiş değilse genel olanlardan
kullanmak daha iyi olabilir. Kursumuzda PostgreSQL için DBeaver ve Datagrip
ağırlıklı, MSSQL Server için de Windows işletim
sisteminde Azure Studio Windows dışı sistemler için de Datagrip veya DBeaver
uygulamalarını kullanacağız.
PostgreSQL'in Kurulması: PostgreSQL free kullanılabilen güçlü bir VTYS'dir.
PostgreSQL kurulumu için ilgili işletim
sistemine aşağıdaki link'den indirme yapılabilir:
[Link] (01 Ekim
2023)
DBeaver uygulaması aşağıdaki link'den indirilebilir:
[Link] (01 Ekim 2023)
Datagrip uygulaması aşağıdaki link'den indirilebilir:
[Link] (01 Ekim 2023)
SQL için iki tane temel kategori vardır: DDL (Data Definition Language), DML (Data
Manipulation Language)
Veriler üzerinde işlem yapan SQL cümleleri DML grubundadır. Bir veritabanı nesnesi
ile ilgili işlem yapan cümleler ise DDL
grubundadır.
Veritabanı üzerinde senaryo yani domain ne olursa şu 4 işlemden biri ya da bir kaçı
yapılır: Create, Read, Update, Delete (CRUD Operations)
Bu işlemle VTYS'ler için DDL ve DML anlamında da kullanılır. Ancak SQL'de cümleler
DDL ve DML olarak farklı olabilir
İlişkisel Veritabanı Modelini kullanan VTYS'lerde bir veritabanı genel olarak
tablolardan, tablolar da satırlardan ve sütunlardan oluşur.
Bu anlamda tablodaki satırlara kayıtlar (records/tuples), sütunlara ise alanlar
(fields) denir. İVTYS'lerde her alanın bir türü vardır. Alanlara
ilişkin türlerin isimleri ve özellikleri VTYS'ye göre değişebilir. Bu anlamda
PostgreSQL, SQLServer ve Oracle için türler ayrı ayrı ele alınacaktır.
Programcı veritabanını tasarlarken alanlar için uygun türleri belirler. Bu türlerin
neler olacağı şüphesiz tutulacak kayıtlara bağlıdır. Bu anlamda
programcı tasarlayacağı veritabanına ilişkin domain'i iyi bilmelidir ya da
öğrenmelidir.
Bir veritabanı içerisinde tablolar dışında da veritabanı nesneleri/elemanları
(database objects) bulunabilir.
Bir veritabanı elemanı yaratmak için CREATE cümleleri kullanılır. Veritabanı
elemanı üzerinde değişiklik yapmak için (örneğin tabloya yeni bir
alan eklemek için) ALTER cümleleri kullanılır. Bir veritabanı elemanını silmek için
DROP cümleleri kullanılır. Veritabanı elemanları hakkında
bilgi edinmek için VTYS'ye özgü başka veritabanı elemanları kullanılır. Bu
elemanlar VTYS'ye göre değişebilir. DDL cümleleri içerisinde genel olarak
CREATE, DROP ve ALTER cümleleri küçük bazı farklılıklar dışında aynıdır. Ancak
veritabanı elemanı hakkında bilgi edinme (sorgulama) VTYS'ye göre
değişir.
Bir tabloda CRUD işlemleri için genel olarak sırasıyla şu cümlelere kullanılır:
INSERT, SELECT, UPDATE, DELETE. Yine bu cümlelerde genel olarak aynı
olsa da VTYS'ye göre çeşitli farklılıkları olabilmektedir