Takip et

SQL’de Tablolar Nasıl Oluşturulur ve Yönetilir?

SQL’de Tablolar Nasıl Oluşturulur ve Yönetilir? İlişkisel veritabanı yönetim sistemlerinin (RDBMS) temel yapı taşı olan tablolar, verileri

SQL’de Tablolar Nasıl Oluşturulur ve Yönetilir?

İlişkisel veritabanı yönetim sistemlerinin (RDBMS) temel yapı taşı olan tablolar, verilerin düzenli ve yapılandırılmış bir şekilde saklandığı yerlerdir. Bir veritabanının kalbi olan tabloların doğru bir şekilde oluşturulması, tasarlanması ve yönetilmesi, veritabanının performansı, güvenliği ve uzun vadeli sürdürülebilirliği için hayati öneme sahiptir. Bu teknik makalede, SQL kullanarak tabloların nasıl oluşturulacağını, değiştirileceğini, yönetileceğini ve iyi tablo tasarım ilkelerinin neler olduğunu detaylı bir şekilde inceleyeceğiz.

Tabloların Temel Amacı ve Yapısı

Bir tablo, satır (kayıt) ve sütunlardan (alanlar veya özellikler) oluşan iki boyutlu bir yapıdır. Her sütun belirli bir veri tipini temsil eder (örneğin, metin, sayı, tarih), her satır ise ilgili varlığın tek bir örneğini (örneğin, bir müşteri, bir ürün) içerir. Tablolar arasındaki ilişkiler, veritabanının ilişkisel yapısını oluşturur ve bu ilişkiler genellikle anahtar kavramlar (Primary Key ve Foreign Key) aracılığıyla tanımlanır.

Temel Kavramlar: Veri Tipleri ve Kısıtlamalar

Tablo oluşturmadan önce, her sütunun hangi türde veri tutacağını belirlemek için doğru veri tiplerini seçmek ve veri bütünlüğünü sağlamak için kısıtlamaları anlamak kritik öneme sahiptir.

Veri Tipleri

Veri tipleri, bir sütunda saklanabilecek veri türünü ve bu verilerin kaplayacağı alanı belirler. Doğru veri tipi seçimi, depolama alanını optimize etmenin yanı sıra veri tutarlılığını ve performansı da etkiler. En yaygın kullanılan veri tipleri şunlardır:

  • Sayısal Veri Tipleri:
    • INT (Integer): Tam sayılar için kullanılır. Genellikle -2 milyar ile +2 milyar arasında değer alır.
    • BIGINT: Çok daha büyük tam sayılar için kullanılır (yaklaşık -9 kentilyon ile +9 kentilyon).
    • SMALLINT, TINYINT: Daha küçük tam sayılar için kullanılır, daha az yer kaplar.
    • DECIMAL(p, s) veya NUMERIC(p, s): Hassas ondalık sayılar için kullanılır. p toplam basamak sayısını, s ise ondalık kısmın basamak sayısını belirtir (örn. DECIMAL(5, 2) -> 123.45).
    • FLOAT, REAL, DOUBLE PRECISION: Yaklaşık ondalık sayılar için kullanılır. Genellikle bilimsel hesaplamalarda tercih edilir, ancak hassasiyet sorunları olabilir.
  • Metin Veri Tipleri:
    • VARCHAR(n): Değişken uzunlukta karakter dizileri için kullanılır. n maksimum karakter sayısını belirtir. Yalnızca girilen metin kadar yer kaplar.
    • CHAR(n): Sabit uzunlukta karakter dizileri için kullanılır. Belirtilen n karakter sayısı kadar yer ayırır, daha kısa metinlerde boşluklarla doldurur.
    • TEXT veya LONGTEXT (MySQL): Çok uzun metinler için kullanılır. Maksimum uzunluk veritabanı sistemine göre değişir.
    • NVARCHAR(n), NCHAR(n) (SQL Server): Unicode karakterleri destekleyen metin tipleri.
  • Tarih ve Saat Veri Tipleri:
    • DATE: Yalnızca tarih (YYYY-MM-DD) bilgisi için.
    • TIME: Yalnızca saat (HH:MI:SS) bilgisi için.
    • DATETIME veya TIMESTAMP: Tarih ve saat bilgisini birlikte saklar. TIMESTAMP genellikle zaman dilimi bilgisi içerir ve otomatik güncellenebilir özelliklere sahip olabilir.
  • İkili Veri Tipleri:
    • BLOB (Binary Large Object), VARBINARY(n): Resimler, ses dosyaları gibi ikili verileri depolamak için kullanılır.
  • Mantıksal Veri Tipleri:
    • BOOLEAN (PostgreSQL), BIT (SQL Server/MySQL): Doğru/Yanlış (True/False) veya 0/1 değerlerini saklar.

