Ms Sqlde Çoklamayı Engelleme

Çoklamayı Engelleme: MS SQL’de Veri Bütünlüğünü Koruma

Çoklamayı engelleme, bir veritabanında aynı verinin birden fazla kez kaydedilmesini önleyen bir mekanizmadır. Bu, veri bütünlüğünü korumak ve veritabanının tutarlılığını sağlamak için önemlidir. MS SQL Server’da çoklamayı engelleme, çeşitli yöntemlerle uygulanabilir.

1. Benzersiz Anahtarlar

Benzersiz anahtarlar, bir tabloda her satırın benzersiz bir şekilde tanımlanmasını sağlayan sütun veya sütun kümeleridir. Benzersiz anahtarlar, bir tabloda aynı verinin birden fazla kez kaydedilmesini önler. Benzersiz anahtarlar, UNIQUE anahtar sözcüğü kullanılarak oluşturulur. Örneğin:

sql
CREATE TABLE Musteriler (
MusteriID int NOT NULL,
MusteriAdi varchar(50) NOT NULL,
MusteriSoyadi varchar(50) NOT NULL,
MusteriEposta varchar(100) NOT NULL,
PRIMARY KEY (MusteriID),
UNIQUE (MusteriEposta)
);

Yukarıdaki örnekte, Musteriler tablosunda MusteriID sütunu birincil anahtar olarak tanımlanmıştır. Bu, MusteriID sütunundaki her değerin benzersiz olması gerektiği anlamına gelir. Ayrıca, MusteriEposta sütunu benzersiz anahtar olarak tanımlanmıştır. Bu, MusteriEposta sütunundaki her değerin benzersiz olması gerektiği anlamına gelir.

2. Birincil Anahtarlar

Birincil anahtarlar, bir tabloda her satırın benzersiz bir şekilde tanımlanmasını sağlayan sütun veya sütun kümeleridir. Birincil anahtarlar, benzersiz anahtarlardan farklı olarak, bir tabloda yalnızca bir tane olabilir. Birincil anahtarlar, PRIMARY KEY anahtar sözcüğü kullanılarak oluşturulur. Örneğin:

sql
CREATE TABLE Musteriler (
MusteriID int NOT NULL,
MusteriAdi varchar(50) NOT NULL,
MusteriSoyadi varchar(50) NOT NULL,
MusteriEposta varchar(100) NOT NULL,
PRIMARY KEY (MusteriID)
);

Yukarıdaki örnekte, Musteriler tablosunda MusteriID sütunu birincil anahtar olarak tanımlanmıştır. Bu, MusteriID sütunundaki her değerin benzersiz olması gerektiği anlamına gelir.

3. Yabancı Anahtarlar

Yabancı anahtarlar, bir tabloda bir satırın başka bir tabloda bulunan bir satıra bağlı olduğunu gösteren sütun veya sütun kümeleridir. Yabancı anahtarlar, veri bütünlüğünü korumak ve veritabanının tutarlılığını sağlamak için kullanılır. Yabancı anahtarlar, FOREIGN KEY anahtar sözcüğü kullanılarak oluşturulur. Örneğin:

sql
CREATE TABLE Siparisler (
SiparisID int NOT NULL,
MusteriID int NOT NULL,
UrunID int NOT NULL,
SiparisTarihi datetime NOT NULL,
PRIMARY KEY (SiparisID),
FOREIGN KEY (MusteriID) REFERENCES Musteriler(MusteriID),
FOREIGN KEY (UrunID) REFERENCES Urunler(UrunID)
);

Yukarıdaki örnekte, Siparisler tablosunda MusteriID sütunu bir yabancı anahtardır. Bu, Siparisler tablosundaki her satırın Musteriler tablosunda bulunan bir satıra bağlı olduğu anlamına gelir. Ayrıca, UrunID sütunu bir yabancı anahtardır. Bu, Siparisler tablosundaki her satırın Urunler tablosunda bulunan bir satıra bağlı olduğu anlamına gelir.

4. Kontrol Kısıtlamaları

Kontrol kısıtlamaları, bir tabloda bulunan verilerin belirli kurallara uymasını sağlayan kısıtlamalardır. Kontrol kısıtlamaları, CHECK anahtar sözcüğü kullanılarak oluşturulur. Örneğin:

sql
CREATE TABLE Urunler (
UrunID int NOT NULL,
UrunAdi varchar(50) NOT NULL,
UrunFiyati decimal(18, 2) NOT NULL,
PRIMARY KEY (UrunID),
CHECK (UrunFiyati > 0)
);

Yukarıdaki örnekte, Urunler tablosunda UrunFiyati sütunu için bir kontrol kısıtlaması oluşturulmuştur. Bu kontrol kısıtlaması, UrunFiyati sütunundaki her değerin 0’dan büyük olması gerektiğini belirtir.

5. Tetikleyiciler

Tetikleyiciler, belirli olaylar gerçekleştiğinde otomatik olarak çalıştırılan veritabanı nesneleridir. Tetikleyiciler, veri bütünlüğünü korumak ve veritabanının tutarlılığını sağlamak için kullanılır. Tetikleyiciler, CREATE TRIGGER anahtar sözcüğü kullanılarak oluşturulur. Örneğin:

sql
CREATE TRIGGER MusteriEpostaKontrolü
ON Musteriler
FOR INSERT, UPDATE
AS
BEGIN
IF EXISTS (SELECT 1 FROM Musteriler WHERE MusteriEposta = NEW.MusteriEposta)
BEGIN
RAISERROR('Bu e-posta adresi zaten kullanılıyor.', 16, 1);
ROLLBACK TRANSACTION;
END;
END;

Yukarıdaki örnekte, Musteriler tablosunda MusteriEposta sütununa yeni bir değer eklendiğinde veya güncellendiğinde çalışacak bir tetikleyici oluşturulmuştur. Bu tetikleyici, MusteriEposta sütunundaki yeni değerin daha önce kullanılıp kullanılmadığını kontrol eder. Eğer yeni değer daha önce kullanılmışsa, bir hata mesajı görüntülenir ve işlem geri alınır.

Faydalı Siteler


Yayımlandı