Tablolar veri tabanının vazgeçilmez elemanlarıdır. Sql Server veri tabanında gerek görsel gerekse kodlarla tablo oluşturabilirsiniz. Bu uygulamada okula ait okul adı, öğretim yılı ve dönemi bilgilerini içeren tablolar oluşturulacaktır.
Tablo oluşturma işlemleri için somee.com sitesinden alınan ücretsiz veri tabanı kullanılacaktır. Bu siteden veri tabanı almadan önce web alanı ve sayfası oluşturmanız gerekir. Web Alanı alma işlemlerini buradan öğrenebilirsiniz.
Şimdi veri tabanı oluşturmaya çalışalım. Öncelikle somee.com sitesine giriş yapıp kullanıcı paneline gelmesiniz. Burada sol tarafta MS SQL sekmesi açılır. Açılan kısımdan Databases komutu seçilir. Sağ tarafta açılan pencerede Create komutu girilerek veri tabanı oluşturma ekranı gelir.

Burada veri tabanı adını okulBilgileri, Server versiyonunu 2016, kullanıcı adını Generate new login seçip Create empty database komutunu çalıştıralım. Ekranda “MS SQL Database was successfully created!” mesajı gelirse veri tabanınız hatasız bir şekilde oluşturulmuştur.
Şimdi de Click here to manage the database komutunu seçerek veri tabanı yönetim ekranına gelelim.

Burada yer alan bilgiler aracılığıyla veri tabanını web sayfalarında, masaüstü uygulamalarında, mobil uygulamalarda kullanabiliriz. New SQL query komutunu seçerek tablo oluşturma, silme, düzenleme, tabloya veri ekleme, düzenleme, silme gibi işlemleri yapabiliriz. Biz burada okul, ogretim, bolum tablolarını oluşturacağız.
Öncelikle okul için gerekli alanları belirleyelim.
Okul tablosu için aşağıdaki alanlar belirlenir.
Alan Adı
|
Veri Tipi
|
Özelliği
|
Kodu
|
Sayısal
|
Otomatik Sayı
|
OkulAdi
|
Metin
|
250
|
Tablo oluşturmanın temel kodu şu şekildedir.
Create Table tablo_Adi
(
Kolon_Adi veriTipi kullanılacaksa özel ifade,
Kolon_Adi veriTipi,
......
)
Tablo oluştururken dikkat edilmesi gereken bazı hususlar vardır. Bunlar;
Tablo isimlerini anlaşılabilir ve kısa yazmak.
Türkçe karakterler kullanmamak.
Tablo ve sütun adlarında boşluk kullanılmamalıdır. Boşluk yerine _ ifadesi kullanılabilir.
Temel olarak tablo oluşturma yöntemi böyledir. Şimdi daha iyi anlaşılması için önceden belirlediğimiz okul tablosunu oluşturalım.
Create Table okul
(
Kodu INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
OkulAdi NVARCHAR(250) NOT NULL,
)
Şimdi burada yer alan satırları açıklayalım.
Kodu INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
Kodu: Tanımlanan alanın adının belirtildiği yerdir.
INT: Veri tipinin integer olduğunu belirtir.
PRIMARY KEY: Tanımlanan Kodu değerinin birincil anahtar olduğunu belirler. Bu değer veri tabanı tarafından otomatik olarak yazılır.
IDENTITY(1,1): Bu değer tanımlanan sütun birincil anahtar olarak tanımlanırsa, otomatik olarak yazılan değerin birden başlayacağını ve birer bire artacağını gösterir.
NOT NULL: Tanımlanan alanın boş geçilmeyeceğini belirler.
OkulAdi NVARCHAR(250) NOT NULL
OkulAdi: Tanımlanan alanın adının belirtildiği yerdir.
NVARCHAR(250): Tanımlanan alanın veri tipinin alfasayısal olduğunu ve en fazla 250 karakter değerinde bilgi alabileceğini gösterir.
Şimdi okul tablosunu veri tabanında oluşturabiliriz. New SQL query komutunu seçelim. Çıkan ekranda metin kutusuna tanımladığımız komutu yazalım ve Run single query komutunu çalıştıralım.