Kısıtlamalar (Constraints)

Kısıtlamalar, bir tablodaki verilerin doğruluğunu, tutarlılığını ve bütünlüğünü sağlamak için kullanılan kurallardır. Kısıtlamalar, istenmeyen veya hatalı verilerin tabloya girilmesini engeller.

  • PRIMARY KEY (Birincil Anahtar): Bir tablodaki her satırı benzersiz bir şekilde tanımlayan bir sütun veya sütun kümesidir.
    • Her tabloda yalnızca bir PRIMARY KEY olabilir.
    • PRIMARY KEY sütunları NULL değer alamaz (NOT NULL olmalıdır).
    • Veritabanı tarafından otomatik olarak indekslenir, bu da arama performansını artırır.
  • FOREIGN KEY (Yabancı Anahtar): Bir tablodaki bir sütunun veya sütun kümesinin, başka bir tablodaki PRIMARY KEY sütununa referans vermesini sağlar.
    • İki tablo arasında ilişki kurar.
    • Referans bütünlüğünü (referential integrity) sağlar; yani, yabancı anahtarın referans verdiği birincil anahtar değeri, referans verilen tabloda mevcut olmalıdır.
    • Örnek: Siparişler tablosundaki MusteriID sütunu, Musteriler tablosundaki MusteriID (PRIMARY KEY) sütununa referans verir.
  • UNIQUE (Benzersiz): Bir sütundaki tüm değerlerin benzersiz olmasını sağlar.
    • PRIMARY KEY’den farklı olarak, bir tabloda birden fazla UNIQUE kısıtlama olabilir.
    • NULL değer alabilir (çoğu veritabanında, birden fazla NULL değer benzersiz kabul edilir).
    • Örnek: E-posta adresleri veya TC kimlik numaraları gibi alanlar için kullanılabilir.
  • NOT NULL: Bir sütunun NULL değer almasını engeller.
    • Bu kısıtlamaya sahip bir sütuna her zaman bir değer girilmesi zorunludur.
  • DEFAULT: Bir sütuna değer girilmediğinde otomatik olarak atanacak varsayılan bir değer belirler.
    • Örnek: Bir ürünün stok adedi girilmezse varsayılan olarak 0 atanabilir.
  • CHECK: Bir sütundaki değerlerin belirli bir koşulu karşılamasını sağlar.
    • Örnek: Bir ürünün fiyatının 0’dan büyük olmasını veya bir yaş değerinin 18 ile 65 arasında olmasını zorunlu kılabilir.

Tablo Oluşturma: CREATE TABLE Komutu

Tablolar, SQL’deki CREATE TABLE komutu kullanılarak oluşturulur. Bu komut, tablo adını, her sütunun adını, veri tipini ve kısıtlamalarını belirtmeyi gerektirir.

CREATE TABLE Sözdizimi


CREATE TABLE tablo_adi (
    sutun1_adi VERI_TIPI [KISITLAMA_1] [KISITLAMA_2],
    sutun2_adi VERI_TIPI [KISITLAMA_3],
    ...
    [CONSTRAINT kisitlama_adi] PRIMARY KEY (sutun_adi),
    [CONSTRAINT kisitlama_adi] FOREIGN KEY (sutun_adi) REFERENCES referans_tablo(referans_sutun),
    [CONSTRAINT kisitlama_adi] UNIQUE (sutun_adi),
    [CONSTRAINT kisitlama_adi] CHECK (kosul)
);

