Ana içeriğe atla

Ms Sql Server Management Studio Table ilişkileri

Ms Sql Server ilişkisel bir DBMS' tir.İlişkisel veritabanı kavramı 1970 yılında E.F Codd tarafından " A Relation Model of Data for Large Shared Data Banks" (Ortak Veri Bankaları için İlişkisel bir Veri Modeli) makalesinde ortaya atılmıştır.Eski veritabanı sistemelerinin ağ ve hiyerarşik yapılarının aksine, sağlam matematik temelleri olan İlişkisel veritabanı sistemleri yine ilişkisel veritabanı modeline dayanmaktadır.Bu blog ile Ms Sql Server İlişkisel Veri Modellerinin ilk bilgilerini sizinle paylaşacağım...

İlişkisel veri modelindeki ana kavram ilişkidir yani Tablodur.Buna göre kullanıcıya göre ilişkisel veritabanı tablolardan başka bir şey değildir.Bir tabloda bir veya birden fazla sutun ve satırlar bulunabilir yada hiç satır bulunmaz.Tablolara karşılık gelen konumda her zaman yanlızca bir tane veri değeri bulunur."Ms Sql Server İlişkisel Veri Tabanı Dili Transact-SQL'dir" 


Ms Sql Server Managment Studio Express ile birbirleri ile ilişki halinde bir kaç tablo tasarlamadan.Ms Sql ve Transact Sql hakkında ve Ms Sql İş Zekası yazılarını okumanızı öneririm.Bu yazıyı Ms Sql Create Table ve  ilgili Sql İş zekası yazılarını okuduğunuzu düşünerek daha önce yazılmış detayları atlayarak anlatacağımı söylemek zorundayım.

Microsoft Sql Server Management Studio Express ile görsel olarak veritabanı ve tabloları oluşturmuştuk.Tıpkı o örneklerdeki gibi yeni bir Ms Sql Veritabanı oluşturdum, daha sonrada bu Ms Sql veritabanına Departman ve Personal isimli 2 yeni tablo oluşturdum.

Departman Tablosu veri tipleri ve içerik olarak bir şirket veya kurum içindeki departmanların adını kaydedeceğimiz bir tablo olacaktır.Daha sonraki örneklerde elbette bu nitelikleri geliştireceğiz.




Personal Tablosu ise bir şirket veya kurumda bulunan tüm personelin adı , personel numarası, görevi ve maaşlarını saklayacağımız küçük bir özlük işlemleri tablosu olacaktır.

Bu tablo içinde dikkat etmeniz gereken DepartmanId adında ve Integer veri tipinde bir alan olduğudur. DepartmanId verisi ilk tablomuzdaki DepartmanId alanı ile aynı veri tipindedir fakat Allow Nulls niteliği olarak aynı değildir bunun nedenini birazdan daha iyi anlayacağız.

Yukarıda özelliklerini kısaca anlattığım 2 Tabloyu Departmanlara göre Personel verilerini kaydetmeyi ve birbirleri ile bağlayarak bu verilere koşullar koyup sorgulamayı düşünüyorum.Ms Sql iş zekasına göre Sql sorguları Ms Sql İlişkisel Veritabanı (Relation Database) modelleriyle üst düzeye çıkartılabilir.

Primary Key Nedir ? Primary Key Kalıbı bir tablonun birincil anahtarıdır.Primary Key (birincil anahtar) değeri her satır için değişik olan bir sütun yada sütun gruplarıdır.Primary Key sütunu UNIQUE değerin tersine NOT NULL olmalıdır.Tablolarınıza birincil anahtar atamasını Ms Sql Server Managment Studio'da örnek olarak yandaki şekilde bir yapılandırma yapabilirsiniz.Bu örnek resme göre Departman Tablosunda bulunan DepartmanId Set Primary Key komutu ile birincil anahtar olarak atanmıştır.2 nci Personal Tablomuzda bulunan PersonalId alanıda aynı şekilde Prımary Key (birincil anahtar) olarak düzenlenecektir.Prımary Key kalıbı Create Table yada Alter Table ifadelerinde diğer aday anahtarları tanımlarlar bu bilgiyi ilerleyen yazılarda daha iyi anlayacağız.

Ms Sql veritabanındaki tablolarımız artık ilişkiler kurmak için hazırdır.Relation Database (İlişkisel Veritabanı) modellemek yada tablolar arasında ilişkiler kurma yöntemleri için farklı yöntemler vardır.Örneğin Visual Studio.Net içerisindede ilişkisel datasetler ve query( sorgu) ile tablolarınızı verisel olarak birbirine bağlamanız münkündür.Ms Sql Server Managment Express ile bu işlem için daha net bir yöntem olan Database Diagrams ve Relationships seçenekleri vardır."Database Diagram veritabanınız içindeki tablolarınızı primary key ve karşılık gelebilecek uygun tip değeri ile bağlantılı tablolar tasarlamanıza izin verir."

Database Diagrams 
New Database Diagram komutu ile oluşturalabilir.Bu işlem sonrasında yapılacak işlem veritabanınızda bulunan mevcut tablolarınız diagram şemanıza eklemektir(add)





