Veritabanı Nedir? RDBMS Kavramı
Giriş — Neden Bu Konuyu Öğreniyoruz?
Bir an için şunu düşün: telefonundaki rehber uygulamasını açıyorsun. İsimler, telefon numaraları, e-posta adresleri — hepsi düzenli bir şekilde sıralanmış. Bir isim arıyorsun, saniyeler içinde buluyorsun. Peki bu bilgiler nerede tutuluyor? Nasıl bu kadar hızlı bulunuyor? İşte tam bu noktada veritabanı kavramıyla tanışıyoruz.
Günümüzde kullandığın neredeyse her dijital ürün — Instagram, Netflix, bir e-ticaret sitesi, bankanın mobil uygulaması — arka planda bir veritabanı kullanıyor. Sipariş verdiğinde o sipariş bir yere kaydediliyor. Şifreni değiştirdiğinde yeni şifre bir yerde güncelleniyor. Ürün aradığında sonuçlar bir yerden geliyor. İşte o "bir yer" veritabanı.
Bu ders, SQL yolculuğunun ilk adımı. Burada veritabanının ne olduğunu, neden var olduğunu, nasıl çalıştığını ve temel yapı taşlarını öğreneceğiz. Bu temeli sağlam atmadan ileriki derslerdeki sorgular havada kalır.
Veritabanı (Database) Nedir?
En yalın tanımıyla veritabanı, verilerin düzenli ve organize bir şekilde saklandığı yapıdır. Ama bu tanım çok soyut kaldı, somutlaştıralım.
🎯 Analoji: Veritabanını bir kütüphane gibi düşün. Kütüphanede binlerce kitap var ama hepsi rasgele yığılmış değil — bölümlere ayrılmış (Roman, Bilim, Tarih...), her bölümde raflar var, her rafta kitaplar sıralı duruyor. Bir kitap arıyorsan katalog kartına bakıyorsun ve doğrudan gidip alıyorsun. İşte veritabanı da tam olarak bunu yapar: verileri düzenli tutar, hızlıca bulmanı sağlar.
Peki neden verileri düz bir dosyaya (mesela bir Excel dosyasına veya bir .txt dosyasına) yazmıyoruz? Yazabiliriz aslında, ama sorunlar hemen başlar:
Düz Dosya vs Veritabanı
| Özellik | Düz Dosya (Excel, CSV, TXT) | Veritabanı |
|---|---|---|
| Eş zamanlı erişim | Bir kişi açınca diğeri açamaz ya da çakışma olur | Binlerce kullanıcı aynı anda okuyup yazabilir |
| Veri tutarlılığı | Aynı müşteri 3 farklı yerde 3 farklı isimle olabilir | Kurallar koyarsın, tutarsız veri giremez |
| Hız | 1 milyon satırlık Excel'i açmayı dene... | Milyarlarca satırda bile saniyeler içinde sonuç |
| Güvenlik | Dosyayı açan her şeyi görür | Kim neyi görebilir, kontrol edersin |
| Yedekleme & Kurtarma | Dosya bozulursa? Geçmiş olsun | Otomatik yedekleme, crash recovery |
| İlişkisel sorgulama | Çok zor ve yavaş | "Bu müşterin tüm siparişlerini getir" tek satırda |
İşte bu yüzden ciddi her uygulama veritabanı kullanır.
Veritabanının Temel Görevleri
Bir veritabanı sisteminin dört temel görevi vardır — bunlara CRUD operasyonları denir:
Create (Oluşturma) — Yeni veri ekleme
Read (Okuma) — Mevcut verileri sorgulama
Update (Güncelleme) — Var olan verileri değiştirme
Delete (Silme) — Verileri kaldırma
Bu dört operasyon, veritabanıyla yapacağın her şeyin temelidir. İlerleyen derslerde bunların her birini detaylıca öğreneceğiz.
Veritabanı Yönetim Sistemi (DBMS) Nedir?
Veritabanı tek başına bir şey yapmaz — ona komut vermen, veri eklemen, sorgulaman gerekir. İşte bu işleri yapan yazılıma Veritabanı Yönetim Sistemi (DBMS — Database Management System) denir.
🎯 Analoji: Veritabanı bir depo ise, DBMS o deponun yönetici yazılımıdır. Depoya malzeme koyma, çıkarma, sayım yapma, güvenliği sağlama — hepsini DBMS yapar. Sen sadece "3 numaralı raftan şu ürünü getir" diyorsun, gerisini o hallediyor.
Yani:
Veritabanı = Verilerin kendisi + yapısı
DBMS = O verileri yöneten yazılım
Günlük konuşmada ikisi sıklıkla birbiri yerine kullanılır. "MySQL veritabanı" derken aslında "MySQL DBMS'i ile yönetilen veritabanı" kastedilir.
İlişkisel Veritabanı (Relational Database) ve RDBMS
Veritabanlarının birçok türü var: ilişkisel, belge tabanlı (document-based), anahtar-değer (key-value), grafik tabanlı (graph) ve daha niceleri. Bu kursun odak noktası ilişkisel veritabanlarıdır çünkü endüstride en yaygın kullanılan tür budur.
İlişkisel Model Nedir?
İlişkisel model, 1970 yılında IBM'de çalışan Edgar F. Codd tarafından ortaya atıldı. Temel fikir şudur: veriler tablolar (tables) halinde saklanır ve bu tablolar arasında ilişkiler (relationships) kurulur.
🎯 Analoji: Bir e-ticaret sitesi düşün. Müşteriler bir Excel sayfasında, ürünler başka bir sayfada, siparişler başka bir sayfada. Ama siparişler sayfasında "Bu siparişi kim verdi?" sorusunun cevabı, müşteriler sayfasına bir referansla verilir. İşte tablolar arası bu "referans verme" mekanizmasına ilişki (relationship) denir.
RDBMS Nedir?
RDBMS (Relational Database Management System), ilişkisel modeli uygulayan veritabanı yönetim sistemidir. Yani:
Verileri tablolar halinde saklar
Tablolar arasında ilişkiler tanımlar
SQL dilini kullanarak sorgulama yapar
Veri bütünlüğünü (data integrity) kurallarla korur
Popüler RDBMS'ler
| RDBMS | Açıklama | Lisans |
|---|---|---|
| MySQL | Dünyanın en popüler açık kaynak RDBMS'i. Web uygulamalarının favorisi | Açık kaynak (GPL) |
| PostgreSQL | Gelişmiş özelliklere sahip, güçlü açık kaynak RDBMS | Açık kaynak (BSD) |
| Oracle Database | Kurumsal dünyada çok yaygın, güçlü ama pahalı | Ticari |
| Microsoft SQL Server | Microsoft ekosisteminin veritabanı | Ticari (Express ücretsiz) |
| SQLite | Dosya tabanlı, kurulum gerektirmeyen hafif RDBMS | Açık kaynak (Public domain) |
| MariaDB | MySQL'in fork'u, topluluk tarafından geliştiriliyor | Açık kaynak |
Bu kursta MySQL syntax'ını temel alacağız çünkü:
Öğrenmesi en rahat olanlardan biri
Web dünyasında çok yaygın (WordPress, Laravel, Django hepsi destekler)
Ücretsiz ve açık kaynak
Diğer RDBMS'lere geçiş görece rahat (SQL büyük ölçüde standarttır)
💡 İpucu: PostgreSQL farklılıklarını derslerde not olarak belirteceğiz. Eğer PostgreSQL kullanıyorsan endişelenme — SQL'in %90'ı her iki sistemde de aynıdır.
Temel Kavramlar: Tablo, Satır, Sütun
İlişkisel veritabanının yapı taşlarını tanıyalım. Bu kavramlar kursun geri kalanında sürekli karşına çıkacak.
Tablo (Table)
Tablo, belirli bir varlığı (entity) temsil eden yapıdır. "Varlık" derken gerçek dünyada tanımlayabileceğin bir şeyi kastediyoruz: müşteri, ürün, sipariş, çalışan...
Her tablo bir isme sahiptir ve bu isim genellikle çoğul olarak verilir:
customers(müşteriler)products(ürünler)orders(siparişler)
Bir tabloyu Excel'deki bir sayfa (sheet) gibi düşünebilirsin — ama çok daha güçlü kuralları var.
Sütun (Column / Field)
Sütunlar, tablodaki varlığın özelliklerini (attributes) tanımlar. Her sütunun:
Bir adı vardır (örn:
first_name,email,price)Bir veri tipi vardır (metin mi, sayı mı, tarih mi?)
Opsiyonel kısıtlamaları (constraints) olabilir (boş bırakılamaz, benzersiz olmalı vb.)
Örneğin customers tablosundaki sütunlar:
customer_id— Benzersiz müşteri numarası (sayı)first_name— Müşterinin adı (metin)last_name— Müşterinin soyadı (metin)email— E-posta adresi (metin, benzersiz)city— Yaşadığı şehir (metin)
Satır (Row / Record / Tuple)
Satır, tablodaki tek bir veri kaydını temsil eder. Her satır, sütunlarda tanımlanan özelliklerin somut değerlerini içerir.
Bir örnekle görelim:
customers tablosu:
+-------------+------------+-----------+------------------------+----------+
| customer_id | first_name | last_name | email | city |
+-------------+------------+-----------+------------------------+----------+
| 1 | Ahmet | Yılmaz | ahmet@email.com | İstanbul |
| 2 | Zeynep | Kaya | zeynep@email.com | Ankara |
| 3 | Mehmet | Demir | mehmet@email.com | İzmir |
+-------------+------------+-----------+------------------------+----------+Bu tabloda:
3 satır (3 müşteri kaydı) var
5 sütun (5 özellik) var
Her satır bir müşteriyi temsil ediyor
Her sütun müşterinin bir özelliğini tutuyor
Birincil Anahtar (Primary Key)
Her tabloda, satırları birbirinden ayırt eden benzersiz bir tanımlayıcı olması gerekir. Buna birincil anahtar (primary key) denir.
Yukarıdaki tabloda customer_id birincil anahtardır çünkü:
Her müşterinin
customer_iddeğeri farklıdır (benzersiz)Hiçbir zaman boş (NULL) olamaz
Bir kez atandıktan sonra değiştirilmez (best practice)
🎯 Analoji: TC kimlik numarası gibi düşün. Herkesin farklı bir numarası var, hiç kimsenin numarası boş olamaz ve ömür boyu değişmez. İşte primary key de tablodaki her satır için aynı şeyi yapar.
Yabancı Anahtar (Foreign Key)
Tablolar arasındaki ilişkiyi kuran sütuna yabancı anahtar (foreign key) denir. Bir tablodaki foreign key, başka bir tablonun primary key'ine referans verir.
orders tablosu:
+----------+-------------+---------------------+--------------+
| order_id | customer_id | order_date | total_amount |
+----------+-------------+---------------------+--------------+
| 101 | 1 | 2024-01-15 10:30:00 | 299.99 |
| 102 | 2 | 2024-01-15 14:20:00 | 150.00 |
| 103 | 1 | 2024-01-16 09:00:00 | 75.50 |
+----------+-------------+---------------------+--------------+Burada orders tablosundaki customer_id bir foreign key'dir. customers tablosundaki customer_id'ye referans verir. Bu sayede:
Sipariş 101'i kimin verdiğini biliyoruz:
customer_id = 1→ Ahmet YılmazAhmet'in tüm siparişlerini bulabiliriz:
customer_id = 1olan tüm satırlar → 101 ve 103
İşte bu ilişki (relationship) kavramı, "ilişkisel veritabanı" adının kaynağıdır.
⚠️ Dikkat: Foreign key, veri bütünlüğünü korur. Eğer
customerstablosunda olmayan bircustomer_idile sipariş eklemeye çalışırsan, veritabanı bunu reddeder. Yani "hayalet müşteri"ye sipariş atamazsın.
Veritabanı Şeması (Schema)
Şema (schema), veritabanının yapısal tasarımıdır. Hangi tablolar var, her tabloda hangi sütunlar var, veri tipleri ne, tablolar arası ilişkiler nasıl — bunların tamamını tanımlayan plandır.
Bir binanın mimari planı nasıl binanın yapısını gösteriyorsa, şema da veritabanının yapısını gösterir. Binayı inşa etmeden önce planını çizersin — veritabanını oluşturmadan önce de şemasını tasarlarsın.
Bu kurs boyunca kullanacağımız e-ticaret veritabanı şemasını görselleştirelim:
┌─────────────┐ ┌─────────────┐
│ categories │ │ products │
├─────────────┤ ├─────────────┤
│ category_id │◄──────│ category_id │
│ category_name│ │ product_id │
│ parent_cat_id│───┐ │ product_name │
└─────────────┘ │ │ price │
▲ │ │ stock_qty │
└──────────┘ └──────┬───────┘
│
┌─────────────┐ ┌──────┴───────┐ ┌─────────────┐
│ customers │ │ order_items │ │ orders │
├─────────────┤ ├──────────────┤ ├─────────────┤
│ customer_id │◄──────│ item_id │──────►│ order_id │
│ first_name │ ┌───►│ order_id │ │ customer_id │──┐
│ last_name │ │ │ product_id │ │ order_date │ │
│ email │ │ │ quantity │ │ total_amount │ │
│ city │ │ │ unit_price │ │ status │ │
└─────────────┘ │ └──────────────┘ └─────────────┘ │
▲ │ │
└─────────┼──────────────────────────────────────────────┘
│
┌─────────────┐ │ ┌──────────────┐
│ departments │ │ │ employees │
├─────────────┤ │ ├──────────────┤
│ dept_id │◄─┼────│ department_id │
│ dept_name │ │ │ employee_id │
│ manager_id │──┘ │ first_name │
└─────────────┘ │ last_name │
│ salary │
│ manager_id │───► (self-reference)
└──────────────┘Bu şemada 7 tablo ve aralarındaki ilişkiler var. Kurs boyunca tüm örneklerimizi bu veritabanı üzerinden yapacağız.
İlişki Türleri — Kısa Bir Bakış
Tablolar arasında üç tür ilişki olabilir. Bunları ileride çok daha detaylı göreceğiz ama şimdiden tanışalım:
1. Bire-Çok (One-to-Many / 1:N)
En yaygın ilişki türü. Bir müşterinin birden fazla siparişi olabilir, ama her sipariş tek bir müşteriye aittir.
customers (1) ────► orders (N)
Bir müşteri → birçok sipariş
Bir sipariş → tek bir müşteri2. Bire-Bir (One-to-One / 1:1)
Bir tablodaki her satır, diğer tablodaki tam olarak bir satırla eşleşir. Örneğin, her müşterinin bir detay profili olabilir.
customers (1) ────► customer_profiles (1)3. Çoka-Çok (Many-to-Many / N:M)
Her iki tarafta da birden fazla eşleşme olabilir. Bir sipariş birden fazla ürün içerebilir ve bir ürün birden fazla siparişte yer alabilir. Bu ilişki doğrudan kurulamaz — bir ara tablo (junction table) gerekir.
orders (N) ◄───► order_items ◄───► products (M)order_items tablosu, orders ve products arasındaki çoka-çok ilişkiyi yönetir.
Veritabanı Mimarisi: İstemci-Sunucu Modeli
Veritabanı sistemleri genellikle istemci-sunucu (client-server) mimarisinde çalışır:
┌──────────────┐ ┌──────────────────┐
│ İstemci │ SQL ──►│ Veritabanı │
│ (Client) │◄── Sonuç│ Sunucusu │
│ │ │ (DB Server) │
│ - MySQL CLI │ │ │
│ - PHP uyg. │ │ ┌──────────────┐ │
│ - Python app │ │ │ Veritabanı │ │
│ - Web app │ │ │ Dosyaları │ │
└──────────────┘ │ └──────────────┘ │
└──────────────────┘İstemci (senin uygulamanız, komut satırı aracı vb.) bir SQL sorgusu gönderir
Veritabanı sunucusu sorguyu alır, işler, veritabanı dosyalarına erişir
Sonucu istemciye geri döndürür
Bu model sayesinde:
Veritabanı sunucusu güçlü bir makinede çalışabilir
Birden fazla istemci aynı anda bağlanabilir
Ağ üzerinden uzaktan erişim mümkün olur
💡 İpucu: SQLite bunun bir istisnasıdır — sunucu gerektirmez, doğrudan dosya üzerinde çalışır. Küçük projeler, mobil uygulamalar ve prototipleme için idealdir. Ama ciddi web uygulamaları için MySQL veya PostgreSQL kullanılır.
ACID Özellikleri — Veritabanının Güvenilirlik Garantisi
Bir veritabanı sistemi, verilerin güvenliğini ve tutarlılığını garanti etmek için ACID prensiplerini uygular. Bu kavram biraz ileri seviye gibi görünebilir ama temel mantığını anlamak önemlidir:
A — Atomicity (Bölünmezlik)
Bir işlem ya tamamen gerçekleşir ya da hiç gerçekleşmez. Yarım kalmaz.
Örnek: Banka havalesinde senin hesabından 1000 TL düşülüyor ve karşı tarafa 1000 TL ekleniyor. Ya ikisi de olur, ya ikisi de olmaz. "Senden düştü ama karşıya gitmedi" durumu kabul edilemez.
C — Consistency (Tutarlılık)
İşlem sonrasında veritabanı tutarlı bir durumda kalır. Tanımlanan kurallara uyulur.
Örnek: Stok sayısı negatif olamaz kuralı varsa, stoğu 0 olan üründen sipariş verilmeye çalışıldığında işlem reddedilir.
I — Isolation (Yalıtım)
Aynı anda çalışan işlemler birbirini etkilemez. Her işlem sanki tek başına çalışıyormuş gibi davranır.
Örnek: İki kişi aynı anda son bir ürünü sepete eklerse, ikisi de "eklendi" görmez — biri başarır, diğeri stok hatası alır.
D — Durability (Kalıcılık)
Bir işlem başarıyla tamamlandıysa, sonucu kalıcıdır. Sistem çökse bile veri kaybolmaz.
Örnek: Siparişini onayladın ve "Siparişiniz alındı" mesajını gördün. O anda sunucu çökse bile, sunucu tekrar açıldığında siparişin veritabanında duruyor.
NoSQL ile Karşılaştırma
Son yıllarda NoSQL veritabanları da çok popüler oldu. Hızlıca farkı anlayalım:
| Özellik | İlişkisel (SQL) | NoSQL |
|---|---|---|
| Veri yapısı | Tablolar, satırlar, sütunlar | Belgeler, anahtar-değer, graf, sütun ailesi |
| Şema | Katı, önceden tanımlı | Esnek, şemasız veya gevşek şemalı |
| İlişkiler | Foreign key ile güçlü ilişkiler | İlişkiler zayıf veya yok |
| Sorgu dili | SQL (standart) | Her biri kendine özgü (MongoDB → JSON-like sorgu) |
| ACID | Tam destek | Çoğunda kısıtlı (eventual consistency) |
| Ölçekleme | Dikey (daha güçlü sunucu) | Yatay (daha fazla sunucu ekle) |
| Kullanım | Bankacılık, e-ticaret, ERP | Sosyal medya, IoT, gerçek zamanlı analitik |
Örnek NoSQL veritabanları: MongoDB (belge tabanlı), Redis (anahtar-değer), Neo4j (graf tabanlı), Cassandra (sütun ailesi)
⚠️ Dikkat: "SQL mi yoksa NoSQL mi daha iyi?" yanlış bir soru. Doğru araç, doğru iş için seçilir. Bir e-ticaret sitesinin sipariş sistemi için ilişkisel veritabanı idealdir. Ama anlık mesajlaşma uygulamasının mesaj geçmişi için NoSQL daha mantıklı olabilir. Çoğu büyük şirket ikisini birlikte kullanır.
E-Ticaret Veritabanımız — Kurs Boyunca Kullanacağımız Örnek
Bu kursta tüm örneklerimizi bir e-ticaret veritabanı üzerinden yapacağız. Şimdi bu veritabanını ve tablolarını tanıyalım:
Tablolar ve Amaçları
| Tablo | Amacı | Gerçek Dünya Karşılığı |
|---|---|---|
categories | Ürün kategorileri | "Elektronik", "Giyim", "Kitap" |
products | Satılan ürünler | "iPhone 15", "Mavi T-Shirt", "SQL Kitabı" |
customers | Kayıtlı müşteriler | Site üyeleri |
orders | Verilen siparişler | Her sepet onayı bir sipariş |
order_items | Sipariş detayları | Siparişin içindeki her ürün |
employees | Şirket çalışanları | Müşteri hizmetleri, kargo ekibi |
departments | Departmanlar | "Satış", "Pazarlama", "IT" |
Tablolar Arası İlişkiler
Bir kategori birden fazla ürün içerir (1:N)
Bir kategori alt kategorilere sahip olabilir (self-referencing, 1:N)
Bir müşteri birden fazla sipariş verebilir (1:N)
Bir sipariş birden fazla ürün içerebilir (N:M,
order_itemsaracılığıyla)Bir çalışan bir departmana aittir (N:1)
Bir çalışan başka bir çalışanın yöneticisi olabilir (self-referencing, 1:N)
Bir departmanın bir yöneticisi vardır (1:1)
Bu yapıyı ilerleyen derslerde SQL komutlarıyla oluşturacağız. Şimdilik "böyle bir veritabanımız var" bilgisi yeterli.
Gerçek Dünya Örneği — Bir E-Ticaret Siparişinin Yolculuğu
Tüm kavramları bir gerçek senaryo üzerinden birleştirelim:
Senaryo: Zeynep, e-ticaret sitemize girip 2 ürün satın alıyor.
Müşteri kaydı: Zeynep siteye üye olduğunda
customerstablosuna bir satır eklenir:
`` customer_id: 2, first_name: "Zeynep", last_name: "Kaya", email: "zeynep@email.com", city: "Ankara" ``
Sepet onayı: Zeynep sepetini onaylayınca
orderstablosuna bir satır eklenir:
`` order_id: 102, customer_id: 2, order_date: "2024-01-15 14:20:00", total_amount: 150.00, status: "pending" ``
Sipariş detayları: Sepetindeki her ürün
order_itemstablosuna ayrı satır olarak eklenir:
`` item_id: 201, order_id: 102, product_id: 5, quantity: 1, unit_price: 100.00 item_id: 202, order_id: 102, product_id: 12, quantity: 2, unit_price: 25.00 ``
Stok güncelleme:
productstablosunda ilgili ürünlerinstock_quantitydeğeri düşürülürDurum güncellemesi: Sipariş kargoya verildiğinde
orderstablosundakistatus"shipped" olarak güncellenir
Gördüğün gibi, tek bir "sipariş ver" işlemi birden fazla tabloda okuma ve yazma işlemi gerektiriyor. İşte ilişkisel veritabanının gücü burada ortaya çıkıyor: tüm bu veriler birbiriyle ilişkili ve tutarlı şekilde yönetiliyor.
Sıkça Yapılan Hatalar
"Veritabanı = Excel tablosu" düşüncesi: Excel bir elektronik tablo uygulamasıdır, veritabanı değildir. Eş zamanlılık, veri bütünlüğü, performans gibi konularda Excel tamamen yetersizdir. Küçük veri setleri için iş görür ama "ciddi" iş yapacaksan veritabanı şart.
Birincil anahtarı atlama: "İsimlere göre bulurum" diye primary key koymamak büyük hatadır. İki "Ahmet Yılmaz" olduğunda sorun başlar. Her tabloya mutlaka bir primary key koy.
Her şeyi tek tabloya tıkmak: Müşteri bilgisini, sipariş bilgisini, ürün bilgisini tek bir tabloda tutmak başlangıçta "pratik" görünür ama veri tekrarı, güncelleme anomalileri ve performans sorunlarına yol açar. Verileri doğru tablolara bölmek (normalizasyon) çok önemlidir.
İlişkisel veritabanıyı ilişkisiz kullanmak: Tablolar oluşturup foreign key tanımlamamak, ilişkisel veritabanının en güçlü özelliğini kullanmamak demektir. Tabloların "konuşmasını" sağla.
"SQL eski teknoloji" düşüncesi: SQL 1970'lerden beri var — ama bu onu "eski" yapmaz, kanıtlanmış yapar. NoSQL'in popülerliği SQL'i öldürmedi, tam aksine SQL hâlâ en çok aranan veritabanı becerisi. Hemen her büyük şirketin sistemi SQL veritabanları üzerine kurulu.
Özet
Veritabanı, verilerin düzenli ve organize saklandığı yapıdır
DBMS, veritabanını yöneten yazılımdır (MySQL, PostgreSQL, Oracle vb.)
RDBMS, verileri tablolar halinde saklayan ve tablolar arası ilişkileri yöneten DBMS türüdür
Tablo bir varlığı temsil eder (müşteriler, ürünler, siparişler)
Sütun varlığın özelliklerini tanımlar (isim, fiyat, tarih)
Satır tek bir veri kaydını içerir (bir müşteri, bir ürün)
Primary Key her satırı benzersiz şekilde tanımlar
Foreign Key tablolar arası ilişkileri kurar
ACID özellikleri veritabanının güvenilirliğini garanti eder
İlişkisel veritabanları, veri bütünlüğü gerektiren uygulamalar (e-ticaret, bankacılık, ERP) için en uygun seçimdir
AI Asistan
Sorularını yanıtlamaya hazır