Basit Tablo Oluşturma Örnekleri

Örnek 1: Musteriler Tablosu

Bir müşteri tablosu oluşturalım. Her müşterinin benzersiz bir ID’si, adı, soyadı, e-posta adresi ve kayıt tarihi olsun. E-posta adresi benzersiz olmalı ve ID ile Ad-Soyad NULL olmamalıdır.


CREATE TABLE Musteriler (
    MusteriID INT PRIMARY KEY AUTO_INCREMENT, -- MySQL için AUTO_INCREMENT, SQL Server için IDENTITY(1,1), PostgreSQL için SERIAL
    Ad VARCHAR(50) NOT NULL,
    Soyad VARCHAR(50) NOT NULL,
    Eposta VARCHAR(100) UNIQUE NOT NULL,
    Telefon VARCHAR(15),
    KayitTarihi DATE DEFAULT CURRENT_DATE -- Veya GETDATE() SQL Server, NOW() PostgreSQL
);
Örnek 2: Urunler Tablosu

Ürünleri saklamak için bir tablo oluşturalım. Ürünlerin benzersiz bir ID’si, adı, fiyatı, stok adedi ve açıklaması olsun. Fiyat 0’dan büyük olmalı ve stok adedi varsayılan olarak 0 olmalıdır.


CREATE TABLE Urunler (
    UrunID INT PRIMARY KEY AUTO_INCREMENT,
    UrunAdi VARCHAR(100) NOT NULL,
    Fiyat DECIMAL(10, 2) NOT NULL CHECK (Fiyat > 0),
    StokAdedi INT DEFAULT 0,
    Aciklama TEXT
);
Örnek 3: Siparisler Tablosu (FOREIGN KEY ile)

Müşterilerin verdiği siparişleri tutacak bir tablo oluşturalım. Bu tablo, Musteriler tablosuna bir yabancı anahtar ile bağlanacaktır.


CREATE TABLE Siparisler (
    SiparisID INT PRIMARY KEY AUTO_INCREMENT,
    MusteriID INT NOT NULL,
    SiparisTarihi DATETIME DEFAULT CURRENT_TIMESTAMP, -- Veya GETDATE() SQL Server, NOW() PostgreSQL
    ToplamTutar DECIMAL(10, 2) NOT NULL CHECK (ToplamTutar >= 0),
    FOREIGN KEY (MusteriID) REFERENCES Musteriler(MusteriID)
);

Yukarıdaki örneklerde AUTO_INCREMENT, IDENTITY(1,1) ve SERIAL gibi ifadeler veritabanı sistemine göre otomatik artan ID sütunları oluşturmak için kullanılır. Lütfen kullandığınız veritabanı sistemine uygun olanı seçiniz.

Tablo Yapısını Değiştirme: ALTER TABLE Komutu

Bir tablo oluşturulduktan sonra, ihtiyaçlar değiştikçe yapısını değiştirmek gerekebilir. ALTER TABLE komutu, sütun ekleme, silme, değiştirme ve kısıtlama ekleme/silme gibi işlemleri gerçekleştirmek için kullanılır.

Sütun Ekleme (ADD COLUMN)

Mevcut bir tabloya yeni bir sütun eklemek için:


ALTER TABLE tablo_adi
ADD COLUMN yeni_sutun_adi VERI_TIPI [KISITLAMA];

Örnek: Musteriler tablosuna Cinsiyet sütunu ekleyelim.


ALTER TABLE Musteriler
ADD COLUMN Cinsiyet CHAR(1); -- 'E' (Erkek) veya 'K' (Kadın)

Sütun Silme (DROP COLUMN)

Mevcut bir tablodan bir sütunu silmek için:


ALTER TABLE tablo_adi
DROP COLUMN silinecek_sutun_adi;

Örnek: Musteriler tablosundan Telefon sütununu silelim.