Ms Sql iki veya daha fazla tablo ilişkileri kurmak için Database Diagramları içerisindeki aday anahtarın birincil anahtar alanına taşınması işlemi kadar basittir.Görsel olarak yapılan bu işlem sonrasında aşağıdaki örnekteki Personal tablosunda bulunan DepartmanId - Departman Tablosundaki DepartmanId(primary key) ile bağlanmak istenmektedir.


Ms Sql Server Management Studio bu diagram yapılandırmasından hemen sonra " Tables and Colums alan atamalarını yapmamızı istediğini belirtir.

Relationship görünümündeki gibi açık olarak istenen Primary Key ve Foreing Key kalıplarının ait olduğu Tablo ve Sütunlardır.Primary Key kalbını anlatmış fakat Foreign Key tanımını yazmamıştık.

Foreing Key Nedir? : Foreing Key yani dış anahtar aynı tabloda yada başka bir tablodaki Prımary Key(birincil anahtar) değerleri ile eşleşen bir sütun yada sütun gruplarıdır.Bu ilişikisel yapılandırmayla Foreing Key(dış anahtar) başvurduğu Primary Key (birincil anahtar) bulunan tabloya (Departman Tablosu) ebeveyn yada başvurulan tablo denir.

Database Diagrams işleminin tamamlanması ve oluşan şemanın bitmesi ile veriler ve tablolar için önemli bir değişiklik olacaktır.Bu değişiklik ile dış anahtara sahip tablonun kayıtlarına INSERT, UPTADE, EDIT Sql komutlarının kısıtlayacak olan ebeveyn tablosu referansı olacaktır.
Buna göre en önemli koşul
* Personal Tablosundaki tüm alanlardaki kayıtlarda DepartmanId değerinin Departman tablosundaki değerle eşlemesi gerekliliğidir.

Personal Tablosundaki DepartmanId boş bırakılmıştır.
 

Personal Tablosundaki DepartmanId değeri Departman Tablosundaki DepartmanId değeri değildir.

Her iki Tabloda veriler birbiri ile uyumludur ve kayıt tamamlanmıştır

Ms Sql Management Studio İle İlişkisel veritabanı (relation database) modellemesinin Table boyutundaki işlemleri için "görsel" database tasarımını yapmış olduk.Elbette Ms Sql İş zekası ve Sql Database mantığını örneklerle anlatmaya ilerleyen Ms Sql yazılarımdada devam edeceğim.Bu blogta anlatığım Ms Sql Database Prımary Key, ForeignKey kalıpları ve Database Diagrams ile Relationships konularına farklı yöntemlerle yine bu blogta tekrar rastlayabilme ihtimaliniz var...

Diğer Ms Sql (Transact Sql) veya Ms Sql Server Managment Express notlarına ve tabikii diğer Database notlarına ulaşmak için etiketleri veya menuleri hızlıca kullanabilirsiniz. 
      Bu Yazının Sponsorları













Yorumlar

  1. Foreing Key yani dış anahtar aynı tabloda yada başka bir tablodaki Prımary Key(birincil anahtar) değerleri ile eşleşen bir sütun yada sütun gruplarıdır. demissiniz. fakat benim sorum şöyle. aynı tablo da örneğin kategoriler tablosunda kategoriID(int) ile altkegori(int)i nasıl birbiriyle ilişkilendireceğiz? cünkü yapınca hata alıyorum. is ıdentitiy si yes te primary key in ve diagramı save edemiyorum??

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

Firebird SQL Table oluşturma ve SQL komutları

2 nci  Firebird SQL veritabanı blogunda bu kez mevcut Firebird veritabanına ISQL ile bağlanmayı veritabanı nesnelerini oluşturmayı (create table), Kayıt eklemeyi (ınsert) ve kayıtları izlemeyi (show) ile önemli SQL komutlarını anlatmaya çalışacağım...

Firebird Veritabanı Nedir ? Nasıl Kullanılır

Firebird ücretsiz veritabanı kullanmaya ne dersiniz.Üstelik hiç bir süre ve veri sınırı olmadan kulağa hoş geliyor değilmi.Bu Blogta Borland açık kaynak interbase 6 sürümünden sonra ortaya çıkmış ve gelişimini sürekli sürdürmüş Firebird veritabanına bir göz atıcaz. İnternet üzerinde Firebird ile kaynağa çok sık rastlamazsınız artık bu blogtan Firebird ile ilgili bilgileri takip edebilirsiniz...

Asp.Net Access veritabanina resim ve nesne kaydetmek OLE Nesnesi

Ms Access ile ilgili geçmiş yazılarım arasında biraz vakit geçirmişseniz, Ms Access form uygulamaları yada veritabanı olarak kullanmayı sevdiğimi anlamışsınızdır. Birazdan size anlatmaya çalışacağım konu Ms Access veritabanı olarak kullandığımız bir Asp.Net Web projesinde resimleri ve dosyaları paket halinde veritabanının içine gömmek olacak.Neden bilmiyorum bu konuda Türkçe kaynak yok, merak etmeyin bu yazı size iyi gelecek...