Veritabanına Tablo Ekleme
Yeniden merhabalar :)
Bugünkü makalemizde oluşturduğumuz veritabanımız için tablo oluşturma konusuna gireceğiz,bir önceki makalemi okuduysanız SQL diyagramı ile ufak bir tablo örneği gerçekleştirmiştik.Bu yazıda ise artık daha detaylı ve gerçek hayatta kullanılan tablolar oluşturmaya başlayacağız.
Veritabanında tablo oluşturmak için daha önceki makalelerde anlattığım normalizasyon kuralları dışında veritabanında anahtarlama olarak Türkçe'ye çevirdiğimiz "SQL Keys" kavramına da değinmiş olacağız,zaten anahtarlama işlemlerini teorik olarak anlatınca biraz havada kalırdı :)
Şimdi SQL Server'ı açalım ve daha önce oluşturduğumuz BakkalDB veritabanımıza bağlandıktannsonra SQL diyagramımızı açalım.
Şu anda ekranda daha önce oluşturduğumuz tabloya sağ tıklayarak "Delete Tables from Database"i seçtikten sonra onay mesajına evet yanıtımızı verelim,eğer önceki makalemde tabloyu oluşturmadıysanız bu işlemi geçebilirsiniz.
Şimdi karşımızda boş bir diyagram olduğunu varsayarsak daha önce anlattığım bir bakkalın ihtiyaç duyduğu herşeyi tablolar oluşturarak modelleyeceğiz.Burada ki modellemekten kastım genel yazılımcılık teorisi diyebileceğimiz bir konudur.Modellemenin anlamı gerçek hayata uygun birebir şekillendirme benzetmedir.
Öncelikle mantık yürütmeye başlıyoruz:
Soru:Bir bakkalın varoluş nedeni nedir?
Cevap: Ürün satmaktır.
Cevabımız ürün olduğuna göre ilk olarak ürünler tablosunu oluşturmamız gerektiğidir.
Tablomuzu oluştururken dikkat etmemiz gereken ilk konu anahtarlama sistemidir.Düşünün bir bakkalda yüzlerce ürün var bu ürünleri sayarak sıralıyoruz:birinci,ikinci,üçüncü... işte bu konu Primary Key konusudur.
Primary Key Nedir?
Primary key (birincil anahtar) bir veritabanı tablosunda her veri satırının sıralı ve benzersiz bir sıra numarasıyla
gösterilmesi şeklidir.En basit anlamıyla 12.nci ürün ekmek oluyorsa 13.ncü ürün bisküvi olur ve 12 numarayı ekmeğe
verdiysek aynı 12 sayısını bisküviye veremeyiz.
Primary key genel olarak sayısal olarak gösterilir ve sayısal ifadeler assembly dillerinde integer adıyla anılırla ve kısaca "int" şeklinde yazılırlar.Bu durumda ilk kolonumuz (unutmadan belirtelim;diyagramdaki tabloda gördüğünüz alt alta yazılan satırlar aslında kolonları ifade eder) "UrunID" olacak ve veri tipi int olarak belirtilecek.
Eğer ID kavramını merak ediyorsanız şu şekilde açıklayayım; ID'nin açılımı İngilizcedeki "Identity" yani "kimlik" adından
gelmektedir ve her ürün için kimlik verdiğimiz için Urun ve ID ifadelerini birleştiriyoruz (genel yazım kuralı gereği)
Bir diğer dikkat etmemiz kısım "Allow Null" (Boş Geçilmesine İzin Ver) ifadesidir.Bu niteliği alan kolon istenilen satıra veri eklenmeden kayıt edilmesine izin verir,ancak Primary Key istisna durumlardan biri olduğu için bu kolon boş geçilemez.
Şimdi ilk kolonumuza Primary Key anahtarını verelim,bunun için yazdığımız kolonun solundaki kısma sağ tıklıyoruz:
Artık kolonumuz anahtar logosuna sahip oldu,bu onun herhangi bir veritabanı anahtarlamasına sahip olduğunu gösteriyor:
Şimdi ise ürünlerin sıralı bir şekilde kaydolabilmesi için "Auto Increment" özelliğinden faydalanıyoruz,bununun için
kolonumuzu seçtikten sonra sağ penceredeki Properties penceresine bakıyoruz.
Eğer Properties penceresini göremiyorsanız kısayol olarak klavyenizden F4 tuşuna basarsanız açılacaktır.Kolonu seçtikten sonra pencereden şu kısmı bulmalısınız:
Ardından Is Identity'ye çift tıkladığınızda "Yes" değerini alacaktır.
Burada Identity Increment'in anlamı başlangıç değeri,Identity Seed ise artış sayısını göstermektedir.Veritabanımızdaki
Primary Key değerlerimiz 1'den başlayarak 1'er adet artacağı için her iki değer 1 olacak şekilde aynen bırakıyoruz.
Artık asıl konumuza dönebiliriz :)
Bir ürünün özelliklerini yazmamız gerekiyor,örneğin ilk akla gelen ürünün markasıdır ve hemen kendi kendimize
soruyoruz:
Soru: Bir ürünün birden çok markası olabilir mi?
Cevap: Hayır
Soru 2: Bir markanın birden çok ürünü olabilir mi?
Cevap: Evet
Yani bu demek oluyor ki veritabanı normalizasyon kuralları gereği "bire-çok" anahtar yapısını kullanmalıyız
ve bunun için de markalarımızı içeren ikinci bir tablo oluşturacağız:
Ürünler tablosuyla yine aynı işlemleri gerçekleştirdik ve markalar tablosunu oluşturduk,şimdi ise markaların ilk
özelliğini yazacağız: markanın adı!
Markamızın adı metinsel tabanlı olduğu için ve Türkçe karakterler alabileceği için veri tipi olarak "nvarchar"ı
tercih ediyoruz,aynı zamanda karakter sınırlaması olarak 50'nin yeteceğini umduğumuz için "nvarchar(50)" yi seçiyoruz:
Markalar tablomuzu oluşturduğumuza göre artık ürünler tablomuza geri dönüyoruz ve ürünler tablosu ile markalar tablosunu birbirine bağlıyoruz.Bu işlem için "Foreign Key" i kullanıyoruz.
Foreign Key Nedir?
Foreign Key (yabancı anahtar) herhangi bir tabloya veri eklerken bir başka tablodaki kaydın verinin ekleneceği
tabloya aktarımıdır.Kısacası bilgisayarımızdaki herhangi bir dosyaya sağ tıkladıktan sonra masaüstüne kısayol attıktan
sonra aynı dosyayı orjinal konumundan çalıştırmak yerine masaüstündeki kısayoluna tıklayarak çalıştırmamıza benzeyen
bir yapıdır diyebiliriz :)
Veritabanında foreign key tanımalaması yapabilmek için kaynak tablo ile hedef tablo arasında aynı veri tipinde ortak
bir kolonunun olması gerekmektedir.Kolon isimleri aynı olmak zorunda değildir ancak genel isimlendirme gereği aynı
isimde yazılmasını öneririm:
Şimdi yukarıda yaptıklarımızı inceleyelim; ürünler tablosuna ilk başta "UrunID" kolonunu verdikten sonra markalar
tablosunu oluşturduk.Yine ürünler tablosundaki gibi markalar tablosuna da bir primary key verdik,ardından foreign key bağlantısı için ürünler tablosuna aynı isimde ve aynı veri tipinde (int) "MarkaID" kolonunu ekledik.
Tabi henüz işimiz bitti sayılmaz çünkü bağlantıları birleştirmedik,bağlantıları bağlamak için istediğimiz tablonun
bağlantı noktasını mouse ile tutup diğerinin üzerine sürükleyip bırakmanız yeterlidir.Bu örnekte ben markalar tablosundaki "MarkaID" kolonunu aşağıdaki gibi tutup ürünler tablosundaki "MarkaID" kolonunun üzerine sürüklüyorum:
Ardından tüm pencereleri onayladıktan sonra aşağıdaki gibi bir görünüm elde ediyoruz:
Artık tablodaki kolonları birleştirdik ve foreign key anahtarlama işlemini tamamladıktan sonra tekrar
ürünler tablosuna dönüyoruz.Şimdi ise ürünün adını yazıyoruz,bunun için boş geçilemeyen 50 karakterli nvarchar yeterlidir diyebiliriz:
Son olarak ürünümüzün bir fiyatı olmalı ve bu fiyat bilgisini "money" veri tipi ile boş geçilemeyecek şekilde
tutuyoruz:
Veritabanımızın yapısını geliştirmek için bir sonraki makaleden devam edeceğiz ancak bilgileri kaydetmemiz gerekiyor.
En basit şekliyle klavyemizden CTRL+S tuşlarıyla kaydede tıklıyoruz.
Not:Eğer "Prevent saving changes is not permitted.." hatası alıyorsanız Tools-Options-Designers yolunu takip edin ve
"Prevent saving changes that require table re-creation" seçeneğinin işaretini kaldırdıktan sonra tekrar kaydetmeyi denerseniz kayıt başarılı olacaktır.
Bir sonraki makalemizde kaldığımız yerden devem edeceğiz,şimdilik hoşçakalın!
Bugünkü makalemizde oluşturduğumuz veritabanımız için tablo oluşturma konusuna gireceğiz,bir önceki makalemi okuduysanız SQL diyagramı ile ufak bir tablo örneği gerçekleştirmiştik.Bu yazıda ise artık daha detaylı ve gerçek hayatta kullanılan tablolar oluşturmaya başlayacağız.
Veritabanında tablo oluşturmak için daha önceki makalelerde anlattığım normalizasyon kuralları dışında veritabanında anahtarlama olarak Türkçe'ye çevirdiğimiz "SQL Keys" kavramına da değinmiş olacağız,zaten anahtarlama işlemlerini teorik olarak anlatınca biraz havada kalırdı :)
Şimdi SQL Server'ı açalım ve daha önce oluşturduğumuz BakkalDB veritabanımıza bağlandıktannsonra SQL diyagramımızı açalım.
Şu anda ekranda daha önce oluşturduğumuz tabloya sağ tıklayarak "Delete Tables from Database"i seçtikten sonra onay mesajına evet yanıtımızı verelim,eğer önceki makalemde tabloyu oluşturmadıysanız bu işlemi geçebilirsiniz.
Şimdi karşımızda boş bir diyagram olduğunu varsayarsak daha önce anlattığım bir bakkalın ihtiyaç duyduğu herşeyi tablolar oluşturarak modelleyeceğiz.Burada ki modellemekten kastım genel yazılımcılık teorisi diyebileceğimiz bir konudur.Modellemenin anlamı gerçek hayata uygun birebir şekillendirme benzetmedir.
Öncelikle mantık yürütmeye başlıyoruz:
Soru:Bir bakkalın varoluş nedeni nedir?
Cevap: Ürün satmaktır.
Cevabımız ürün olduğuna göre ilk olarak ürünler tablosunu oluşturmamız gerektiğidir.
Tablomuzu oluştururken dikkat etmemiz gereken ilk konu anahtarlama sistemidir.Düşünün bir bakkalda yüzlerce ürün var bu ürünleri sayarak sıralıyoruz:birinci,ikinci,üçüncü... işte bu konu Primary Key konusudur.
Primary Key Nedir?
Primary key (birincil anahtar) bir veritabanı tablosunda her veri satırının sıralı ve benzersiz bir sıra numarasıyla
gösterilmesi şeklidir.En basit anlamıyla 12.nci ürün ekmek oluyorsa 13.ncü ürün bisküvi olur ve 12 numarayı ekmeğe
verdiysek aynı 12 sayısını bisküviye veremeyiz.
Primary key genel olarak sayısal olarak gösterilir ve sayısal ifadeler assembly dillerinde integer adıyla anılırla ve kısaca "int" şeklinde yazılırlar.Bu durumda ilk kolonumuz (unutmadan belirtelim;diyagramdaki tabloda gördüğünüz alt alta yazılan satırlar aslında kolonları ifade eder) "UrunID" olacak ve veri tipi int olarak belirtilecek.
Eğer ID kavramını merak ediyorsanız şu şekilde açıklayayım; ID'nin açılımı İngilizcedeki "Identity" yani "kimlik" adından
gelmektedir ve her ürün için kimlik verdiğimiz için Urun ve ID ifadelerini birleştiriyoruz (genel yazım kuralı gereği)
Bir diğer dikkat etmemiz kısım "Allow Null" (Boş Geçilmesine İzin Ver) ifadesidir.Bu niteliği alan kolon istenilen satıra veri eklenmeden kayıt edilmesine izin verir,ancak Primary Key istisna durumlardan biri olduğu için bu kolon boş geçilemez.
Şimdi ilk kolonumuza Primary Key anahtarını verelim,bunun için yazdığımız kolonun solundaki kısma sağ tıklıyoruz:
Artık kolonumuz anahtar logosuna sahip oldu,bu onun herhangi bir veritabanı anahtarlamasına sahip olduğunu gösteriyor:
Şimdi ise ürünlerin sıralı bir şekilde kaydolabilmesi için "Auto Increment" özelliğinden faydalanıyoruz,bununun için
kolonumuzu seçtikten sonra sağ penceredeki Properties penceresine bakıyoruz.
Eğer Properties penceresini göremiyorsanız kısayol olarak klavyenizden F4 tuşuna basarsanız açılacaktır.Kolonu seçtikten sonra pencereden şu kısmı bulmalısınız:
Ardından Is Identity'ye çift tıkladığınızda "Yes" değerini alacaktır.
Burada Identity Increment'in anlamı başlangıç değeri,Identity Seed ise artış sayısını göstermektedir.Veritabanımızdaki
Primary Key değerlerimiz 1'den başlayarak 1'er adet artacağı için her iki değer 1 olacak şekilde aynen bırakıyoruz.
Artık asıl konumuza dönebiliriz :)
Bir ürünün özelliklerini yazmamız gerekiyor,örneğin ilk akla gelen ürünün markasıdır ve hemen kendi kendimize
soruyoruz:
Soru: Bir ürünün birden çok markası olabilir mi?
Cevap: Hayır
Soru 2: Bir markanın birden çok ürünü olabilir mi?
Cevap: Evet
Yani bu demek oluyor ki veritabanı normalizasyon kuralları gereği "bire-çok" anahtar yapısını kullanmalıyız
ve bunun için de markalarımızı içeren ikinci bir tablo oluşturacağız:
Ürünler tablosuyla yine aynı işlemleri gerçekleştirdik ve markalar tablosunu oluşturduk,şimdi ise markaların ilk
özelliğini yazacağız: markanın adı!
Markamızın adı metinsel tabanlı olduğu için ve Türkçe karakterler alabileceği için veri tipi olarak "nvarchar"ı
tercih ediyoruz,aynı zamanda karakter sınırlaması olarak 50'nin yeteceğini umduğumuz için "nvarchar(50)" yi seçiyoruz:
Markalar tablomuzu oluşturduğumuza göre artık ürünler tablomuza geri dönüyoruz ve ürünler tablosu ile markalar tablosunu birbirine bağlıyoruz.Bu işlem için "Foreign Key" i kullanıyoruz.
Foreign Key Nedir?
Foreign Key (yabancı anahtar) herhangi bir tabloya veri eklerken bir başka tablodaki kaydın verinin ekleneceği
tabloya aktarımıdır.Kısacası bilgisayarımızdaki herhangi bir dosyaya sağ tıkladıktan sonra masaüstüne kısayol attıktan
sonra aynı dosyayı orjinal konumundan çalıştırmak yerine masaüstündeki kısayoluna tıklayarak çalıştırmamıza benzeyen
bir yapıdır diyebiliriz :)
Veritabanında foreign key tanımalaması yapabilmek için kaynak tablo ile hedef tablo arasında aynı veri tipinde ortak
bir kolonunun olması gerekmektedir.Kolon isimleri aynı olmak zorunda değildir ancak genel isimlendirme gereği aynı
isimde yazılmasını öneririm:
Şimdi yukarıda yaptıklarımızı inceleyelim; ürünler tablosuna ilk başta "UrunID" kolonunu verdikten sonra markalar
tablosunu oluşturduk.Yine ürünler tablosundaki gibi markalar tablosuna da bir primary key verdik,ardından foreign key bağlantısı için ürünler tablosuna aynı isimde ve aynı veri tipinde (int) "MarkaID" kolonunu ekledik.
Tabi henüz işimiz bitti sayılmaz çünkü bağlantıları birleştirmedik,bağlantıları bağlamak için istediğimiz tablonun
bağlantı noktasını mouse ile tutup diğerinin üzerine sürükleyip bırakmanız yeterlidir.Bu örnekte ben markalar tablosundaki "MarkaID" kolonunu aşağıdaki gibi tutup ürünler tablosundaki "MarkaID" kolonunun üzerine sürüklüyorum:
Ardından tüm pencereleri onayladıktan sonra aşağıdaki gibi bir görünüm elde ediyoruz:
Artık tablodaki kolonları birleştirdik ve foreign key anahtarlama işlemini tamamladıktan sonra tekrar
ürünler tablosuna dönüyoruz.Şimdi ise ürünün adını yazıyoruz,bunun için boş geçilemeyen 50 karakterli nvarchar yeterlidir diyebiliriz:
Son olarak ürünümüzün bir fiyatı olmalı ve bu fiyat bilgisini "money" veri tipi ile boş geçilemeyecek şekilde
tutuyoruz:
Veritabanımızın yapısını geliştirmek için bir sonraki makaleden devam edeceğiz ancak bilgileri kaydetmemiz gerekiyor.
En basit şekliyle klavyemizden CTRL+S tuşlarıyla kaydede tıklıyoruz.
Not:Eğer "Prevent saving changes is not permitted.." hatası alıyorsanız Tools-Options-Designers yolunu takip edin ve
"Prevent saving changes that require table re-creation" seçeneğinin işaretini kaldırdıktan sonra tekrar kaydetmeyi denerseniz kayıt başarılı olacaktır.
Bir sonraki makalemizde kaldığımız yerden devem edeceğiz,şimdilik hoşçakalın!
bravo çok güzel bir anlatım başka sitelerde sizingibi ders göremedim Yorumunuzu buraya yazabilirsiniz...
Merhaba; Anlatımınız çok açık ve anlaşılır. Bilgilerinizi paylaştığınız için çok teşekkürler.