ALTER TABLE Musteriler
DROP COLUMN Telefon;

Sütun Tipi veya Kısıtlamasını Değiştirme (MODIFY COLUMN / ALTER COLUMN)

Bir sütunun veri tipini veya kısıtlamalarını değiştirmek için sözdizimi veritabanı sistemine göre farklılık gösterebilir.

  • MySQL: MODIFY COLUMN
  • SQL Server: ALTER COLUMN
  • PostgreSQL: ALTER COLUMN ... SET DATA TYPE veya ALTER COLUMN ... SET/DROP NOT NULL

Örnek (MySQL): Urunler tablosundaki Aciklama sütununun veri tipini VARCHAR(255) olarak değiştirelim.


ALTER TABLE Urunler
MODIFY COLUMN Aciklama VARCHAR(255);

Örnek (SQL Server): Musteriler tablosundaki Eposta sütununu NULL değer alabilir hale getirelim.


ALTER TABLE Musteriler
ALTER COLUMN Eposta VARCHAR(100) NULL;

Kısıtlama Ekleme/Silme (ADD CONSTRAINT / DROP CONSTRAINT)

Mevcut bir tabloya kısıtlama eklemek veya var olan bir kısıtlamayı silmek için:


-- Kısıtlama Ekleme
ALTER TABLE tablo_adi
ADD CONSTRAINT kisitlama_adi KISITLAMA_TIPI (sutun_adi);

-- Kısıtlama Silme
ALTER TABLE tablo_adi
DROP CONSTRAINT kisitlama_adi;

Örnek: Musteriler tablosuna Eposta için UNIQUE kısıtlaması ekleyelim (eğer tablo oluşturulurken eklenmediyse).


ALTER TABLE Musteriler
ADD CONSTRAINT UQ_Musteri_Eposta UNIQUE (Eposta);

Örnek: Siparisler tablosundaki FOREIGN KEY kısıtlamasını silelim.


ALTER TABLE Siparisler
DROP CONSTRAINT siparisler_ibfk_1; -- Kısıtlama adı veritabanı tarafından otomatik atanmış olabilir, kontrol etmek gerekir.

Tablo Adı Değiştirme (RENAME TABLE)

Bir tablonun adını değiştirmek için sözdizimi veritabanı sistemine göre değişebilir.

  • MySQL: RENAME TABLE eski_ad TO yeni_ad;
  • SQL Server: EXEC sp_rename 'eski_ad', 'yeni_ad';
  • PostgreSQL: ALTER TABLE eski_ad RENAME TO yeni_ad;

Örnek (MySQL): Urunler tablosunun adını StokUrunleri olarak değiştirelim.


RENAME TABLE Urunler TO StokUrunleri;

Tabloya Veri Ekleme, Güncelleme ve Silme (DML İşlemleri)

Tablo yapısı hazırlandıktan sonra, içine veri eklemek, mevcut verileri güncellemek ve silmek için DML (Data Manipulation Language) komutları kullanılır.

Veri Ekleme (INSERT INTO)


INSERT INTO tablo_adi (sutun1, sutun2, ...)
VALUES (deger1, deger2, ...);

-- Tüm sütunlara değer giriliyorsa sütun adları atlanabilir:
INSERT INTO tablo_adi
VALUES (deger1, deger2, ...);

Örnek: Musteriler tablosuna yeni bir müşteri ekleyelim.


INSERT INTO Musteriler (Ad, Soyad, Eposta, Telefon, KayitTarihi)
VALUES ('Ayşe', 'Yılmaz', 'ayse.yilmaz@example.com', '5551234567', '2023-01-15');

Veri Güncelleme (UPDATE)


UPDATE tablo_adi
SET sutun1 = yeni_deger1, sutun2 = yeni_deger2, ...
WHERE kosul; -- WHERE koşulu belirtilmezse tüm satırlar güncellenir!

Örnek: Ayşe Yılmaz’ın e-posta adresini güncelleyelim.


