POSTGRESQL ONE TO ONE

 –Postgresql'de tablo nasıl oluşturulur?

Postgresql'de diğer veritabanlarında da bulunan create, insert, update, delete, alter gibi ortak anahtar kelimeler vardır. Biz de bunları kullanarak aralarında one-to-one, one-to-many ve many-to-many ilişkisi bulunan tablolar oluşturacağız. 

 –Postgresl'de One-to-one (bire bir ilişkili) tablo oluşturma

Öncelikle one to one yani birebir ilişkinin ne olduğunu anlamamız gerekli. Veritabanımızda oluşturacağımız bir varlığa bağlı başka bir tablo varsa ve bu tablo sadece bir tane ise bu durumda ilişki birebir(one-to-one) ilişki olur. Buna örnek olarak her insanın bir kimliğe sahip olması ve bir kimliğin bir insana sahip olması verilebilir.

Veritabanında one to one(birebir) ilişkisi bulunan bir tablo oluşturmak için bir adet insan ve bir    adet kimlik varlığımız olsun. İnsan tablomuzda bulunacak özellikler; ad_soyad, boy, kilo, yaş ve cinsiyet nitelikleri. Kimlik tablosunda ise tc_kimlik_no, ad_soyad, anne_adı, baba_adı, dogum_tarihi gibi nitelikler bulunsun.

Bu durumda insan tablosunu oluşturacak kodları şu şekilde yazabiliriz:

create table insan(

insan_id int primary key,

ad_soyad varchar(50),

yaş int,

boy int,

kilo int

)

 


Sonrasında ise kimlik tablosunu yazalım.

 create table kimlik(

kimlik_id int primary key,

tc_kimlik_no int,

ad_soyad varchar(50),

anne_adi varchar(50),

baba_adi varchar(50),

dogum_tarihi date

)

 


 Bundan sonra ise iki tablo arasındaki ilişkiyi sağlamak için birbirilerine foreign key yani kendi primary keylerini vermemiz gerekiyor.

 alter table insan

add foreign key (insan_id) references kimlik(kimlik_id)

deferrable initially deferred

 

           ve aynı işlemi kimlik tablosu için de uyguluyoruz.


 alter table kimlik

add foreign key (kimlik_id) references insan(insan_id)

deferrable initially deferred



 Şimdi veritabanımıza ilk verimizi eklemeyi deneyelim.

  INSERT INTO public.insan(

insan_id, ad_soyad, "yaş", boy, kilo)

VALUES (1, 'Jale Çetin', 19, 169, 53);


INSERT INTO public.kimlik values (1,124567897,'Jale Çetin', 'MEDİHA', 'EROL', '1990-12-12')

 

  Şimdi de select ile kontrol edelim.

            select * from insan, kimlik

Burada kritik olan nokta ise verileri eklerken yapılacak olan insert sorguları her iki tablo için de aynı anda çalıştırılmalı, aksi durumda hata verir.

 

İkinci yöntem olarak:

Birinci tablonun primary key'i ikinci tabloya primary foreign key olarak verilir. Yani

alter table kimlik

add foreign key (kimlik_id) references insan(insan_id)

deferrable initially deferred 

  sorgusunu çalıştırmadan devam edebilirsiniz ve böylece insert yaparken aynı anda iki tablo için insert yapma zorunluluğunu ortadan kaldırırsınız.                         

 



 

 

Mert Cenk

Hiç yorum yok:

Yorum Gönder