Veritabanı kısıtlamasının net bir tanımı nedir? Bir veritabanı için kısıtlamalar neden önemlidir? Kısıtlama türleri nelerdir?
Veritabanı kısıtlamasının net bir tanımı nedir? Bir veritabanı için kısıtlamalar neden önemlidir? Kısıtlama türleri nelerdir?
Yanıtlar:
Kısıtlamalar, bir veritabanı şeması tanımının parçasıdır.
Bir kısıtlama genellikle bir tabloyla ilişkilendirilir ve bir CREATE CONSTRAINT
veya CREATE ASSERTION
SQL ifadesiyle oluşturulur.
Bir veritabanındaki verilerin uyması gereken belirli özellikleri tanımlarlar. Bir sütuna, bütün bir tabloya, birden fazla tabloya veya bütün bir şemaya uygulanabilirler. Güvenilir bir veritabanı sistemi, kısıtlamaların her zaman geçerli olmasını sağlar (muhtemelen bir işlemin içinde, sözde ertelenmiş kısıtlamalar için).
Yaygın kısıtlama türleri şunlardır:
Neden kısıtlamalara ihtiyacımız olduğunu anlamak için önce veri bütünlüğünün değerini anlamalısınız.
Veri Bütünlüğü, verilerin geçerliliğini ifade eder. Verileriniz geçerli mi? Verileriniz onları tasarladığınız şeyi mi temsil ediyor?
Size sorduğum tuhaf soruları düşünebilirsiniz, ama ne yazık ki çoğu zaman, veritabanları gereksiz verilerle, diğer tablolardaki satırlara geçersiz referanslar, çoktan gitmiş ... ve iş mantığına hiçbir şey ifade etmeyen değerler artık çözümünüz.
Tüm bu çöpler tek başına performansınızı düşürmeye eğilimli değildir, aynı zamanda uygulama mantığınız altında bir saatli bombadır ve sonunda anlaşılması için tasarlanmayan verileri geri alır.
Kısıtlamalar, tasarım sırasında oluşturduğunuz ve verilerinizin bozulmasını önleyen kurallardır. Bir veritabanı çözümünün kalp çocuğunuzun uzun süre hayatta kalması için çok önemlidir. Kısıtlamalar olmadan çözümünüz kesinlikle zamanla ve yoğun kullanımla azalacaktır.
Veritabanı tasarımınızı tasarlamanın, çözümünüzün yalnızca doğuşu olduğunu kabul etmelisiniz. Bundan sonra (umarım) uzun bir süre yaşaması ve son kullanıcılarının (yani, istemci uygulamaları) her türlü (garip) davranışına katlanması gerekir. Ancak geliştirmedeki bu tasarım aşaması, çözümünüzün uzun vadeli başarısı için çok önemlidir! Saygı duyun ve ona gereken zamanı ve dikkati gösterin.
Bilge bir adam bir keresinde şöyle demişti: "Veri kendini korumalıdır!" . Ve bu, kısıtlamaların yaptığı şeydir. Veritabanınızdaki verileri mümkün olduğunca geçerli tutan kurallardır.
Bunu yapmanın birçok yolu vardır, ancak temelde şu şekilde özetlenebilir:
sys.check_constraints
AdventureWorks örnek veritabanındaki görünümü kontrol edinBurada ima ettiğim gibi, veritabanı tasarımınız için en iyi ve en savunmacı kısıtlama yaklaşımını oluşturmak için bazı kapsamlı hususlar gerekir. Öncelikle yukarıdaki farklı kısıtlama türlerinin olanaklarını ve sınırlamalarını bilmeniz gerekir. Daha fazla okuma şunları içerebilir:
YABANCI ANAHTAR Kısıtlamaları - Microsoft
Yabancı anahtar kısıtlaması - w3schools
İyi şanslar! ;)
Kısıtlamalar, verilerdeki kurallardan başka bir şey değildir. Hangi verilerin geçerli ve neyin geçersiz olduğu kısıtlamalar kullanılarak tanımlanabilir. Böylece verilerin bütünlüğü korunabilir. Yaygın olarak kullanılan kısıtlamalar şunlardır:
NOT NULL
. Burada söz konusu sütun için hangi verileri girebileceğimizi ve bu sütun için neyin beklenmediğini belirleyebiliriz.Kısıtlamalar, verilerin belirli özelliklerini zorlamak için kullanılabilir. Basit bir örnek, int sütununu [0-100000] değerleriyle sınırlandırmaktır. Bu giriş iyi görünüyor.
Kısıtlamalar, veritabanındaki veriler için hangi değerlerin geçerli olduğunu belirler. Örneğin, bir değerin boş olmamasını (bir NOT NULL
kısıtlama) veya başka bir tabloda benzersiz bir kısıtlama olarak var olmasını ( FOREIGN KEY
kısıtlama) veya bu tabloda benzersiz olmasını ( gereksinimlerinize bağlı olarak bir UNIQUE
kısıtlama veya belki de PRIMARY KEY
kısıtlama ) uygulayabilirsiniz . ). Kısıtlamalar kullanılarak daha genel kısıtlamalar uygulanabilir CHECK
.
SQL Server 2008 kısıtlamaları için MSDN belgelerine muhtemelen en iyi başlangıç yeridir.
UNIQUE
kısıtlama (bunun bir PRIMARY KEY
kısıtlaması bir değişkendir). Belirli bir alanın tüm değerlerinin tablo genelinde benzersiz olup olmadığını kontrol eder. Bu- X
eksen kısıtlamasıdır (kayıtlar)
CHECK
kısıtlama (bunun bir NOT NULL
kısıtlaması bir değişkendir). İfade için aynı kaydın alanları üzerinde belirli bir koşulun geçerli olup olmadığını kontrol eder. Bu, Y
-eksen kısıtlamasıdır (alanlar)
FOREIGN KEY
kısıtlama. Bir alanın değerinin başka bir tablodaki bir alanın değerleri arasında bulunup bulunmadığını kontrol eder. Bu, Z
-axis kısıtlamasıdır (tablolar).
CHECK
öyleyse neden farklı olarak sınıflandıralım? yani " Y
-eksen" (ne anlama geliyorsa).
FOREIGN KEY
Bir CHECK
kısıtlama kullanarak nasıl uygularsınız ?
SELECT
sorgu. İçindeki CHECK
kısıtlamalarda alt sorgular (veya geçerli kaydın dışındaki değerlere başvuran diğer yapıları) kullanamazsınız SQL Server
.
Veritabanı, bir dizi gayri resmi iş kuralından oluşan kavramsal (veya iş) modelin bilgisayarlı mantıksal temsilidir. Bu kurallar, verilerin kullanıcı tarafından anlaşılan anlamıdır. Bilgisayarlar yalnızca resmi temsilleri anladığından, iş kuralları doğrudan bir veritabanında temsil edilemez. Resmi bir temsille, bir dizi bütünlük kısıtlamasından oluşan mantıksal bir modelle eşleştirilmelidirler. Bu kısıtlamalar - veritabanı şeması - iş kurallarının veritabanındaki mantıksal temsillerdir ve bu nedenle, verilerin DBMS tarafından anlaşılan anlamıdır. DBMS, iş kurallarını temsil eden tüm kısıtlamaların farkında değilse ve / veya uygulamıyorsa, verilerin ne anlama geldiğine dair eksik bir anlayışa sahiptir ve bu nedenle
Not: DBMS - "anlaşılan" anlamı - bütünlük kısıtlamaları - kullanıcı tarafından anlaşılan anlamla - iş kuralları - aynı değildir, ancak bazı anlamların yitirilmesine rağmen, verilerden mantıksal çıkarımları mekanikleştirme becerisi kazanırız.
Fabian Pascal'dan "Eski Bir Hata Sınıfı"
SQL'de temel olarak 4 tür ana kısıtlama vardır:
Etki Alanı Kısıtlaması: yeni bir demet için sağlanan öznitelik değerlerinden biri belirtilen öznitelik etki alanında değilse
Anahtar Kısıtlaması: Yeni bir demetteki bir anahtar özniteliğinin değeri, ilişkideki başka bir dizide zaten mevcutsa
Referans Bütünlüğü: Yeni bir demetteki yabancı anahtar değeri, başvurulan ilişkide bulunmayan bir birincil anahtar değerine başvuruyorsa
Varlık Bütünlüğü: Yeni bir tuple'da birincil anahtar değeri boşsa
kısıtlamalar, belirli bir koşulu doğrulayabilen koşullardır. Veritabanıyla ilgili kısıtlamalar; Etki Alanı bütünlüğü, Varlık bütünlüğü, Bilgi Bütünlüğü, Kullanıcı Tanımlı Bütünlük kısıtlamaları vb .'dir.