UPDATE Musteriler
SET Eposta = 'ayse.yilmaz.yeni@example.com'
WHERE MusteriID = 1; -- Varsayımsal olarak MusteriID 1

Veri Silme (DELETE FROM)


DELETE FROM tablo_adi
WHERE kosul; -- WHERE koşulu belirtilmezse tüm satırlar silinir!

Örnek: MusteriID’si 1 olan müşteriyi silelim.


DELETE FROM Musteriler
WHERE MusteriID = 1;

Tablo Silme: DROP TABLE ve TRUNCATE TABLE

DROP TABLE

DROP TABLE komutu, bir tablonun tamamını (yapısı ve içerdiği tüm verilerle birlikte) veritabanından kalıcı olarak siler.


DROP TABLE tablo_adi;

Örnek: Siparisler tablosunu silelim.


DROP TABLE Siparisler;

Dikkat: Eğer silmeye çalıştığınız tabloya başka bir tablo FOREIGN KEY ile referans veriyorsa, bu işlem başarısız olabilir veya veritabanı sistemine bağlı olarak CASCADE seçeneği ile birlikte kullanılması gerekebilir (bu durumda referans veren tablodaki ilgili satırlar da silinebilir).


-- PostgreSQL örneği: Referans veren kısıtlamaları da siler
DROP TABLE Siparisler CASCADE;

TRUNCATE TABLE

TRUNCATE TABLE komutu, bir tablodaki tüm verileri hızlı bir şekilde siler, ancak tablonun yapısını korur. Genellikle DELETE FROM tablo_adi; komutundan daha hızlıdır çünkü her satırı tek tek silmek yerine tüm veri sayfalarını serbest bırakır ve genellikle işlem günlüğüne daha az kayıt yazar.


TRUNCATE TABLE tablo_adi;

Farklar:

  • DROP TABLE: Tablo yapısını ve verilerini siler.
  • TRUNCATE TABLE: Yalnızca verileri siler, tablo yapısını korur. Genellikle AUTO_INCREMENT sayaçlarını sıfırlar.
  • DELETE FROM: Yalnızca verileri siler, tablo yapısını korur ve AUTO_INCREMENT sayaçlarını sıfırlamaz. Her satırı tek tek siler ve işlem günlüğüne kaydeder, bu yüzden daha yavaş olabilir.

İleri Düzey Tablo Özellikleri ve Yönetimi

İndeksler (Indexes)

İndeksler, veritabanı tablolarındaki verilere daha hızlı erişim sağlamak için kullanılan özel arama tablolarıdır. Bir kitabın indeksine benzer şekilde çalışırlar; belirli bir sütundaki değerleri ve bu değerlerin bulunduğu satırların fiziksel konumlarını saklarlar. Bu, veritabanının büyük veri kümelerinde bile belirli satırları hızla bulmasına olanak tanır.

  • Neden Kullanılır? SELECT sorgularının performansını artırmak için. Özellikle WHERE, JOIN ve ORDER BY yan tümcelerinde kullanılan sütunlar için indeksler faydalıdır.
  • Dezavantajları: İndeksler disk alanı kaplar ve INSERT, UPDATE, DELETE işlemleri sırasında güncellenmeleri gerektiği için bu işlemlerin performansını bir miktar düşürebilir.
  • Türleri:
    • PRIMARY KEY İndeksi: Her PRIMARY KEY otomatik olarak indekslenir.
    • UNIQUE İndeksi: Her UNIQUE kısıtlama otomatik olarak indekslenir.
    • Non-Unique İndeks: Benzersiz olmayan değerler için oluşturulur.
    • Clustered İndeks (Kümelenmiş İndeks): Verilerin diskte fiziksel olarak indeksin sırasına göre depolanmasını sağlar. Bir tabloda yalnızca bir tane olabilir. (SQL Server’a özgü bir kavramdır, MySQL’de InnoDB motorunda PRIMARY KEY kümelenmiş indekstir.)
    • Non-Clustered İndeks (Kümelenmemiş İndeks): Verilerin fiziksel depolama sırasından bağımsızdır. Bir tabloda birden fazla olabilir.

