Veritabanı Şeması
- İngilizcesi
- Database Schema
- Okunuşu
- deytıbeys skima
Kısaca
Veritabanı şeması, bir veritabanının tablolarını, sütunlarını, veri türlerini, ilişkilerini ve saklanan verinin uyması gereken kuralları tanımlayan planıdır.
Veritabanı şeması nedir?
Veritabanı şeması, veritabanındaki verinin nasıl düzenlendiğinin biçimsel tanımıdır. İlişkisel bir veritabanında tabloları, her tablodaki sütunları, her sütunun veri türünü ve birincil anahtarlar, yabancı anahtarlar ve NOT NULL kuralları gibi kısıtları listeler. Şema yalnızca yapıyı tarif eder; içinde saklanan gerçek veri satırlarını değil.
Şemayı CREATE TABLE gibi SQL ifadeleriyle tanımlar, daha sonra ALTER TABLE ile değiştirirsiniz; bunu genellikle her ortamın senkron kalması için sürümlü veritabanı migration'ları aracılığıyla yaparsınız. Veritabanı daha sonra şemayı her yazmada uygular: bir tamsayı sütununa metin eklemeye ya da zorunlu bir alanı boş bırakmaya çalışırsanız yazma reddedilir. Buna yazarken şema (schema-on-write) denir ve hatalı veriyi erkenden dışarıda tutar.
İyi bir benzetme bir binanın mimari planıdır: odaları ve nasıl bağlandıklarını gösterir, ancak mobilyaları ya da içerideki insanları değil. Birçok NoSQL veritabanı şemasız (schemaless) olarak tanımlanır; ancak pratikte uygulama yine de belirli bir biçim bekler, dolayısıyla şema sadece veritabanından uygulama koduna taşınır. Bu yaklaşıma bazen okurken şema (schema-on-read) denir.
Şema kelimesi karışıklığa da yol açabilir; çünkü PostgreSQL gibi bazı veritabanları onu bir ad alanı (namespace) için kullanır: tek bir veritabanı içinde tabloları gruplayan, public ya da sales gibi adlandırılmış bir kapsayıcı. Bu anlamda sales.orders, sales şemasındaki orders tablosu demektir. Bağlam genellikle birinin genel yapıyı mı yoksa bu tür bir ad alanını mı kastettiğini söyler.
Önemli noktalar
- Şema, verinin kendisini değil, veritabanının yapısını tanımlar.
- Tabloları, sütunları, veri türlerini, anahtarları ve kısıtları kapsar.
- Şema değişiklikleri genellikle sürümlü migration'larla uygulanır.
- İlişkisel veritabanları veri yazıldığında şemayı uygular.
- PostgreSQL'de şema aynı zamanda tabloları gruplayan bir ad alanıdır.
Örnek
-- Each column has a name, a data type, and optional rules
CREATE TABLE customers (
id SERIAL PRIMARY KEY,
email TEXT NOT NULL UNIQUE
);
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INT NOT NULL REFERENCES customers(id),
total NUMERIC(10, 2) NOT NULL,
created_at TIMESTAMP DEFAULT now()
);Sık sorulan sorular
Şema ile tablo arasındaki fark nedir?
Tablo, veri satırlarını tutan tek bir yapıdır; şema ise tüm tabloları ve aralarındaki ilişkileri içeren veritabanının tam tasarımıdır. PostgreSQL'de şema aynı zamanda adlandırılmış bir tablo grubu da olabilir.
NoSQL veritabanlarının şeması var mı?
Birçok NoSQL veritabanı sabit bir şema uygulamaz; bu yüzden her kaydın farklı alanları olabilir. Veri yine de uygulamanın dayandığı örtük bir biçime sahiptir ve birçok doküman veritabanı istediğinizde isteğe bağlı doğrulama kuralları eklemenize izin verir.
Bir veritabanı şeması güvenle nasıl değiştirilir?
Veritabanı migration'ları kullanın: her değişikliği sırayla uygulayan, kod gibi gözden geçirilebilen ve test edilebilen küçük, sürümlü betikler. Canlı sistemlerde eski bir sütunu kaldırmadan önce yeni bir sütun eklemek gibi geriye dönük uyumlu adımları tercih edin.
İlgili sayfalar
- VeritabanıVeritabanları, s. 37Veritabanı, bilgisayarda düzenli biçimde saklanan ve uygulamaların verimlice kaydedip arayıp güncelleyebildiği, bir yazılımla yönetilen veri topluluğudur.
- SQLVeritabanları, s. 29SQL, ilişkisel veritabanlarıyla çalışmanın standart dilidir; tablo oluşturmak ve içindeki veriyi eklemek, sorgulamak, güncellemek ve silmek için kullanılır.
- Veritabanı Migration'ıVeritabanları, s. 39Veritabanı migration'ı, bir sütun eklemek gibi veritabanı şemasını değiştiren sürümlü bir betiktir; her ortam aynı değişiklikleri aynı sırayla uygular.
- Birincil AnahtarVeritabanları, s. 2Birincil anahtar, bir veritabanı tablosundaki her satırı benzersiz biçimde tanımlayan, asla boş ya da tekrarlı olamayan bir sütun veya sütun kümesidir.
- Yabancı AnahtarVeritabanları, s. 45Yabancı anahtar, bir veritabanı tablosunda başka bir tablonun birincil anahtarına başvuran sütundur; ilişkili satırları bağlar ve başvuruları geçerli tutar.
- Veritabanı NormalizasyonuVeritabanları, s. 40Veritabanı normalizasyonu, her bilginin yalnızca bir kez saklanması için tabloları düzenleme sürecidir; tekrarlı veriyi azaltıp tutarsız güncellemeleri önler.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin