Veritabanı Nedir?
Veritabanı, bilgilerin düzenli, güvenli ve erişilebilir bir şekilde saklanmasını sağlayan sistemdir. Bir web sitesindeki kullanıcı hesapları, ürünler, siparişler, mesajlar ve ödeme kayıtları gibi bilgiler genellikle bir veritabanında tutulur.
Küçük bir projede birkaç bilgiyi dosyalarda saklamak mümkün olabilir. Ancak veri miktarı arttıkça bilgileri aramak, güncellemek, ilişkilendirmek ve güvenli biçimde yönetmek zorlaşır. Veritabanları, bu işlemlerin daha hızlı ve kontrollü şekilde yapılmasını sağlar.
Veritabanları Nerelerde Kullanılır?
Günümüzde kullanılan birçok dijital sistemin arka planında bir veritabanı bulunur.
- E-ticaret sitelerinde ürün, stok, müşteri ve sipariş yönetimi
- Üniversite sistemlerinde öğrenci, ders ve not kayıtları
- Hastane sistemlerinde hasta ve randevu bilgileri
- Sosyal medya platformlarında kullanıcı ve paylaşım verileri
- Mobil uygulamalarda profil, mesaj ve uygulama ayarları
- Kurumsal sistemlerde çalışan, müşteri ve muhasebe kayıtları
İlişkisel Veritabanı Nedir?
İlişkisel veritabanlarında bilgiler tablolar içerisinde saklanır. Her tablo belirli bir veri grubunu temsil eder. Örneğin bir e-ticaret sisteminde kullanıcılar, ürünler ve siparişler için ayrı tablolar oluşturulabilir.
| Tablo | Saklanan bilgiler |
|---|---|
| users | Kullanıcı adı, e-posta adresi ve parola bilgileri |
| products | Ürün adı, fiyatı, açıklaması ve stok miktarı |
| orders | Sipariş sahibi, sipariş tarihi ve toplam tutar |
Bu tablolar birbirleriyle ilişkilendirilebilir. Örneğin bir sipariş kaydı, siparişi oluşturan kullanıcının kimlik numarasını içerebilir. Böylece hangi siparişin hangi kullanıcıya ait olduğu kolayca bulunabilir.
Temel Veritabanı Kavramları
Tablo
Benzer türdeki verilerin satır ve sütunlar halinde tutulduğu yapıdır. Kullanıcılar tablosu, ürünler tablosu ve siparişler tablosu buna örnek olarak verilebilir.
Satır
Tablodaki tek bir kaydı temsil eder. Kullanıcılar tablosundaki her satır, farklı bir kullanıcıya ait olabilir.
Sütun
Kaydın sahip olduğu özellikleri belirtir. Kullanıcılar tablosunda ad, e-posta, parola ve kayıt tarihi gibi sütunlar bulunabilir.
Primary Key
Tablodaki her kaydı benzersiz biçimde tanımlayan alandır. Genellikle id isimli,
otomatik artan bir sayı kullanılır.
Foreign Key
Bir tablodaki kaydı başka bir tabloyla ilişkilendiren alandır. Örneğin siparişler tablosundaki
user_id alanı, kullanıcılar tablosundaki bir kullanıcıyı gösterebilir.
SQL Nedir?
SQL, ilişkisel veritabanlarıyla iletişim kurmak için kullanılan sorgu dilidir. SQL kullanılarak veritabanına yeni kayıt eklenebilir, mevcut kayıtlar görüntülenebilir, güncellenebilir veya silinebilir.
Temel SQL işlemleri genellikle CRUD olarak adlandırılır:
- Create: Yeni kayıt oluşturma
- Read: Kayıtları görüntüleme
- Update: Mevcut kayıtları güncelleme
- Delete: Kayıtları silme
Temel SQL Komutları
Tablo Oluşturma
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Bu komut users adında bir tablo oluşturur. Her kullanıcı için benzersiz bir
id, ad, e-posta adresi ve kayıt tarihi saklanır.
Yeni Kayıt Ekleme
INSERT INTO users (name, email)
VALUES ('Ahmet Yılmaz', 'ahmet@example.com');
Kayıtları Listeleme
SELECT * FROM users;
Belirli bir kullanıcıyı bulmak için koşul eklenebilir:
SELECT * FROM users
WHERE email = 'ahmet@example.com';
Kayıt Güncelleme
UPDATE users
SET name = 'Ahmet Mehmet Yılmaz'
WHERE id = 1;
Kayıt Silme
DELETE FROM users
WHERE id = 1;
Güncelleme ve silme işlemlerinde WHERE koşulunun doğru kullanılması önemlidir.
Koşul yazılmadığında tablodaki bütün kayıtlar etkilenebilir.
Popüler Veritabanı Yönetim Sistemleri
| Sistem | Öne çıkan kullanım alanı |
|---|---|
| MySQL | PHP tabanlı web siteleri ve e-ticaret sistemleri |
| PostgreSQL | Gelişmiş ve yüksek güvenilirlik gerektiren projeler |
| SQLite | Küçük uygulamalar, mobil uygulamalar ve yerel geliştirme |
| Microsoft SQL Server | Kurumsal ve Microsoft teknolojileriyle geliştirilen sistemler |
| MongoDB | Esnek belge yapısına ihtiyaç duyan NoSQL projeleri |
Veritabanı Tasarımında Dikkat Edilmesi Gerekenler
- Her tablo belirli ve açık bir amacı temsil etmelidir.
- Aynı bilgi gereksiz yere birden fazla tabloda saklanmamalıdır.
- Tablo ve sütun isimleri anlaşılır olmalıdır.
- Primary key ve foreign key ilişkileri doğru kurulmalıdır.
- E-posta gibi benzersiz olması gereken alanlara uygun kısıtlamalar eklenmelidir.
- Kullanıcı parolaları hiçbir zaman düz metin olarak saklanmamalıdır.
- Önemli veriler düzenli olarak yedeklenmelidir.
SQL Injection Tehlikesi
Kullanıcıdan alınan verilerin doğrudan SQL sorgusuna eklenmesi ciddi güvenlik açıklarına neden olabilir. Bu saldırı türüne SQL injection adı verilir.
Güvensiz bir sorgu aşağıdaki gibi oluşturulabilir:
$sql = "SELECT * FROM users WHERE email = '" . $_POST['email'] . "'";
Bunun yerine prepared statement ve parametreli sorgular kullanılmalıdır:
$stmt = $pdo->prepare(
"SELECT * FROM users WHERE email = :email"
);
$stmt->execute([
'email' => $_POST['email']
]);
Parametreli sorgular, kullanıcı tarafından gönderilen verilerin SQL komutu olarak çalıştırılmasını engellemeye yardımcı olur.
Veritabanı Öğrenmeye Nereden Başlanmalı?
Veritabanı öğrenmeye başlayan bir kişi öncelikle tablo, satır, sütun, primary key ve foreign key kavramlarını anlamalıdır. Daha sonra temel SQL komutları üzerinde çalışılabilir.
- Basit bir kullanıcı tablosu oluşturun.
- Tabloya örnek kayıtlar ekleyin.
SELECTsorgularıyla kayıtları listeleyin.WHERE,ORDER BYveLIMITkullanımını öğrenin.- İki tablo oluşturup aralarında ilişki kurun.
JOINsorgularıyla ilişkili kayıtları görüntüleyin.- PHP, Python veya başka bir backend diliyle veritabanı bağlantısı kurun.
Sonuç
Veritabanları modern web sitelerinin ve mobil uygulamaların temel bileşenlerinden biridir. Doğru tasarlanmış bir veritabanı; bilgilerin hızlı, güvenli ve düzenli biçimde yönetilmesini sağlar. SQL’in temel komutlarını öğrenmek, backend ve web geliştirme alanında ilerlemek isteyenler için önemli bir başlangıçtır.
Nizokka Soft Akademi içerisindeki sonraki içeriklerde SQL sorguları, tablo ilişkileri, JOIN işlemleri ve PHP ile güvenli veritabanı bağlantısı gibi konuları uygulamalı örneklerle inceleyeceğiz.