Edgedb Constraints
[en] Read in English 2023-04-11
Edgedb, ilişkisel bir veritabanı yönetim sistemidir (RDBMS) ve verilerinizi güvenli bir şekilde saklamak ve yönetmek için çeşitli kısıtlama mekanizmaları sunar. Kısıtlamalar, veritabanınızda kaydedilen verilerin bütünlüğünü korumak için kullanılan bir dizi kuraldır.
Beş farklı kısıtlama türü vardır:
1. Birincil Anahtar Kısıtlamaları (Primary Key Constraints): Birincil anahtar kısıtlamaları, her satırın benzersiz olarak tanımlanmasını sağlar.
Bu kısıtlama, bir tabloda yalnızca birincil anahtar sütunu olabilir ve bu sütunun her değeri yalnızca bir kez kullanılabilir. edgedb, birincil anahtar kısıtlamalarını required niteliğiyle belirler.
2. Benzersiz Kısıtlamalar (Unique Constraints): Benzersiz kısıtlamalar, bir sütunun tüm değerlerinin benzersiz olmasını sağlar.
Bu kısıtlama, bir tabloda bir sütun için yalnızca bir benzersiz kısıtlama tanımlanabilir. edgedb, benzersiz kısıtlamaları unique niteliğiyle belirler.
3. Kontrol Kısıtlamaları (Check Constraints): Kontrol kısıtlamaları, bir sütunun belirli bir koşulu karşılaması gerektiğini belirtir.
Bu kısıtlama, bir tabloda bir sütun için birden çok kontrol kısıtlaması tanımlanabilir. edgedb, kontrol kısıtlamalarını expr niteliğiyle belirler.
4. Yabancı Anahtar Kısıtlamaları (Foreign Key Constraints): Yabancı anahtar kısıtlamaları, iki tablo arasındaki ilişkiyi tanımlar.
Bu kısıtlama, bir tabloda yalnızca bir yabancı anahtar kısıtlama tanımlanabilir ve bu kısıtlama, iki tablonun birincil anahtar sütunları arasındaki ilişkiyi belirler. edgedb, yabancı anahtar kısıtlamalarını link niteliğiyle belirler.
5. Eşleşen Kısıtlamalar (Matching Constraints): Eşleşen kısıtlamalar, iki sütun arasındaki eşleşmeyi tanımlar.
Bu kısıtlama, bir tabloda yalnızca bir eşleşen kısıtlama tanımlanabilir. edgedb, eşleşen kısıtlamaları match niteliğiyle belirler.
Tablo oluşturulurken veya mevcut tablolara kısıtlama eklendiğinde kullanılabilirler. Örneğin, Person
adında bir tablo oluşturmak ve bu tabloda birincil anahtar kısıtlaması eklemek istediğimizi varsayalım:
CREATE TYPE GenderEnum extending enum<('male', 'female', 'other')>;
CREATE TABLE Person {
id -> uuid,
name -> str,
age -> int64,
gender -> GenderEnum,
PRIMARY KEY (id)
};
Bu örnekte, Person
tablosunda id
sütunu birincil anahtar olarak belirlenmiştir. Ayrıca, GenderEnum
adında bir özel tür oluşturduk ve gender
sütununu bu türe bağladık.
Benzersiz kısıtlamaları eklemek için, sütunun yanına unique
niteliğini eklememiz yeterlidir:
CREATE TABLE Person {
id -> uuid,
name -> str,
age -> int64,
gender -> GenderEnum,
email -> str unique,
PRIMARY KEY (id)
};
Bu örnekte, email
sütunu benzersiz olarak belirlenmiştir.
Kontrol kısıtlamalarını eklemek için, sütunun yanına expr
niteliğini eklememiz yeterlidir:
CREATE TABLE Person {
id -> uuid,
name -> str,
age -> int64,
gender -> GenderEnum,
email -> str unique,
phone -> str expr,
PRIMARY KEY (id)
};
Bu örnekte, phone
sütunu, expr
niteliği kullanılarak kontrol kısıtlaması eklenmiştir. expr
niteliği, Python dilinin bir alt kümesi olan ve edbql dilinde kullanılan bir ifade dilidir.
Yabancı anahtar kısıtlamalarını eklemek için, sütunun yanına link
niteliğini eklememiz yeterlidir:
CREATE TABLE Post {
id -> uuid,
title -> str,
content -> str,
author -> uuid,
PRIMARY KEY (id),
FOREIGN KEY (author) REFERENCES Person
};
Bu örnekte, Post
tablosunda author
sütunu, Person
tablosundaki id
sütunu ile eşleşen bir yabancı anahtar olarak tanımlanmıştır.
Son olarak, eşleşen kısıtlamaları eklemek için, sütunun yanına match
niteliğini eklememiz yeterlidir:
CREATE TABLE Message {
id -> uuid,
sender -> str,
recipient -> str,
message -> str,
PRIMARY KEY (id),
MATCH (sender, recipient)
};
Bu örnekte, Message
tablosunda sender
ve recipient
sütunları eşleşen bir kısıtlama olarak belirlenmiştir.
Kısıtlamalar, verilerinizin doğru ve güvenli bir şekilde saklanmasını sağlamak için önemlidir. edgedb, birincil anahtar, benzersiz, kontrol, yabancı anahtar ve eşleşen kısıtlamaları içeren bir dizi kısıtlama türü sunar. Bu kısıtlamalar, veritabanınızı ölçeklenebilir, güvenli ve verimli hale getirmenize yardımcı olabilir.
Kısıtlamaların kullanımı, veritabanı tasarımınızı optimize etmek için önemlidir. Doğru kısıtlamaları eklemek, verilerinizin bütünlüğünü sağlayabilir ve veritabanınızın performansını artırabilir. edgedb, kısıtlamaların kullanımını kolaylaştırır ve veritabanı tasarımınızı daha iyi bir hale getirmenize yardımcı olur.