Görüldüğü gibi, hata vermediği için okul tablomuz hatasız bir şekilde oluşturulmuştur. Şimdi de ogretim tablomuzu oluşturalım.
Ogretim tablosu için aşağıdaki alanlar belirlenir.
Alan Adı
|
Veri Tipi
|
Özelliği
|
Kodu
|
Sayısal
|
Otomatik Sayı
|
OgretimYili
|
Metin
|
12
|
OkulKodu
|
Sayısal
|
Uzun Tamsayı
|
Create Table ogretim
(
Kodu INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
OgretimYili NVARCHAR(12) NOT NULL,
OkulKodu INT NOT NULL
CONSTRAINT fk_Okul FOREIGN KEY REFERENCES okul(Kodu)
ON DELETE CASCADE
ON UPDATE CASCADE
)
Şimdi de donem tablosunu oluşturalım. Donem tablosu için aşağıdaki alanlar belirlenir.
Alan Adı
|
Veri Tipi
|
Özelliği
|
Kodu
|
Sayısal
|
Otomatik Sayı
|
Donemi
|
Metin
|
8
|
OgretimKodu
|
Sayısal
|
Uzun Tamsayı
|
Create Table donem
(
Kodu INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
Donemi NVARCHAR(8) NOT NULL,
OgretimKodu INT NOT NULL
CONSTRAINT fk_Ogretim FOREIGN KEY REFERENCES ogretim(Kodu)
ON DELETE CASCADE
ON UPDATE CASCADE
)
Tanımladığımız okulBilgileri veri tabanına okul, ogretim, donem tablolarını oluşturmuş olduk. Oluşturulan tabloların listesini görmek için aşağıdaki kod satırını kullanabilirsiniz.

Yukarıda verilen tablo oluşturma işleminde okul tablosu ogretim tablosuyla, ogretim tablosu ise donem tablosuyla ilişkili olarak tanımlanmıştır. Burada tanımlanan tabloları başka bir yöntemle birbiriyle ilişkilendirebilirsiniz. 3 tabloyu ayrı ayrı tanımlayıp başka bir tablo aracılığıyla bu tabloları bir araya getirebilirsiniz. Bu durumda fazladan bir tablo oluşturmanız gerekir.
Öncelikle oluşturulan tabloları DROP TABLE komutuyla silelim. Daha sonra aşağıdaki tabloları sırasıyla oluşturalım.
Create Table okul
(
Kodu INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
OkulAdi NVARCHAR(250) NOT NULL,
)
Create Table ogretim
(
Kodu INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
OgretimYili NVARCHAR(12) NOT NULL,
)
Create Table donem
(
Kodu INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
Donemi NVARCHAR(8) NOT NULL,
)
Tabloları oluşturduktan sonra bu tablolar arasında ilişkiyi tanımlamak için yeni bir tablo oluşturulması gerekir. Oluşturulacak bu tablonun ismini bilgiler olarak belirleyelim. Bu yeni tablomuz aşağıdaki gibi olacaktır.
Create Table bilgiler
(
Kodu INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
OkulKodu INT NOT NULL
CONSTRAINT fk_Okul1 FOREIGN KEY REFERENCES okul(Kodu)
ON DELETE CASCADE
ON UPDATE CASCADE,
OgretimKodu INT NOT NULL
CONSTRAINT fk_Ogretim1 FOREIGN KEY REFERENCES ogretim(Kodu),
DonemKodu INT NOT NULL
CONSTRAINT fk_Donem1 FOREIGN KEY REFERENCES donem(Kodu)
)
Ya da bu üç tabloyu tek tablo altında ağaç yapısı şeklinde kategorilerine ayırabilirsiniz. Bu durumda tek tablo kullanarak işlemi gerçekleştirebilirsiniz. Oluşturulan tabloları silelim ve okul tablosunu yeniden düzenleyelim.
Create Table okul
(
Kodu INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
Kategori INT NOT NULL,
KategoriAdi NVARCHAR(250) NOT NULL,
)
İlişkili tabloları oluştururken bu üç yöntemden birini kullanabilirsiniz. Beğenmeyi ve paylaşmayı unutmayınız.