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.



Bu gibi daha fazla gönderi...

Edgedb Computed Links

2023-04-12 | #edgedb #edgedb-links

Computed Links, iki nesne arasındaki ilişkileri tanımlamak için kullanılan bir yapıdır. Bu bağlantılar, ilişkilendirilmiş nesnelerin birbirine olan ilişkisini hesaplamak için tanımlanmış bir sorgu veya fonksiyon kullanarak oluşturulur. Bu yapı, veritabanında tutulan verilerin tutarlılığını sağlamak için oldukça yararlıdır. Computed Links, veriler arasında sıkı bir şekilde bağlantı kurmanın yanı sıra, veritabanında saklanan verilerin değiştirilmesi veya güncellenmesi durumunda bağlantıların otomatik olarak güncellenmesini sağlar. Ayrıca, sorgulama ve raporlama işlemlerini kolaylaştırmak için de kullanılabilir. Örneğin, bir Computed Link aracılığıyla iki nesne arasındaki ilişkiyi hesaplayarak, sorgulama işlemini daha verimli hale getirebilirsiniz.

Devamı 


Edgedb İlişkiler

2023-04-12 | #edgedb #edgedb-links #edgedb-multi-link

Edgedb’de iki tablo arasında ilişki kurmak için link anahtar kelimesi kullanılır. Linkler, bir objenin başka bir objeyle ilişkilendirilmesine izin verir. Örneğin, bir User tablosu ve bir Article tablosu varsa, Article tablosundaki her bir Article, bir Userya atfedilebilir. Bu durumda, User ve Article tabloları arasında bir ilişki kurabiliriz. İlk olarak, User tablosunda bir id özelliği tanımlarız. Bu özellik, kullanıcının benzersiz bir kimliğini temsil eder. type User { required property id -> uuid; property name -> str; } Ardından, Article tablosunda bir author özelliği tanımlarız.

Devamı 


Edgedb Exclusive Constraint

2023-04-12 | #edgedb #edgedb-constraints

Edgedb’de exclusive constraint (özel kısıtlama) terimi, belirli bir özelliğin benzersiz olmasını veya belirli bir aralıkta olmasını sağlayan bir kısıtlama türünü ifade eder. Örneğin, bir User objesinde email özelliğinin benzersiz olmasını sağlayan bir özel kısıtlama oluşturabilirsiniz. Böylece, her bir User’ın sadece bir kez kaydedilmesini sağlayabilirsiniz. Aşağıdaki örnekte, email özelliğinde benzersizlik sağlayan bir özel kısıtlama tanımlıyoruz: type User { required property id -> uuid; required property name -> str; exclusive constraint unique_email on (.

Devamı 