İndeks Oluşturma:


CREATE INDEX indeks_adi
ON tablo_adi (sutun1, sutun2, ...);

-- Benzersiz indeks
CREATE UNIQUE INDEX indeks_adi
ON tablo_adi (sutun_adi);

Örnek: Musteriler tablosundaki Soyad sütununa bir indeks ekleyelim.


CREATE INDEX IX_Musteriler_Soyad
ON Musteriler (Soyad);

Görünümler (Views)

Bir görünüm, bir veya daha fazla tablodan türetilen sanal bir tablodur. Görünümlerin kendisi veri depolamaz; bunun yerine, bir sorgunun sonucunu temsil ederler. Görünümler, karmaşık sorguları basitleştirmek, güvenlik sağlamak (kullanıcılara yalnızca belirli sütunları veya satırları göstermek) ve veri soyutlama sağlamak için kullanılır.

Görünüm Oluşturma:


CREATE VIEW gorunum_adi AS
SELECT sutun1, sutun2, ...
FROM tablo_adi
WHERE kosul;

Örnek: Yalnızca belirli bilgileri içeren aktif müşterilerin bir görünümünü oluşturalım.


CREATE VIEW AktifMusteriler AS
SELECT MusteriID, Ad, Soyad, Eposta
FROM Musteriler
WHERE KayitTarihi >= '2023-01-01';

Otomatik Artan Sütunlar (Auto-Increment Columns)

Birincil anahtar olarak kullanılan ID sütunlarının her yeni kayıt eklendiğinde otomatik olarak artan benzersiz bir değer almasını sağlayan bir özelliktir. Bu, manuel ID atama hatalarını önler ve benzersizliği garanti eder. Her veritabanı sisteminde farklı anahtar kelimelerle ifade edilir:

  • MySQL: AUTO_INCREMENT
  • SQL Server: IDENTITY(başlangıç_değeri, artış_miktarı)
  • PostgreSQL: SERIAL veya BIGSERIAL

İyi Tablo Tasarımı İlkeleri

Etkili bir veritabanı, iyi tasarlanmış tablolara dayanır. İyi tablo tasarımı, veri tekrarını azaltır, veri bütünlüğünü artırır ve sorgu performansını optimize eder.

Normalizasyon (Normalization)

Normalizasyon, veritabanı tasarımında veri tekrarını (redundancy) azaltmak ve veri anormalliklerini (anomalies) önlemek için kullanılan bir dizi kuraldır. Farklı normal formlar (1NF, 2NF, 3NF, BCNF vb.) bulunur, ancak çoğu uygulama için 3NF yeterlidir.

  • 1. Normal Form (1NF):
    • Her hücrede tek bir değer olmalıdır (atomik değerler).
    • Her sütun benzersiz bir isme sahip olmalıdır.
    • Her satır benzersiz olmalıdır.
  • 2. Normal Form (2NF):
    • 1NF’de olmalıdır.
    • Tüm anahtar olmayan sütunlar, birincil anahtarın tamamına bağlı olmalıdır (bileşik anahtarlar için geçerlidir).
  • 3. Normal Form (3NF):
    • 2NF’de olmalıdır.
    • Anahtar olmayan hiçbir sütun, başka bir anahtar olmayan sütuna bağımlı olmamalıdır (geçişli bağımlılık olmamalıdır).

Amaç: Veri tekrarını en aza indirmek, veri bütünlüğünü sağlamak ve ekleme, güncelleme, silme anormalliklerini ortadan kaldırmaktır.

Denormalizasyon (Denormalization)

Normalizasyonun tam tersidir. Bazen, okuma performansını artırmak için kasıtlı olarak veri tekrarına izin verilir. Özellikle çok yoğun okuma işlemleri olan ve karmaşık JOIN’ler gerektiren durumlarda denormalizasyon düşünülebilir. Ancak, bu, veri tekrarı ve tutarsızlık riskini artırır, bu yüzden dikkatli kullanılmalıdır.

Veri Bütünlüğü (Data Integrity)

Veri bütünlüğü, veritabanındaki verilerin doğruluğunu ve tutarlılığını ifade eder. SQL kısıtlamaları, veri bütünlüğünü sağlamak için temel araçlardır.

  • Varlık Bütünlüğü (Entity Integrity): PRIMARY KEY kısıtlaması ile sağlanır. Her varlığın (satırın) benzersiz ve tanımlanabilir olmasını garanti eder.
  • Referans Bütünlüğü (Referential Integrity): FOREIGN KEY kısıtlaması ile sağlanır. İlişkili tablolar arasındaki verilerin tutarlı olmasını garanti eder.
  • Alan Bütünlüğü (Domain Integrity): Veri tipleri, NOT NULL, DEFAULT ve CHECK kısıtlamaları ile sağlanır. Bir sütundaki değerlerin belirli bir etki alanı (domain) içindeki kurallara uymasını sağlar.

İsimlendirme Kuralları (Naming Conventions)

Tutarlı ve açıklayıcı isimlendirme kuralları kullanmak, veritabanının anlaşılmasını ve bakımını kolaylaştırır. Öneriler:

  • Tablo adları çoğul (Musteriler, Urunler) veya tekil (Musteri, Urun) olabilir, ancak tutarlı olun.
  • Sütun adları açıklayıcı olmalı (MusteriID yerine ID kullanmaktan kaçının).
  • Büyük/küçük harf duyarlılığına dikkat edin (veritabanı sistemine göre değişir).
  • Boşluk ve özel karakterlerden kaçının, alt çizgi (_) kullanın (Musteri_ID).
  • Kısıtlamalar için standart önekler kullanın (örn. PK_, FK_, UQ_, CK_).

Güvenlik ve İzinler

Tablolar, hassas veriler içerebileceği için güvenlik büyük önem taşır. Kullanıcılara yalnızca ihtiyaç duydukları verilere erişim ve işlem yapma yetkisi verilmelidir.

  • GRANT komutu, belirli kullanıcılara veya rollere tablolar üzerinde SELECT, INSERT, UPDATE, DELETE gibi yetkiler verir.
  • REVOKE komutu, daha önce verilmiş yetkileri geri almak için kullanılır.

Örnek: ‘rapor_kullanici’ adlı kullanıcıya Musteriler tablosundan sadece veri okuma yetkisi verelim.


GRANT SELECT ON Musteriler TO rapor_kullanici;

Sonuç

SQL’de tablo oluşturma ve yönetimi, bir veritabanı yöneticisinin veya geliştiricisinin en temel ve kritik becerilerinden biridir. Doğru veri tiplerini seçmek, uygun kısıtlamaları uygulamak ve iyi tasarım ilkelerini takip etmek, güçlü, güvenilir ve yüksek performanslı bir veritabanı sistemi oluşturmanın temelini oluşturur.

Bu makalede ele alınan CREATE TABLE, ALTER TABLE, DROP TABLE gibi komutlar, tablo yapısını tanımlamanıza ve değiştirmenize olanak tanır. INSERT, UPDATE, DELETE gibi DML komutları ise tablolardaki verileri manipüle etmek için kullanılır. İndeksler ve görünümler gibi ileri düzey özellikler, performansı ve güvenliği artırmak için güçlü araçlardır. Son olarak, normalizasyon, veri bütünlüğü ve isimlendirme kuralları gibi iyi tasarım ilkeleri, veritabanınızın uzun vadeli sağlığı ve sürdürülebilirliği için vazgeçilmezdir.

Veritabanı tasarımı ve yönetimi, sürekli öğrenme ve pratik gerektiren dinamik bir alandır. Farklı veritabanı sistemlerinin (MySQL, PostgreSQL, SQL Server, Oracle vb.) kendine özgü nüansları ve ek özellikleri olduğunu unutmamak önemlidir. Bu temel bilgileri sağlam bir şekilde kavrayarak, karmaşık veritabanı projelerinde başarılı bir şekilde çalışmak için sağlam bir temel oluşturabilirsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version