Yapılandırılmış Sorgu Dili (SQL), modern veritabanlarının temelidir ve SQL'deki veri yapılarını anlamak, ilişkisel veritabanlarıyla çalışan herhangi bir geliştirici veya yönetici için çok önemlidir. Bir veritabanının verimliliği ve performansı, veri yapılarının ne kadar iyi tasarlandığına bağlıdır. Bu kılavuzda veri türleri, birincil anahtarlar, yabancı anahtarlar ve kısıtlamalar gibi SQL veri yapılarıyla ilgili bazı temel kavramlara bakacağız. Bu kavramlara hakim olduğunuzda uygulamalarınızı destekleyecek verimli, ölçeklenebilir veritabanları oluşturma ve sürdürme konusunda daha donanımlı olacaksınız.
SQL Veri Türlerini Anlamak
SQL'de veri türleri, bir sütunda saklanabilecek veri türünü belirler. Bir tablodaki her sütun belirli bir veri türüyle ilişkilidir; bu, tutarlılık ve veri bütünlüğü sağlar ve depolama ve performansın optimize edilmesine yardımcı olur. SQL, basit sayısal değerlerden ve metin dizelerinden tarihler ve ikili nesneler gibi daha karmaşık türlere kadar farklı ihtiyaçları karşılamak için çeşitli veri türleri sağlar. SQL'de en sık kullanılan veri türlerinden bazılarını inceleyelim:
- TAM SAYI: Veritabanı sistemine bağlı olarak minimum değerden maksimum değere kadar değişen işaretli tam sayı. Örneğin PostgreSQL -2,147,483,648 ile 2,147,483,647 arasındaki değerleri destekler.
- SMALLINT: INTEGER veri türüne benzer ancak daha küçük bir aralığa sahiptir, bu da onu sınırlı sayısal değerlere sahip sütunlar için daha uygun hale getirir. INTEGER ile karşılaştırıldığında depolama alanından tasarruf sağlar.
- SAYISAL(p, s) ve DECIMAL(p, s): Bunlar sabit nokta duyarlıklı veri türleridir; burada p toplam basamak sayısını, s ise ondalık noktadan sonraki basamak sayısını belirtir. Finansal verileri ve tam hassasiyet gerektiren diğer değerleri depolamak için kullanışlıdırlar.
- FLOAT(n) ve REAL: Bu veri türleri yaklaşık sayısal değerleri kayan nokta hassasiyetiyle saklar. Kesin kesinlik gerektirmeyen ve büyüklükleri önemli ölçüde değişebilen gerçek sayılar için kullanılırlar.
- VARCHAR(n): Maksimum n karakter uzunluğunda değişken uzunluklu karakter dizileri için kullanılır. Yalnızca gerçek veriler için gerekli alanı tüketerek depolama alanından tasarruf sağlar.
- CHAR(n): n karakter uzunluğunda sabit uzunlukta bir karakter dizisi. VARCHAR'ın aksine, depolanan veriler belirtilen uzunluktan daha küçük olsa bile her zaman aynı miktarda depolama alanı tüketir.
- METİN: Belirtilen maksimum uzunluğu olmayan değişken uzunluklu bir karakter dizisi. Kullanıcı yorumları veya açıklamaları gibi uzun metin verilerini depolamak için uygundur.
- DATE, TIME, TIMESTAMP: Bu veri türleri tarih ve saat bilgilerini saklar. Yalnızca tarih veya saatin saklanmasından, her ikisinin de bir zaman damgasıyla birlikte saklanmasına kadar çeşitli düzeyde ayrıntı düzeyi sağlarlar.
Her sütun için doğru veri türünü seçmek, veri bütünlüğünü sağlamak ve veritabanı performansını optimize etmek açısından çok önemlidir. Uygunsuz veri türlerinin kullanılması, uygulamanızın işlevselliğini etkileyebilecek kesme, yuvarlama hataları ve diğer veri işleme sorunlarına yol açabilir.
Birincil Anahtarlar, Yabancı Anahtarlar ve Kısıtlamalar
İlişkisel veritabanlarının temel özelliklerinden biri tablolar arasında ilişki kurabilme yeteneğidir. Bu, tablolar arasında tutarlı ilişkiler sağlayan, referans bütünlüğünü zorlayan birincil anahtarlar, yabancı anahtarlar, kısıtlamalar ve kurallar aracılığıyla gerçekleştirilir. Bu kavramları biraz açalım:
Birincil Anahtarlar
Birincil anahtar, bir tablodaki her satırı benzersiz şekilde tanımlayan bir sütun veya sütunlar kümesidir. Birincil anahtarlar, tablolar arasında ilişki kurulmasında ve veri tutarlılığının sağlanmasında çok önemlidir. Tablo başına yalnızca bir birincil anahtar olabilir ve değeri NULL olamaz. Tablolarınız için birincil anahtar seçerken dikkate almanız gereken en iyi uygulamalardan bazıları şunlardır:
- Benzersizlik: Birincil anahtarın benzersiz olması gerekir, yani doğru tanımlamayı sağlamak için tablodaki her satır için farklı bir değere sahip olmalıdır.
- Değiştirilemez: Birincil anahtar değerleri zaman içinde değişmemelidir. Anahtar değer değişirse ilişkiler bozulabilir ve veri tutarsızlıklarına neden olabilir.
- NULL olmayan: NULL değerler tablolar arasında ilişki kurmak için kullanılamayacağından birincil anahtar değerleri NULL olmamalıdır.
Yabancı anahtarlar
Yabancı anahtar, bir tablodaki başka bir tablonun birincil anahtarını ifade eden bir sütun veya sütunlar kümesidir. Tablolar arasında ilişkiler kurmak ve referans bütünlüğünü sağlamak için kullanılır. Yabancı anahtarın bulunduğu tabloya "çocuk" tablosu, birincil anahtarın bulunduğu tabloya ise "ana" tablo adı verilir. Yabancı anahtarlar NULL olabilir; bu, alt tablodaki bir satırın üst tablodaki karşılık gelen bir satıra ihtiyaç duymadığı anlamına gelir. Ancak yabancı anahtar NULL değilse, ana tabloda eşleşen birincil anahtar değerine sahip bir satır bulunmalıdır.
Kısıtlamalar
Kısıtlamalar, ilişkisel bir veritabanında veri bütünlüğünü zorunlu kılan kurallardır. Bir tablodaki verilerin karşılaması gereken koşulları belirtir ve bu koşulları ihlal edecek işlemleri engeller. SQL, veri yapılarını yönetmek için sütunlara ve tablolara uygulanabilecek çeşitli kısıtlama türleri sağlar; bunlar arasında:
- NOT NULL: Bir sütunun NULL değerler içermemesini sağlar.
- BENZERSİZ: Bir sütundaki tüm değerlerin benzersiz olmasını zorunlu kılar; yani iki satır aynı değere sahip olamaz.
- PRIMARY KEY: NOT NULL ve UNIQUE kısıtlamalarının bir kombinasyonu, bir sütunun her satır için benzersiz, NULL olmayan bir değere sahip olmasını garanti eder.
- YABANCI ANAHTAR: Tablolar arasındaki referans bütünlüğünü koruyarak bir sütun değerinin başka bir tablonun birincil anahtar sütunundaki bir değere karşılık gelmesini sağlar.
- KONTROL: Bir sütundaki değerlerin, bir aralık veya izin verilen değerler listesi gibi belirli bir koşulu veya koşullar kümesini karşıladığını doğrular.
Kısıtlamaların doğru şekilde tanımlanması ve yönetilmesi, veritabanınızın bütünlüğünü, tutarlılığını ve performansını korumak için çok önemlidir. Uygulamanızın işlevselliğini ve kullanıcı deneyimini olumsuz etkileyebilecek veri işleme hatalarını ve tutarsızlıkları önler.
Tablo Oluşturma ve Veri Yapılarını Tanımlama
SQL'de tablolar bir veritabanının ana bileşenleridir ve verileri yapılandırılmış bir biçimde saklarlar. Tablolar oluştururken uygulamanızın gereksinimlerine uygun veri yapılarını tanımlamak önemlidir. Burada SQL'de tabloların nasıl oluşturulacağını ve veri yapılarının nasıl tanımlanacağını tartışacağız.
Tablo Oluşturma
SQL'de bir tablo oluşturmak için CREATE TABLE
deyimini kullanacaksınız. Bu ifade, tablonun adını, sütunlarını ve ilgili veri türlerini belirlemenize ve ayrıca veri bütünlüğünü korumak için kısıtlamalar eklemenize olanak tanır.
İşte basit bir tablo oluşturmanın bir örneği:
CREATE TABLE employees ( employee_id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), email VARCHAR(100) UNIQUE, hire_date DATE );
Bu örnekte, şu sütunları içeren bir employees
tablosu oluşturuyoruz: employee_id
, first_name
, last_name
, email
ve hire_date
. Ayrıca, employee_id
sütununda bir PRIMARY KEY
kısıtlaması ve email
sütunu için bir UNIQUE
kısıtlaması da belirtiyoruz.
Resim kaynağı: Her Şey SQL
Tabloları Değiştirme
Bir tablo oluşturduktan sonra, uygulamanızın gelişen gereksinimlerine uyacak şekilde yapısını değiştirmeniz gerekebilir. SQL, mevcut tablolarınıza sütun eklemenizi, değiştirmenizi veya bırakmanızın yanı sıra kısıtlamaları eklemenizi, güncellemenizi veya bırakmanızı sağlayan ALTER TABLE
deyimini sağlar.
Bir tablonun nasıl değiştirileceğine ilişkin birkaç örnek:
-- Add a column ALTER TABLE employees ADD COLUMN job_title VARCHAR(50); -- Modify a column ALTER TABLE employees ALTER COLUMN job_title SET DATA TYPE VARCHAR(100); -- Drop a column ALTER TABLE employees DROP COLUMN job_title; -- Add a foreign key constraint ALTER TABLE employees ADD CONSTRAINT fk_department_id FOREIGN KEY (department_id) REFERENCES departments (department_id);
Bu örnekler, employees
tablosunu değiştirmek için ALTER TABLE
ifadesinin nasıl kullanılacağını gösterir. ALTER
, ADD
ve UPDATE
komutları, sütun veri türü ve kısıtlama ekleme gibi tablo yapısının çeşitli yönlerini değiştirir.
Dizinlerle Veritabanı Performansını Artırma
Dizinler, veri alma sürecini hızlandırmaya yardımcı olan ve böylece veritabanı performansını artıran veritabanı nesneleridir. Bir dizin oluştururken, veritabanı motoru, dizine alınmış sütunların bir kopyasını saklayacak ve bunu sıralı bir düzende tutarak daha hızlı aramalara ve daha verimli sorgu yürütülmesine olanak tanıyacaktır. Dizinlerin ayrıca, dizinlerin yeniden düzenlenmesini gerektirebilecek ekleme, güncelleme ve silme gibi veri değiştirme işlemleriyle ilgili bazı ek yük getirebileceğini unutmayın.
Dizin Oluşturma
Bir dizin oluşturmak için CREATE INDEX
deyimini kullanacaksınız. Bu ifade, indeksin adını, indeksin ilişkilendirilmesini istediğiniz tabloyu ve indekslenecek sütun(lar)ı belirtmenizi gerektirir.
İşte dizin oluşturmanın bir örneği:
CREATE INDEX idx_last_name ON employees (last_name);
Bu örnekte employees
tablosunda idx_last_name
isimli bir index oluşturuyoruz ve indexlenecek last_name
sütununu seçiyoruz.
Kümelenmiş ve Kümelenmemiş Dizinler
Dizinler iki ana türe ayrılabilir: kümelenmiş dizinler ve kümelenmemiş dizinler. Kümelenmiş dizin, bir tablodaki verilerin fiziksel sırasını belirler ve tablo başına yalnızca bir tane bulunabilir. Buna karşılık, kümelenmemiş dizinler, dizinlenmiş sütunlara göre sıralanan verilerin ayrı bir kopyasını saklar ve tablo başına birden fazla kümelenmemiş dizin oluşturulmasına olanak tanır.
Kümelenmemiş dizinler genellikle okuma ağırlıklı uygulamalar için daha iyi performans avantajları sağlarken, kümelenmiş dizinler sık güncellemeler, silmeler ve aralık sorgularıyla tablolara fayda sağlama eğilimindedir.
Doğru Endeksleri Seçmek
Veritabanınız için doğru dizinleri seçmek, sorgu kalıpları, veri dağıtımı ve tablo yapısı gibi çeşitli faktörlerin dikkatle değerlendirilmesini gerektirir. Uygun indeksleri belirlerken takip edilecek bazı kurallar şunlardır:
-
WHERE
yan tümcelerinde sıklıkla aranan veya kullanılan dizin sütunları. -
WHERE
yan tümcesinde birden çok sütun kullanan sorgular için bileşik dizinleri göz önünde bulundurun. - Aşırı indeksleme ve veri değiştirme performansını olumsuz etkileme konusunda dikkatli olun.
- Uygulamanızın gelişen gereksinimlerine göre dizin oluşturma stratejinizi düzenli olarak gözden geçirin ve güncelleyin.
AppMaster No-Code Platformunun Avantajlarından Yararlanmak
Veritabanlarını oluşturmak ve yönetmek, özellikle kapsamlı SQL bilgisi olmayanlar için zaman alıcı ve karmaşık olabilir. AppMaster'ın no-code platformunun yardımınıza geldiği yer burasıdır. AppMaster ile tek bir satır kod yazmadan görsel olarak veri modelleri oluşturabilir, iş süreçlerini tasarlayabilir ve REST API ve WSS endpoints oluşturabilirsiniz.
AppMaster platformu aşağıdakiler de dahil olmak üzere birçok avantaj sunar:
- Gereksinimler her değiştirildiğinde sıfırdan uygulamalar üreterek teknik borcu ortadan kaldırır.
- Web, mobil ve arka uç uygulamaları oluşturma sürecini hızlandırmak için hızlı uygulama geliştirme yetenekleri sağlıyoruz.
- Postgresql uyumlu herhangi bir veritabanını birincil veritabanı olarak destekleme.
- Kurumsal ve yüksek yüklü kullanım durumları için olağanüstü ölçeklenebilirlik sunar.
AppMaster kodsuz platformunu kullanarak, geleneksel kodlama yöntemlerine göre 10 kata kadar daha hızlı ve 3 kat daha uygun maliyetli web, mobil ve arka uç uygulamaları oluşturabilirsiniz. AppMaster güçlü no-code platformunu keşfederek veritabanı yönetiminizi ve uygulama geliştirmenizi bir sonraki seviyeye taşıyın.
Çözüm
Bu kapsamlı kılavuzda, veri türleri, birincil ve yabancı anahtarlar, kısıtlamalar, tablolar ve indeksleme dahil olmak üzere SQL'deki veri yapılarının çeşitli yönlerini araştırdık. Bu kavramlara hakim olmak, karmaşık uygulamaları kolayca yönetebilecek verimli ve ölçeklenebilir veritabanları oluşturmanıza olanak sağlayacaktır.
SQL veritabanlarıyla çalışırken, depolamayı optimize etmek ve veri bütünlüğünü sağlamak için veri türlerinin önemini göz önünde bulundurmayı unutmayın. Ayrıca, birincil ve yabancı anahtarlar aracılığıyla tablolar arasında ilişkiler kurun ve kısıtlamaları kullanarak veri bütünlüğü kurallarını uygulayın. Son olarak, daha hızlı veri alımını sağlamak ve sorgu yürütme planlarını optimize etmek için dizinleri kullanarak veritabanı performansınızı artırın.
Diyelim ki SQL veri yapılarının ayrıntılarına girmeden uygulamalar oluşturmanın bir yolunu arıyorsunuz. Bu durumda AppMaster, veri modelleri ile web ve mobil uygulamaları görsel olarak oluşturmanıza olanak tanıyan güçlü no-code bir platform sunar. AppMaster ile teknik borcu ortadan kaldırabilir ve gelişmiş proje ölçeklenebilirliğinin keyfini çıkarabilirsiniz. AppMaster bir deneyin ve no-code uygulama geliştirmenin basitliğini ve verimliliğini deneyimleyin. SQL veri yapılarına ilişkin sağlam bir anlayış ve AppMaster, you're now better equipped to create, manage, and optimize databases for your projects.