Veritabanı

Veritabanı Nedir? İlişkisel Veritabanı Mantığı

Veritabanı Nedir? İlişkisel Veritabanı Mantığı

Günümüz yazılım mimarilerinin merkezinde yer alan veritabanları, modern uygulamaların kesintisiz ve tutarlı çalışmasını sağlayan en temel bileşenlerden biridir. Akıllı telefonunuzdaki bir not uygulamasından küresel ölçekteki e-ticaret platformlarına kadar her sistem, ürettiği bilgiyi güvenli bir şekilde saklamak ve ihtiyaç anında hızla geri getirmek zorundadır.

Veritabanı Nedir ve Neden İhtiyaç Duyulur?

En basit tanımıyla veritabanı, düzenli ve yapılandırılmış bir biçimde saklanan veri topluluğudur. Ancak bu tanım tek başına yeterli değildir; çünkü verileri basit bir metin belgesinde veya elektronik tabloda da saklayabilirsiniz. Yazılım dünyasında veritabanı nedir sorusunun gerçek karşılığı, verinin yalnızca tutulması değil; aynı anda binlerce kullanıcı tarafından erişilebilmesi, yetkisiz kişilere karşı korunması ve veriler arasındaki tutarlılığın garanti altına alınması süreçlerini yöneten yazılımlar bütünüdür.

Geleneksel dosya sistemleri ya da düz metin dosyaları yerine veritabanı yönetim sistemlerinin (DBMS) tercih edilmesinin başlıca nedenleri şunlardır:

  • Eşzamanlı Erişim: Birden fazla kullanıcının veya sürecin aynı anda veriye erişip değişiklik yapabilmesini çakışma olmadan yönetir.
  • Veri Bütünlüğü: Tanımlanan kurallar ve kısıtlamalar sayesinde geçersiz, hatalı veya eksik veri girişini engeller.
  • Performans ve Sorgulama: Milyonlarca satır veri arasından istenen bilginin indeksler yardımıyla milisaniyeler içinde çekilmesini sağlar.
  • Güvenlik ve İzin Yönetimi: Hangi kullanıcının hangi veriyi okuyabileceğini veya güncelleyebileceğini detaylı erişim kontrol mekanizmalarıyla sınırlar.
  • Yedekleme ve Kurtarma: Donanım arızası veya sistem çökmesi durumunda verilerin geri getirilebilmesi için işlem günlükleri tutar.

İlişkisel Veritabanı (RDBMS) Mantığı

İlişkisel veritabanı modeli, 1970 yılında Edgar F. Codd tarafından ortaya atılan matematiksel bir mantığa dayanır. Bu modelde veriler, satır ve sütunlardan oluşan tablolar (relations) halinde saklanır. Her tablo belirli bir varlığı (örneğin kullanıcılar, ürünler veya faturalar) temsil eder.

İlişkisel veritabanlarının temel felsefesi, veri tekrarını (redundancy) en aza indirmek ve veriler arasındaki mantıksal bağları matematiksel küme teorisine uygun biçimde tanımlamaktır. Örneğin bir e-ticaret sisteminde her sipariş kaydının içine müşterinin adını, adresini ve telefonunu tekrar tekrar yazmak yerine; müşteri bilgileri tek bir tabloda tutulur ve sipariş tablosu bu müşteri tablosuna bağlanır.

İlişkisel veritabanı yönetim sistemleri (RDBMS) verinin tutarlılığını sağlamak için ACID prensiplerini uygular:

  • Atomicity (Bütünlük): Bir işlem (transaction) ya tamamen gerçekleşir ya da hiç gerçekleşmez.
  • Consistency (Tutarlılık): İşlem sonucunda veritabanı geçerli bir durumdan diğer bir geçerli duruma geçer.
  • Isolation (İzolasyon): Aynı anda çalışan işlemler birbirlerinin ara adımlarından etkilenmez.
  • Durability (Kalıcılık): Tamamlanan bir işlemin sonuçları sistem çökse dahi kaybolmaz.

Tablolar Arasındaki İlişki Tipleri

İlişkisel modelde tablolar üç temel ilişki türü ile birbirine bağlanır:

  • Bire Bir (One-to-One): Bir tablodaki tek bir kayıt, diğer tablodaki yalnızca tek bir kayıtla eşleşir. Örneğin bir kullanıcının yalnızca bir adet detaylı profil belgesinin olması.
  • Bire Çok (One-to-Many): Bir tablodaki bir kayıt, diğer tablodaki birden fazla kayıtla eşleşebilir. En yaygın modeldir; örneğin bir yazarın birden fazla kitabı olabilir ancak bir kitabın bu modelde tek bir ana yazarı vardır.
  • Çoka Çok (Many-to-Many): İlk tablodaki bir kayıt ikinci tablodaki birden fazla kayıtla, ikinci tablodaki bir kayıt da ilk tablodaki birden fazla kayıtla ilişkili olabilir. Örneğin öğrenciler ve dersler; bir öğrenci birden fazla ders alabilirken, bir dersi de birden fazla öğrenci alabilir. Bu ilişki veritabanında genellikle ara bir bağlayıcı tablo (junction table) ile çözülür.

Anahtar Kavramlar: Primary Key ve Foreign Key

İlişkisel mantığın hatasız çalışmasını sağlayan en önemli iki araç anahtarlardır.

Primary Key (Birincil Anahtar), bir tablodaki her satırı benzersiz biçimde tanımlayan sütun veya sütunlar grubudur. Bir tabloda yalnızca bir adet Primary Key bulunabilir, bu değer asla boş (NULL) olamaz ve yinelenemez. Genellikle otomatik artan bir tamsayı veya UUID formatında tutulur.

Foreign Key (Yabancı Anahtar), bir tablodaki sütunun başka bir tablonun Primary Key sütununa işaret etmesidir. Bu yapı referans bütünlüğünü (referential integrity) sağlar. Yabancı anahtar sayesinde var olmayan bir kullanıcıya sipariş atanması veya müşterisi silinmiş siparişlerin sistemde sahipsiz kalması gibi hataların önüne geçilir.

Pratik SQL Örneği ile İlişkisel Model

İlişkisel veritabanlarında veri tanımlamak ve sorgulamak için standart dil olan SQL (Structured Query Language) kullanılır. Aşağıdaki örnekte kullanıcılar ve bu kullanıcılara ait siparişler tablosunun oluşturulması, veri eklenmesi ve birleştirilerek sorgulanması gösterilmektedir.

İlk olarak kullanıcılar tablosunu oluşturalım:

CREATE TABLE kullanicilar (
    id INT PRIMARY KEY,
    ad VARCHAR(50) NOT NULL,
    eposta VARCHAR(100) UNIQUE NOT NULL
);

Bu komut, benzersiz bir id sütununa sahip, ad ve e-posta içeren bir tablo tanımlar. E-posta sütunundaki UNIQUE kısıtlaması aynı adresin iki kez kaydedilmesini önler.

Şimdi bu kullanıcılara bağlanacak siparişler tablosunu oluşturalım:

CREATE TABLE siparisler (
    siparis_id INT PRIMARY KEY,
    kullanici_id INT,
    tutar DECIMAL(10, 2) NOT NULL,
    FOREIGN KEY (kullanici_id) REFERENCES kullanicilar(id)
);

Bu tanımda yer alan FOREIGN KEY ifadesi, siparisler tablosundaki kullanici_id sütununun mutlaka kullanicilar tablosundaki geçerli bir id değerine karşılık gelmesini şart koşar.

Tablolara örnek veri ekleyelim:

INSERT INTO kullanicilar (id, ad, eposta) VALUES 
(1, 'Ahmet Yılmaz', 'ahmet@example.com'),
(2, 'Ayşe Kaya', 'ayse@example.com');

INSERT INTO siparisler (siparis_id, kullanici_id, tutar) VALUES 
(101, 1, 250.50),
(102, 1, 120.00),
(103, 2, 89.90);

Bu işlem sonucunda Ahmet Yılmaz adına iki adet, Ayşe Kaya adına ise bir adet sipariş kaydı girilmiş olur.

Son olarak iki tabloyu birleştirerek hangi kullanıcının ne kadarlık sipariş verdiğini listeleyelim:

SELECT kullanicilar.ad, siparisler.siparis_id, siparisler.tutar
FROM kullanicilar
INNER JOIN siparisler ON kullanicilar.id = siparisler.kullanici_id;

Bu sorgu, INNER JOIN ifadesi sayesinde kullanicilar ve siparisler tablolarını kullanici_id eşleşmesi üzerinden birleştirir. Sonuç kümesinde kullanıcının adı ve o kullanıcıya ait sipariş tutarları tek bir liste halinde döner.

Özet ve Sonraki Adımlar

Veritabanları, modern yazılımlarda verinin güvenli, hızlı ve tutarlı bir şekilde yönetilmesini sağlayan kritik altyapılardır. İlişkisel veritabanı mantığı ise verileri parçalayarak tablolara yerleştirmeyi ve bu tabloları anahtarlar aracılığıyla birbirine bağlayarak tutarlılık sağlamayı hedefler.

Bu mimariyi daha derinlemesine öğrenmek istiyorsanız, bir sonraki adım olarak PostgreSQL veya MySQL gibi açık kaynaklı bir RDBMS sistemini bilgisayarınıza kurabilir; veritabanı normalizasyon kurallarını (1NF, 2NF, 3NF) ve sorgu performansını doğrudan etkileyen indeksleme mekanizmalarını inceleyebilirsiniz.

#ilişkisel veritabanı#rdbms#sql#veri yönetimi#veritabanı

Comments

No comments yet. Write the first comment.

Write a comment

Comments are published after admin approval.