Veritabanı Tasarımı İlişkileri Eşleştirme
Konular İlişkilerin eşleştirilmesine yönelik kuralların 1:M ve bağlı ilişkilerin dönüşümüne uygulanması İlişkilerin eşleştirilmesine yönelik kuralların M:M ilişkilerin dönüşümüne uygulanması 1:1 ilişkileri dönüştürme İlişkilerin eşleştirilmesine yönelik kuralların yaydaki ilişkilerin dönüşümüne uygulanması 2
Amaç Başka bir kişiye ev inşa ettiğinizi düşünelim. Gerekli olan bütün malzemelere (ahşap, boya, kapı, pencere, çivi, vida vb.) ve tecrübeye sahipsiniz, fakat mimari tasarıma sahip değilsiniz. İnşaata başladığınızda kaç tane oda olması gerektiği, pencerelerin nereye konulacağı, kapıların ne yöne açılacağı veya odaların hangi renge boyanacağını bilemezsiniz. İnşaat ilerledikçe her seferinde karar verip bina inşa edilebilir fakat eğer temel tasarım noktaları belli değilse bina bitiminde müşterinin istediği binanın elde edilmesi oldukça zordur. 3
Amaç (devam ) İlişkiler, birincil anahtarlar ile yabancı anahtarlar arasında eşleştirilerek bir tablonun başka bir tabloya işaret etmesine imkan tanınır. İlişkileri eşleştirmezsek, veritabanında birbiri ile bağlantısı olmayan ve bilgi içeren bağımsız pek çok tabloya sahip oluruz. Varlıkar arasındaki ilişkileri eşleştirme müşteri, tasarımcı, geliştirici ve DBA arasında görüşmelerin olması açısından önemli bir ilk adımdır. 4
İlişkiler için Kurallar Bir ilişki tabloda ilişkinin çoklu (M) tarafında bir vey birden fazla sütunda yabancı anahtar (FK) oluşturur. Yabancı anahtarı adlandırmak için tablonun isminin kısa hali kullanılır. Sonraki sayfadaki örnekte ÇALIŞANLAR tablosunun BÖLÜM tablosu ile ilişkisi için yabancı anahtarı blm_no ve kendisi ile olan rekürsif ilişki için de çal_no dur. 5
İlişkiler için Kurallar (devam ) Yabancı anahtar sütunu işin ihtiyacına göre zorunlu veya seçimli olabilir. Örnekte böl_no zorunlu, çal_no ise seçimlidir. 6
İlişkiler için Kuralların Gösterimi yönetilir yönetir ÇALIŞAN * adresi * doğum tarihi dahildir içerir BÖLÜM 7 ÇALIŞANLAR (ÇAL) Anahtar Tipi Seçimlilik Sütun Adı pk * no * adresi * doğ_tarihi fk1 * böl_no fk2 o çal_no BÖLÜMLER (BÖL) Anahtar Tipi Seçimlilik Sütun Adı pk * no * adres * notlar fk işaret eder fk işaret eder
Bir Tarafı Zorunlu Olan İlişkiyi Eşleştirme Bir tarafı veya iki tarafı zorunlu olan ilişkiler bir tarafı seçimli olan ilişkilerin eşleştirilmesi ile aynıdır. Kavramsal model ilişkilerin iki tarafta seçimlilik durumunu gösterme kapasitesine sahiptir. Ancak, fiziksel model sadece tek bir FK ile sınırlı olduğundan sadece çoklu (M) taraftaki zorunlu ilişkiyi uygulayabilir. İzleyen örnekte, fiziksel model BANDO nun mutlaka bir müzisyen içermesi zorunluluğunu uygulayamamaktadır. Tekli ilişkinin (1) olduğu taraftaki bu zorunluluk ilave programlama ile sağlanmalıdır. 8
Seçimliliği Uygulama MÜZİSYEN o enstrüman dahildir içerir BANDO MÜZİSYENLER (MÜZ) Anahtar Tipi Seçimlilik Sütun Adı pk * no o enstrüman fk o bnd_no BANDOLAR (BND) Anahtar Tipi Seçimlilik Sütun Adı pk * no fk işaret eder 9
Aktarılamaz İlişkiyi Eşleştirme Kavramsal modelde aktarılamaz ilişki veritabanındaki tabloda yer alan FK değerinin değiştirilemeyeceği anlamına gelmektedir. FK kısıtı sadece tek başına bu kuralı uygulayamaz. İlave programlama bu iş kuralının veritabanında uygulanması için gerekecektir. Bu tür kuralları yazılı hale getirmek takım elemanlarının bu iş kuralının uygulanabilmesi için gereken kodu yazma noktasında hatırlatıcı olacaktır. 10
Aktarılamaz İlişkinin Uygulanması ÇEK ÖDEMESİ * ödeme süresi için alıcısı ÇALIŞAN ÇEK_ÖDEMESİ (ÇEKÖ) Anahtar Tipi Seçimlilik Sütun Adı pk * no * ödm_süresi fk * çal_no Bu sutündaki FK hiçbir zaman değiştirilemez 11
Bağlı (Çizgili) İlişkinin Eşleştirilmesi Bağlı (çizgili) ilişki, 1:M ilişkide olduğu gibi çoklu (M) tarafta bir FK sütununa eşleştirilir. Bu durumda FK sütunu aynı zamanda PK in de bir parçası olduğu için iki işleve sahip olacaktır. Örnekte, bnk_no, HESAPLAR tablosunda bir FK olup BANKALAR ın PK sütununa işaret etmektedir. Aynı zamanda HESAPLAR ın PK sinin bir parçasıdır. 12
Aktarılamaz İlişkinin Uygulanması HESAP * yekün * açılış tarihi bulunur bulundurur BANKA HESAPLAR (HSP) Anahtar Tipi Seçimlilik Sütun Adı pk * hsp_no * yekün * açl_tarihi fk * bnk_no işaret eder Anahtar Tipi BANKALAR (BNK) Seçimlilik Sütun Adı pk * bank_no 13
Kaskat Bağlı (Çizgili) İlişkinin Eşleştirilmesi İlişkileri Eşleştirme Hiyerarşiler kaskat bağlı ilişkilere yol açabilir. Bu yapıda hiyerarşinin en üstünde yer alan varlığın UID hiyerarşinin en altında bulunan varlığa kadar taşınır. Örnekte ODA nın UID i, ODA no, DAİRE no, KAT no ve BİNA no yu içermektedir. Bu bağlı ilişki ile gösterilir. 14
Kaskat Bağlı (Çizgili) İlişkinin Eşleştirilmesi İlişkileri Eşleştirme Bu yapı fiziksel modele eşleştirildiğinde sonuç çok uzun bir FK sütun ismine sahip olacaktır. Çünkü bütün tabloların isimleri ön ek olarak alınacaktır. Önerilen yaklaşım hiçbir zaman ikiden fazla tablo ismine yer verilmemesidir. Örnekte, BİNA dan başlayarak gelen ODA nın FK sütunu dai_kat_bin_no yerine dai_bin_no olarak adlandırılır. 15
Kaskat İlişkinin Uygulanması ODA bulunur yeridir DAİRE o kiracı bulunur yeridir KAT bulunur yeridir BİNA * adresi 16 ODALAR (ODA) Anahtar Tipi Seçimlilik Sütun Adı pk * oda_no pk,fk * dai_no pk,fk * dai_kat_no pk,fk * dai_bin_no KATLAR (KAT) Anahtar Tipi Seçimlilik Sütun Adı pk * kat_no pk,fk * bin_no DAİRELER (DAİ) Anahtar Tipi Seçimlilik Sütun Adı pk * dai_no pk,fk * kat_no pk,fk * kat_bin_no o kiracı BİNALAR (BİN) Anahtar Tipi Seçimlilik Sütun Adı pk * no * adresi
Kaskat İlişkinin Gösterimi 17 BİNALAR NO ADRESİ 100 Kızılırmak Cad. No:12 201 Sakarya Cad. No:1 KATLAR KAT_NO ADRESİ 1 100 2 100 1 201 2 201 DAİRELER DAİ_NO KAT_NO KAT_BİN_NO KİRACI 15 2 100 Recep Uçan 25 2 100 Semih Gezgin 5E 1 201 Şaban Kaynak 7B 2 201 Aliye Arslan ODALAR oda_no dai_no dai_kat_no dai_bin_no 1 15 2 100 2 15 2 100 1 7B 2 201
M:M İlişkinin Eşleştirilmesi M:M ilişki bir kesişim tablosuna eşleştirilen kesişim varlığı ile çözümlenir. Bu kesişim tablosu kendisinin oluşmasına sebep olan tablolara işaret eden FK sütunlarını içerir. Örnekte, DEĞERLENDİRMELER, KRİTİK ve FİLM arasındaki bütün durumları içerir. 18
M:M İlişkinin Eşleştirilmesi (devam ) DEĞERLENDİRME * rating KRİTİK EDEN FİLİM 19 KRİTİK_EDENLER (KRİ) pk * no FİLMLER (FLM) pk * no DEĞERLENDİRMELER (DĞR) Anahtar Tipi Seçimlilik Sütun Adı pk, fk1 * kri_no pk, fk1 * flm_no * rating
1:1 İlişkinin Eşleştirilmesi 1:1 İlişki aktarılırken FK ve UK oluşturulur. Bu FK in bütün sütunları aynı zamanda UK in de parçasıdır. Eğer ilişki sadece bir tarafta zorunlu ise FK bu tabloda oluşturulur. Örnekte şişk_kodu SODA_ŞİŞESİ nde FK olup ŞİŞE_KAPAKLARI nın PK ine işaret etmektedir. Şişk_kodu aynı zamanda SODA_ŞİŞESİ tablosunda eşsiz olacaktır. 20
1:1 İlişkinin Eşleştirilmesi (devam ) SODA ŞİŞESİ kapatılır kapatır ŞİŞE KAPAĞI # kodu * tanımı SODA_ŞİŞELERİ (SODŞ) pk * no fk * şişk_kodu ŞİŞE_KAPAKLARI (ŞİŞK) pk * kodu * tanımı 21
Seçimli 1:1 İlişkinin Eşleştirilmesi Eğer 1:1 ilişki her iki tarftada seçimli ise FK nin hangi tabloya konulacağına siz karar verebilirsiniz. Bunul ailgil kesin bir kural yoktur ancak bazı tavsiyeler şu şekildedir: FK yi daha az satırı olan tabloya yerleştirerek yer tasarrufu yapınız. FK yi iş için önemli olma durumunu dikkate alarak gerçekleyiniz. 22
Seçimli 1:1 İlişkisi için İş Kuralları Örnekte, bir araba kiralama şirketi park yerinden çok araçla ilgilenecektir. Bu açıdan FK yi ARABALAR tablosuna koyması anlamlı olacaktır. Buna rağmen otopark işi yapan firma içinse ana konu park yeridir. Bunun için FK yi PARK_YERLERİ ne koyması anlamlı olacaktır. 23
1:1 İlişkinin Eşleştirilmesi (devam ) ARABA # plaka no * modeli park etmiş bulundurur PARK YERİ # kodu * tanımı 24 ARABALAR (ARB) pk * plaka_no * model fk, uk o prky_kodu ARABALAR (ARB) pk * plaka_no * model Araba Kiralama İşi PARK_YERLERİ (PRKY) pk * kodu * tanımı Otopark İşi PARK_YERLERİ (PRKY) pk * kodu * tanımı fk, uk o arb_plk_no
1:M İlişkiyi Uygulama Eğer ilişki iki tarafta zorunlu ise veritabanında 1:M ilişkide bir tarafında zorunluluk olduğu gibi aynı kısıta sahip olacaksınız. Bunun için kuralı uygulamak için ilave program yazmak gerekecektir. 25
Yayları Eşleştirme Yay içeren varlıklar ilişkinin tek olan tarafından gelecek FK leri tabloya eşleştirecektir. Yayın çoklu ilişki olan tarafında zorunluluk olsa bile FK ler her zaman seçimli olmalıdır (çünkü her zaman bir tanesi boş olacaktır). 26
Yay Eşleştirmesi (devam ) PROGRAM * tarihi * fiyatı o açıklama DEĞERLENDİRMELER (DĞR) pk, * no * tarihi o fiyatı açıklama fk1 o kma_no fk2 o özm_no KAMUSAL_ALANLAR (KMA) pk * no * adresi * kira_bedeli * not KAMUSAL ALAN * adres * kira bedli * not ÖZEL MÜLK * adres o not ÖZEL_MÜLKLER (ÖZM) pk * no 27
Yayları Eşleştirme (devam ) Yay birbirini dışlayan (XOR) ilişkiyi temsil ettiğinden tablodaki her bir satırda FK lerin sadece birinin değerinin olması gerektiği ilave kodlama ile sağlanmalıdır. Veritabanında saklanan check kısıtı ile bu kolaylıkla sağlanabilir. Örnekte, check kısıtı şu şekilde olacaktır: CHECK (kma_no is not null AND özm_no is null) OR (kma_no is null AND özm_no is not null) 28
Yayları Eşleştirme (devam ) Eğer yaydaki ilişkiler taamıyla seçimli olsaydı, bu durumda aşağıdaki kod ilave edilmeliydi: OR (kma_no is null AND özm_no is null) 29
Yayları Eşleştirme (devam ) KAMUSAL_ALAN için örnek veriler no adres kira_bedeli not 6 Kızılırmak Cad. No:12 1.500 Asansör yok 10 Sakarya Cad. No:1 1.000 Cami altı ÖZEL_MÜLK için örnek veriler no adres not 15 Yeşil bakkal Sok, No:16 20 Güzel Yalı Sok, No:3 Geniş LED TV PROGRAM için örnek veriler no adı Tarihi Fiyatı Tanımı Kma_no Özm_no 42 Hoş geldin partisi 5 Haz 5.000 6 48 Moral programı 8 Tem 8.000 10 50 Veda yemeği 12 Tem 2.000 20 30