Bu makalede, MySQL veritabanında kullanılan veri tipleri ve sınırlamaları hakkında detaylı bir tartışma yapılıyor Numerik, string ve tarih/saat veri tiplerinden bahsedilerek, her birinin özellikleri ve sınırlamaları açıklanıyor Veritabanı sınırlamaları da ele alınarak, PRIMARY KEY, FOREIGN KEY ve CHECK sınırlamalarının ne olduğu anlatılıyor Veri tiplerinin doğru seçimi ve kullanımı, veritabanı performansı için önemlidir İnt, float ve decimal veri tiplerine daha detaylı bakılarak, hangi tiplerin ne amaçla kullanıldığı belirtiliyor Decimal veri tipinde precision ve scale özelliklerinin nasıl çalıştığı açıklanıyor

MySQL, günümüzde en popüler veritabanlarından birisidir. Bu veritabanı, en uygun performansı ve kolay kullanılabilirliği sunmak için birçok farklı veri tipi ve sınırlaması kullanır. Bu makalede, MySQL veritabanında kullanılan veri tipleri ve sınırlamaları hakkında bir tartışma yapacağız.
MySQL veritabanları, üç ana veri tipini kullanır: numerik, string ve tarih / saat veri tipleri. Bunlar hem tek değerler hem de çeşitli sınırlamalar içerebilirler.
Numerik veri tipleri arasında int, float ve decimal yer alır. Bu veri tipleri, sayısal değerlerin depolanması için kullanılır ve her biri kendi özellikleri ve sınırlamalarıyla birlikte gelir.
String veri tipleri, karakter dizilerinin depolanması için kullanılır. Bu kategori altında, char, varchar ve text veri tipleri yer alır. Her biri, karakter dizilerinin boyutuna ve diğer özelliklerine göre farklı özelliklere sahiptir.
Tarih / saat veri tipleri, tarihsel veya zamansal bilgilerin depolanması için kullanılır. Bu kategori altında, date, time, datetime ve timestamp veri tipleri bulunur. Her biri, zamansal bilginin doğruluğuna ve depolama yöntemine göre farklı özelliklere sahiptir.
Veritabanı sınırlamaları, belirli verilere uygulanan kısıtlamalardır ve verilerin doğru şekilde depolanmasını sağlar. Bu kategori altında, PRIMARY KEY, FOREIGN KEY ve CHECK sınırlamaları yer alır. Her biri, belirli verilerin kullanımına veya depolanmasına izin veren benzersiz özelliklere sahiptir.
Numeric Veri Tipleri
MySQL veritabanlarında kullanılan numeric veri tipleri arasında en sık kullanılanları int, float ve decimal veri tipleridir.
Veri Tipi | Boyut (byte) | Sınırlamaları |
---|---|---|
INT | 4 | -2,147,483,648 ile 2,147,483,647 arasındaki tam sayıları tutabilir. Int veri tipi kullanıldığında, belirli bir uzunluk belirleyebiliriz. Örneğin, INT(5) kullanırsak, alanın uzunluğunu belirleyerek, alanın sadece 5 rakamı tutmasını sağlarız. |
FLOAT | 4 | +/- 3.40282347E+38’i ve 1.17549435E-38’i civarında bir değeri tutabilir. FLOAT sayıları ondalıklı sayıları tutmak için kullanılabilir. |
DECIMAL | Depends on the precision | DECIMAL n (m) veri tipinde, n toplam rakam sayısını m ise ondalık sayıları temsil eder. Yani DECIMAL(3,2) alanı 9.99 ile 0.00 arasında sayıları tutabilir. |
Veri tipleri, verilerin nasıl saklanacağına, nasıl işleneceğine ve sorgulanacağına ilişkin bir etki yarattığından, doğru veri tipinin kullanılması veritabanı performansı üzerinde büyük bir etkiye sahiptir. Özellikle, sorguların hızlı çalışmasını sağlamak için, veritabanınızın boyutunu ve veri yoğunluğunu göz önünde bulundurarak doğru veri tiplerini seçmeniz önemlidir.
INT Veri Tipi
INT (tam sayı) veri tipi, MySQL veritabanında en yaygın olarak kullanılan numeric veri tiplerinden biridir. INT veri tipi, kullanıcıların tam sayılarla ilgili verileri saklamalarına izin verir. INT veri tipi kullanırken, saklanacak veri boyutuna göre uygun boyutta bir alan belirlenir. Bu sayede gereksiz alan kullanımı ve performans kayıpları önlenebilir.
INT veri tipinde, birkaç özellik bulunmaktadır:
- Saklanabilir Değerler: -2147483648 ile 2147483647 arasındaki tam sayılar
- Boyut: 4 Byte
- Unsigned: INT tipi unsigned (işaretli) olabilir. Bu durumda 0 ile 4294967295 arasındaki tam sayılar saklanabilir.
- Zorunlu Değer: INT veri tipi, zorunlu (NOT NULL) veya isteğe bağlı (NULL) olarak tanımlanabilir.
INT veri tipi, sıralama, filtreleme ve toplama gibi işlemler için de oldukça kullanışlıdır. Ancak, INT veri tipi kullanırken, veri tiplerinin doğru bir şekilde tanımlanması önemlidir. Aksi takdirde, yanlış veri tipleri, veritabanı hatalarına neden olabilir.
FLOAT Veri Tipi
FLOAT veri tipi, özellikle ondalık sayıların kullanıldığı hesaplama işlemlerinde sıkça kullanılır. Bu veri tipi, ondalık sayıların yanı sıra küsüratlı sayıların da saklanmasına olanak tanır. FLOAT veri tipi aynı zamanda, DOUBLE veri tipine göre daha az yer kaplar. FLOAT veri tipi, float(m,d) formatında tanımlanır, burada m, toplam sayı çiftleri sayısıdır ve d ise virgül ile ayrılan sayı kümesi için sayı basamaklarıdır.
FLOAT veri tipinin kullanımı sayesinde, özellikle sayısal hesaplama işlemlerinde hassas ve doğru sonuçlar almak mümkündür. FLOAT veri tipinin özellikleri arasında, veri yuvarlama, tam sayıya dönüştürme ve kesinlik belirleme gibi özellikler yer alır. FLOAT veri tipi, genellikle finansal uygulamalarda ve bilimsel araştırmalarda kullanılır.
DECIMAL Veri Tipi
MySQL veritabanında kullanılan bir diğer numeric veri tipi de decimal'dir. Bu veri tipi, ondalık sayıları depolamak için kullanılır ve genellikle para birimi gibi doğru hesaplamalar gerektiren değerleri tutmak için tercih edilir.
Decimal veri tipi, precision ve scale olarak adlandırılan iki özelliğe sahiptir. Precision, verinin tam sayı ve ondalık basamaklarının toplam sayısını belirtirken, scale sadece ondalık basamak sayısını belirtir. Örneğin, bir veri tipi decimal(10,2) şeklinde tanımlandığında, precision 10 ve scale 2'dir. Bu da bu veri tipinde ondalık basamakların toplam sayısının en fazla 10 olabileceğini ve bunların en fazla 2'sinin ondalık kısmı olabileceğini gösterir.
Decimal veri tipi için ayrıca sınırlamalar da vardır. Örneğin, bir decimal veri tipinde belirlenen precision ve scale değerine göre maksimum ve minimum değerler sınırlıdır. Decimal veri tipinin özellikle hassas hesaplamalar için ideal olduğunu söyleyebiliriz, ancak diğer numeric veri tiplerinin aksine daha fazla bellek kullanımına neden olabilir, bu nedenle çok büyük verilerde bazı problemler oluşabilir.
String Veri Tipleri
MySQL veritabanlarında kullanılan string veri tipleri; char, varchar ve text olarak sınıflandırılır. String veri tipleri, metinleri kaydetmek için kullanılır ve farklı uzunluklarda karakterleri tutabilirler. Bu veri tiplerinin her biri farklı özelliklere ve sınırlamalara sahiptir. Bu nedenle, hangi veri tipinin kullanılacağı, kullanılan karakter sayısına bağlıdır ve bu sayı veritabanı tasarımı aşamasında belirlenir.
Char veri tipi, sabit bir karakter uzunluğuna sahiptir ve genellikle daha kısa metinler için kullanılır. Char tipi için tanımlanan uzunlukta bir alan ayrılır. Örneğin, CHAR(10) için 10 karakterlik bir alan ayrılır ve bu alanda 10 karakter kullanılmasa bile alan tümüyle doldurulur. Char veri tipi bellek açısından daha az verimli olabilir, ancak daha hızlı bir erişim ve arama sağlar.
Varchar veri tipi de karakter dizilerini depolamak için kullanılır, ancak char veri tipinden farklı olarak değişken uzunluklara sahiptir. Varchar tipi için tanımlanan uzunluk, maksimum metin uzunluğunu gösterir. Örneğin, VARCHAR(255) sorgusunda, en fazla 255 karakter uzunluğuna izin verilir ancak bu sorgu altında daha kısa bir karakter dizisi depolanabilir. Varchar tipi bellek açısından daha verimlidir ancak daha yavaş bir erişim ve arama sağlar.
Text veri tipi, daha uzun metinler için kullanılır ve varchar ve char tipi kadar sınırlamalara sahip değildir. Text tipi için tek bir sütun altında 64 KB'a kadar metin verisi depolanabilir. Bu özellik, kısa metinlerin yanı sıra, örneğin bloğun altında tamamlanan blog yazıları gibi daha uzun metinlerin depolanması için kullanışlıdır. Text veri tipi bellek açısından daha az verimlidir ancak en esnek uzunluk ve arama özelliklerine sahiptir.
CHAR Veri Tipi
CHAR veri tipi, sabit uzunluklu karakter dizileri için kullanılır. Herhangi bir tabloda maksimum 255 karakter kaplayabilir. CHAR veri tipinin en önemli özelliği uzunlukların sabit olmasıdır. Bu özellik, veritabanı sorgularını hızlandırır ve arama işlemlerini daha verimli hale getirir. Ancak, verilerin uzunluğunun fazla olduğu durumlarda boş alanlar israf edilebilir. Bu da veri depolama maliyetini artırır.
CHAR veri tipinin kullanımı oldukça basittir. Sadece uzunluğu bilinen karakter dizilerinde kullanılır. Örneğin, bir yılın ay bilgisini saklamak için, CHAR(2) kullanılabilir. Bu durumda her zaman iki karakterli bir karakter dizisi kullanılır ve boş alanlar israf edilir.
Özellik | Açıklama |
---|---|
Uzunluk | Sabit, 0-255 arası bir değer |
Boşluk İsrafı | Verilerin uzunluğuna bağlı olarak fazladan boş alanlar kullanır |
Indexlenebilirlik | Indexlenebilir |
Performans | Sorgu hızı verimli |
VARCHAR Veri Tipi
VARCHAR veri tipi, değişken boyutlu karakter dizileri için kullanılır. Bu veri tipi, CHAR veri tipine benzer, ancak farklı olarak VARCHAR veri tipindeki veri boyutu değişebilir.
Veri boyutlarının değişebilmesi, VARCHAR veri tipinin kullanımını esnek ve tasarruflu hale getirir. Örneğin, bir kullanıcının adı veya soyadı gibi veriler, farklı boyutlara sahip olabilir. VARCHAR veri tipi kullanıldığında, boyut farklılıklarına uyum sağlamak için gereksiz alan kullanımı önlenir.
VARCHAR veri tipinde, boyut sınırı maksimum 65535 karakterdir. Bununla birlikte, boyut sınırı belirtilmezse, varsayılan boyut 1 karakterdir.
Özellik | Açıklama |
---|---|
Boyut | Maksimum 65535 karakter |
Değişken boyut | Veri boyutu değişebilir |
Bir örnek kullanımı:
CREATE TABLE ogrenciler ( id INT(11) NOT NULL AUTO_INCREMENT, adi VARCHAR(50) NOT NULL, soyadi VARCHAR(50) NOT NULL, PRIMARY KEY (id));
Bu örnekte, ogrenciler tablosunda adi ve soyadi sütunları VARCHAR veri tipi olarak tanımlanmıştır ve her biri maksimum 50 karakter boyutuna sahip olabilir.
TEXT Veri Tipi
MySQL veritabanında kullanılan string (metin) veri tiplerinden biri de text veri tipidir. Text veri tipi, char ve varchar veri tiplerine benzer şekilde metin verileri için kullanılır. Ancak text veri tipi, çok uzun metinler için tercih edilir.
Text veri tipi, varchar veri tipi ile benzerdir ancak varchar veri tipi maksimum karakter sayısını belirleyen bir parametreye sahipken text veri tipinde böyle bir sınırlama bulunmaz. Bu nedenle text veri tipi, uzun metinler için idealdir.
Özellik | Açıklama |
---|---|
Boyut | 65,535 byte (64 KB) kadar veri depolama kapasitesi |
Sınırlama | text veri tipi için bir üst sınır yoktur |
Kullanımı | Özellikle uzun metinler için kullanılır. |
Text veri tipi, varchar veri tipi gibi otomatik olarak boşluk karakterlerini kırpmaz. Bu nedenle metnin sonunda gereksiz boşluk karakterleri kalabilir.
Text veri tipi için verilen boyut değeri maksimum boyutu belirtmez. Maksimum veri boyutu, belirtilen boyutun üzerindeki veriler için BLOB veri tipi kullanılarak ayrılabilir
Text veri tipi sınırsız veri depolama kapasitesi sağlamakla birlikte, bu kapasitenin önemli bir bölümü boşluklar, null değerleri ve diğer gereksiz karakterlerle dolabilir. Veritabanı performansı açısından, gereksiz boşlukların ve karakterlerin veritabanında tutulması önerilmez. Bu yüzden metnin sonuna gereksiz karakterler eklenip eklenmediği mutlaka kontrol edilmelidir.
Tarih ve Saat Veri Tipleri
MySQL veritabanlarındaki verilerin saklanması belirli bir format gerektirir ve veri tipleri bu açıdan oldukça önemlidir. Tarih ve saat veri tipleri de MySQL veritabanında kullanılan önemli veri tiplerindendir. Bu veri tipleri birbirlerine benzer olsa da, farklı amaçlar için kullanılırlar.
DATE Veri Tipi: Bu veri tipi yalnızca tarih değerleri için kullanılır. Formatı 'YYYY-MM-DD'dir. '1970-01-01' ve '2038-01-19' arasındaki tarihleri depolayabilir. DATE veri tipi, yıl, ay ve gün bilgilerini tutar.
TIME Veri Tipi: TIME veri tipi yalnızca saat değerleri için kullanılır. Formatı 'hh:mm:ss' şeklindedir. TIME veri tipi, saat, dakika ve saniye bilgilerini tutar.
DATETIME Veri Tipi: DATETIME veri tipi tarih ve saat değerlerini depolamak için kullanılır. Formatı 'YYYY-MM-DD hh:mm:ss' şeklindedir. DATETIME tipi, yıl, ay, gün, saat, dakika ve saniye bilgilerini tutar.
TIMESTAMP Veri Tipi: TIMESTAMP veri tipi aslında bir tarih ve saat tipidir, fakat yalnızca 1970-01-01'den sonraki tarihleri kaydeder. Bu veri tipi, Unix zaman damgası şeklinde depolanır ve bazı durumlarda kolaylık sağlar.
Tarih ve saat veri tipleri, sundukları kolaylıklarla birçok alanda kullanılır. Örneğin, bir e-ticaret sitesi, müşterilerin verilen siparişlerin zamanını saklamak için DATETIME tipini kullanabilir. Benzer şekilde, bir diğer site ise, kullanıcının hangi saatlerde giriş yaptığını bilmek için TIMESTAMP tipini kullanabilir.
Sonuç olarak, MySQL veritabanında kullanılan tarih ve saat veri tipleri, verilerin depolanması için önemlidir. Bu veri tipleri tarih ve saat bilgilerini saklamada kolaylık sağlar ve birçok uygulama tarafından kullanılırlar. Bu veri tipleri, herhangi bir alanda verilerin doğru şekilde saklanabilmesi için oldukça önemlidir.
DATE Veri Tipi
DATE Veri Tipi, MySQL veritabanlarında sıklıkla kullanılan bir tarih veri tipidir. DATE veri tipi, yalnızca tarihi (yıl, ay, gün) kaydetmek için kullanılır. Saat bilgisi istenmiyorsa, DATE kullanımı önerilir.
DATE veri tipinin sınırlamaları aşağıdaki gibidir:
- MySQL 5.7 ve daha eski sürümlerinde, DATE değeri 1000-01-01 ile 9999-12-31 arasında olmalıdır.
- MySQL 8.0 ve sonraki sürümlerde, '0000-00-00' tarihi geçerli bir tarih olarak kabul edilmez.
- DATE değeri, 'YYYY-MM-DD' formatında saklanır.
DATE veri tiplerinde, tarihi 'YYYY-MM-DD' formatında göstermek gereklidir. Ancak, tarih bilgisi kullanıcının girdiği formatta veritabanına kaydedilir. Örneğin, kullanıcı '12/31/2022' tarihini girdiğinde, DATE veri tipi, otomatik olarak '2022-12-31' gibi doğru formatta kaydedilir.
Bir örnek vermek gerekirse, "2019-11-30" tarihinde bir işlem yapıldıysa, bu veriyi DATE formatında bir MySQL tablosunda kaydetmek gereklidir. Bu sayede, daha sonradan bu veriye ulaşıp işlemler yaparak raporlar oluşturmak mümkün olacaktır.
TIME Veri Tipi
MySQL veritabanında, zaman verilerini depolamak için TIME veri tipi kullanılır. Bu veri tipi yalnızca saat bilgisini depolarken, gün veya ay bilgisi içermez. TIME verileri saat, dakika, saniye ve hassaslık birimleri (mikro saniye) şeklinde saklanır ve aşağıdaki şekilde kullanılabilir:
- TIME veri tipi, 00:00:00 ile 23:59:59 arasındaki saatlerin depolanması için kullanılabilir.
- Bir TIME veri tipi alanı, NULL veya '0000-00-00 00:00:00' değerlerini kabul edebilir.
- TIME veri tipinin varsayılan değeri '00:00:00'dir.
- TIME verileri, belirli bir zaman aralığına sınırlandırılabilir.
Örneğin, bir restoranın açılış ve kapanış saatlerini saklamak için bir TIME veri tipi kullanabilirsiniz. TIME veri tipi, sıklıkla PHP programlama dilinde kullanılır ve web sitelerinde herhangi bir zamanı depolamak için kullanılabilir.
DATETIME Veri Tipi
DATETIME, MySQL veritabanı yönetim sisteminde tarih ve zaman bilgilerini içermek için kullanılan bir veri tipidir. Datetime veri tipi, yıl, ay, gün, saat, dakika ve saniye tarafından tanımlanır ve genellikle doğum tarihleri, işlem tarihleri vb. görüntülemek için kullanılır.
Datetime veri tipinin kullanımı oldukça basittir. Satır ekleme veya güncelleme işlemlerinde tarih ve saat bilgisi istendiğinde, belirtilen alana önceden belirlenmiş formatta veriler girilir. Datetime veri tipinin özellikleri ve sınırlamaları şu şekildedir:
Özellik / Sınırlama | Açıklama |
---|---|
Veri tipi | Datetime |
Öntanımlı uzunluk | 0 |
Minimum değer | '1000-01-01 00:00:00' |
Maksimum değer | '9999-12-31 23:59:59' |
Datetime veri tipinde, minimum ve maksimum sınırlamaları belirlemek için kullanabileceğiniz bazı işlevler de vardır. Örneğin, MIN() işlevi en küçük datetime değerini, MAX() işlevi en büyük datetime değerini döndürür. Fonksiyonları kullanarak, sınırlamaların dışındaki veya aralığın belirli bir noktasındaki değerleri de sorgulayabilirsiniz.
Sonuç olarak, datetime veri tipi, tarih ve zaman verilerinin depolanması ve sorgulanması için MySQL veritabanı yönetim sisteminde oldukça kullanışlı bir veri tipidir. Bu veri tipindeki özellikleri ve sınırlamaları anlamak, doğru bir şekilde kullanılması açısından önemlidir.
TIMESTAMP Veri Tipi
TIMESTAMP veri tipi, MySQL veritabanında tarih ve zaman değerleri için kullanılır. Bu veri tipi, DATETIME ile benzerdir ancak bazı farklılıkları vardır. Örneğin, TIMESTAMP veri tipi, 1970-01-01 00:00:01'den başlayarak geçen saniyeleri depolar. Bu, veritabanındaki tarih ve saati daha az saklama alanı kullanarak saklamak için kullanışlıdır.
TIMESTAMP veri tipinin sınırlamaları ise şunlardır:
- TIMESTAMP veri tipi, 1970-01-01 00:00:01'den önceki tarihleri desteklemez.
- TIMESTAMP veri tipi, 2038 yılına kadar olan tarihleri destekler.
- Bir tabloda yalnızca bir TIMESTAMP sütunu CURRENT_TIMESTAMP veya ON UPDATE CURRENT_TIMESTAMP ile tanımlanabilir.
TIMESTAMP veri tipi genellikle, bir kaydın oluşturulduğu veya güncellendiği zamana ilişkin istatistiklerin saklanması gerektiğinde kullanılır. Örneğin, bir blog makalesinin yayınlanma tarihi veya son güncelleme tarihi gibi.
Veritabanı Sınırlamaları
Veritabanlarındaki sınırlamalar, verilerin veritabanında güvenli ve tutarlı bir şekilde saklanmasını sağlar. Bunun yanı sıra, sınırlamalar, veritabanındaki verileri sorgularken de işlevselliği artırır. MySQL veritabanında kullanılan en temel sınırlamalar, PRIMARY KEY, FOREIGN KEY ve CHECK'tir.
PRIMARY KEY sınırlaması, bir tablodaki her bir satırın benzersiz bir şekilde tanımlanmasını sağlar. Bu sınırlama, verilerin silinmesi, güncellenmesi veya ekleme işlemleri sırasında yaşanan sorunları engeller. PRIMARY KEY, verileri daha hızlı sorgulamak için de kullanılır.
FOREIGN KEY sınırlaması, bir tabloya eklenen verilerin diğer tablolardaki verilerle ilişkili olmasını sağlar. Bu sınırlama, bir tablodan veri silindiği veya değiştirildiği zaman, diğer tablolardaki ilişkili verilerin de otomatik olarak güncellenmesini sağlar. Bu sayede veritabanının tutarlılığı korunur.
CHECK sınırlaması, bir tabloya eklenecek verilerin belirli bir koşulu karşılaması gerektiğini belirtir. Örneğin, bir kişinin yaşının 18'den büyük olduğundan emin olmak için CHECK sınırlaması kullanılabilir. Bu sınırlama, bir tabloya yanlış verilerin eklenmesini önler.
MySQL veritabanında kullanılan sınırlamalar, verilerin doğru ve güvenli bir şekilde saklanmasını ve sorgulanmasını sağlar. PRIMARY KEY, FOREIGN KEY ve CHECK sınırlamaları, veritabanı yönetiminin temel bileşenleridir ve veritabanındaki verilerin doğruluğunu ve tutarlılığını korur.
PRIMARY KEY Sınırlaması
MySQL veritabanında kullanılan temel sınırlamalar arasında PRIMARY KEY sınırlaması da yer alır. PRIMARY KEY, bir tablodaki her bir satırı benzersiz bir şekilde tanımlamak için kullanılır. Yani, bir tablo içinde bulunan her bir satırın bir kimlik belirleyicisi vardır ve bu kimlik belirleyici PRIMARY KEY olarak belirlenir. Bu sayede, verileri etkili bir şekilde yönetmek ve sorgulamak kolaylaşır.
PRIMARY KEY sınırlaması, tek ya da birden fazla sütun bileşeninden oluşabilir. Ancak, sütunların her birinde aynı değere sahip iki veya daha fazla satır ekleyemezsiniz. Bunun nedeni, PRIMARY KEY'in yalnızca her bir satırı benzersiz bir şekilde tanımlamasıdır.
Sütun Adı | Veri Tipi | Açıklama |
---|---|---|
ID | INT | Birincil anahtar sütunu |
Ad | VARCHAR(50) | Kullanıcının ismi |
Soyad | VARCHAR(50) | Kullanıcının soyismi |
Yukarıdaki örnekte, "ID" sütunu PRIMARY KEY olarak atanmıştır. Bu, her bir satırın benzersiz bir şekilde tanımlandığı anlamına gelir. Ek olarak, "Ad" ve "Soyad" sütunlarına ilişkin herhangi bir sınırlama yoktur, ancak bunların null değerler içermemesi için NOT NULL sınırlaması eklenebilir.
Bu şekilde, tablonun veri bütünlüğü korunur ve birincil anahtar oluştururken dikkatli olunarak veritabanlarındaki hataların önüne geçilebilir.
FOREIGN KEY Sınırlaması
Veritabanı tasarımında FOREIGN KEY sınırlaması, bir tablodaki bir sütunun, başka bir tablodaki bir sütunla ilişkili olduğu anlamına gelir. Bu ilişki, iki tablo arasındaki ilişkiyi kurmak için kullanılır. Bu sınırlama, yabancı anahtar (foreign key) olarak da adlandırılabilir.
FOREIGN KEY sınırlaması, bir tabloyu başka bir tabloya bağlamaya yarar ve veritabanı bütünlüğünü koruyarak kayıt ekleme ve silme işlemlerinde birçok kolaylık sağlar. FOREIGN KEY sınırlamaları, bir tablodaki bir sütunun değerlerinin, başka bir tablodaki bir sütunun değerleriyle eşleşmesini sağlar. Bu işlem, veritabanında ilişki kurmak için kullanılır.
Bir FOREIGN KEY sınırlaması, yalnızca var olan diğer bir tablonun PRIMARY KEY sınırlamasına atıfta bulunarak oluşturulabilir. Bu, referans verilen tablodaki bir kaydın silinirse, diğer tablo ile ilişkili kaydın da silinmesini sağlar. Bu nedenle, FOREIGN KEY sınırlaması, veritabanının bütünlüğünü korumak için anahtar bir özelliktir.
Genellikle, veritabanı yöneticileri, FOREIGN KEY sınırlamalarının kullanımına dikkat ederek veritabanı bütünlüğünü ve veri tutarlılığını sağlama olasılıklarını artırırlar. Ayrıca, bu sınırlama, veri hatalarının düzeltilmesinde de oldukça faydalıdır. İdeal olarak, bir veritabanı tasarımında, yüksek verim ve veri bütünlüğü sağlamak için FOREIGN KEY sınırlamalarının kullanılması önerilir.
CHECK Sınırlaması
MySQL veritabanlarında kullanılan temel sınırlamalardan biri de CHECK sınırlamasıdır. CHECK sınırlaması, bir kolonun belirli bir koşulu yerine getirip getirmediğini kontrol etmek için kullanılır. Bu sınırlama, tüm veri tiplerinde kullanılabilir.
Örneğin, bir tabloda "yaş" kolonu olsun ve sadece 18 yaşından büyük kişilerin kaydedilmesini istediğimizi düşünelim. Bu durumda, "yaş" kolonu için CHECK sınırlamasını kullanarak "yaş >= 18" koşulunu belirtebiliriz. Böylece, sadece 18 yaşından büyük kişilerin kaydedilmesi sağlanmış olur.
CHECK sınırlaması, diğer sınırlamalar gibi kolona eklenebilir ve birden fazla CHECK sınırlaması bir kolonda kullanılabilir. Ancak, her bir sınırlama için belirtilebilen koşul sayısı 16'dan fazla olmamalıdır.
Ayrıca, belirtilen koşullar herhangi bir aralık veya listeye dayalı ise, IN veya BETWEEN operatörleri kullanılabilir. Örneğin, bir liste içerisindeki değerleri kontrol etmek için "yaş IN (20, 21, 22)" koşulu kullanılabilir.
CHECK sınırlaması, bir veritabanındaki verilerin doğruluğunu sağlamak için oldukça faydalı bir sınırlamadır. Ancak, sınırlandırılan koşulların karmaşıklığı arttıkça, veritabanı işlemleri yavaşlayabilir. Bu nedenle, sınırlamaların doğru bir şekilde tasarlanması ve veritabanı performansının etkilenmemesi için dikkatli bir şekilde oluşturulması gereklidir.