Veritabanı Tasarımı İlişki Eşleme
Amaç Bu ders aşağıdaki hedefleri kapsamaktadır: İlişki eşleme kuralını 1:M ve çizgili ilişkilerin dönüşümünde doğru bir şekilde uygulama İlişki eşleme kuralını M:M ilişkilerin dönüşümünde doğru bir şekilde uygulama 1:1 ilişkileri dönüştürme İlişki haritalama kuralı uygulayın İlişki eşleme kuralını yay ilişkilerin dönüşümünde doğru bir şekilde uygulama 2
Amaç Herhangi bir kişi için bir ev inşa ettiğinizi düşünün. Ağaç, boya, kapı, pencere, çivi ve tornavida gibi tüm malzemelere ve yeteneğe sahipsiniz fakat tasarımınız yok. Başlamadan, kaç oda eklenmesi gerektiğini, pencerelerin nereye konulacağını, kapılar nasıl yönlendirilmesi gerektiğini ya da her bir odanın ne renk boyanacağını bilemezsiniz. Böyle bir şekilde bir ev inşa edebilirsiniz ve bitirmek için bu kararları alırsınız. Fakat yapısal tasarım planı ile başlayamazsınız. Nihai ürün, müşteri aklındaki ev olmayabilir. 3
Amaç İlişkiler, bir tablonun diğer tabloya ilişkilendirilmesi için birincil ve ikincil anahtarları arasında eşleştirilmelidir. İlişkileri eşlemezsek sadece bilgi içeren ve veritabanında başka bir şey ile bağlı olmayan birçok bağımsız tabloya sahip oluruz. Varlıklar arasındaki ilişkileri eşleme müşteri, tasarımcı, geliştirici ve veritabanı ürünü yöneticisi arasındaki görüşmeyi kolaylaştırmak için kritik bir "ilk adım" olarak hizmet vermektedir. 4
İlişkiler için Kurallar Bir ilişki, tablodaki ilişkinin birçok tarafında, bir ya da daha çok ikincil anahtar sütunu oluşturabilir. İkincil anahtar sütununu isimlendirirken tablonun kısa adını kullanırız. Bir sonraki sayfadaki örnekte görüleceği üzere, EMPLOYEES tablosundaki dpt_id ikincil anahtar sütunu, DEPARTMENT ile ilişkiliyken, epe_id tam tersi bir ilişkidedir. İkincil anahtar sütunu, iş gereksinimlerine bağlı olarak zorunlu ya da seçimli olabilir. Örnekte, dpt_id zorunlu, epe_id seçimlidir. 5
İlişkiler için Kurallar 6
Bir Taraflı Zorunlu İlişkileri Eşleme Bir taraflı zorunlu olan ilişkiler ya da ikili taraflı zorunlu olan ilişkiler, bir taraflı seçimli olan ilişkiler ile tamamen aynı şekilde eşleştirilir. Kavramsal model, ilişkinin her iki sonundaki seçimliliğiyakalamak için yeterince zengindir. Bununla birlikte fiziksel model, bir ikincil anahtar kısıtlamasının birçok sondaki zorunlu ilişki zorlamasından dolayı sınırlıdır. Örnekte, fiziksel model bir BANT ın en az bir MÜZİSYEN den oluşması gerekliliği için zorlayamaz. Bir taraftaki seçimlilik ek programlama aracılığıyla tanımlanmalıdır. 7
SeçimliliğiZorlama 8
Devredilemez İlişkileri Eşleme Kavramsal modeldeki devredilemez bir ilişki, veritabanı tablosundaki ikincil anahtar sütunun güncellenemeyeceği anlamına gelmektedir. İkincil anahtar kısıtının kendisi veritabanında bunu zorlayamaz. Veritabanının bu iş kuralını izlediğinden emin olmak için ek programlamaya ihtiyaç duyulur. Takım arkadaşlarının uygun kod yazmaları ve bu iş kuralını zorlamaları için kuralları belgelemek önemlidir. 9
Devredilemez İlişkileri Zorlama (Bu ikincil anahtar sütunundaki değer değişmeyecektir.) 10
Çizgili İlişkileri Eşleme Bir çizgili ilişki, bir ikincil anahtar sütunu ile birçok tarafta eşleştirilir, tıpkı diğer 1:M ilişkiler gibi. Bu durumda, ikincil anahtar sütunu çift rol oynar çünkü aynı zamanda birincil anahtarın parçasıdır. Örnekte, ACCOUNTS tablosundaki bak_number BANKS tablosundaki birincil anahtara ilişkilendirilen bir ikincil anahtardır. Ayrıca ACCOUNTS tablosunun birincil anahtarının parçasıdır. 11
Çizgili İlişkileri Eşleme (Bu ikincil anahtar sütunundaki değer değişmeyecektir.) 12
Kademeli Çizgili İlişkiler Hiyerarşiler kademeli çizgili ilişkilere yol açabilir. Hiyerarşisinin en üstündeki varlığın UID si, hiyerarşinin en altındaki varlıklar boyunca taşınır. Örnekte ODA için UID, ODA numarası, SUIT numarası, KAT numarası ve YAPI numarasından oluşur. Bu çizikli ilişkiler ile temsil edilir. Bu fiziksel modele dönüştürüldüğü zaman, sonuçta elde edilen ikincil anahtar sütunu adı orijinal tabloların ön adını içereceğinden çok uzun olacaktır. Örnekte, ROOMS için BUILDINGS tarafından gelen ikincil anahtar sütunu adlandırması sue_flr_bdg_idyerine sue_bdg_id olarak tanımlanmıştır. 13
Kademeli Çizgili İlişkiler 14
Kademeli Çizgili İlişkiler Her bir tablo için örnek veri kademeli çizgili ilişkiyi göstermektedir. 15
Çoka-Çok İlişkileri Eşleme M:M bir ilişki, kesişme tablosuna eşleyen bir kesişme varlığı ile çözülür. Bu kesişme tablosu, orijinal tabloya ilişkilendirilen ikincil anahtar sütunu içerir. Örnekte REVIEWS tablosu CRITIC ve MOVIE tabloları arasında var olan tüm kombinasyonları içerir. 16
Çoka-Çok İlişkileri Eşleme 17
Bire-Bir İlişkileri Eşleme 1:1 ilişkiyi dönüştürürken, bir ikincil anahtar ve bir benzersiz anahtar oluşturulur. Bu ikincil anahtarın tüm sütunları ayrıca benzersiz anahtarın bir parçasıdır. Eğer ilişki bir tarafta zorunlu ise ikincil anahtar ilgili tabloda oluşturulur. Örnekte SODA_BOTTLES tablosundaki bcp_code ikincil anahtar sütunu BOTTLE CAPS tablosundaki birincil anahtarı gösterir. SODA_BOTTLES tablosunda bcp_code ayrıca benzersizdir. 18
Bire-Bir İlişkileri Eşleme (mühürlü olma) 19
Seçimli Bire-Bir İlişki Eğer ilişki her iki tarafta seçimli ise hangi tablonun ikincil anahtar alacağını seçebilirsiniz. Kesin bir kural yoktur fakat bazı ipuçları: İkincil anahtarı daha az satır olan tabloda tanımlayın. İkincil anahtarı işletme için daha anlamlı olacak tabloda tanımlayın. Örnekte, araç kiralama acentası boşluklardan çok arabalarla ilgili olduğundan ikincil anahtar CARS tablosuna konulabilir. Bununla birlikte otopark işi yapan firma için boş yer önemlidir bu yüzden ikincil anahtar SPACES tablosuna konulabilir. 20
Seçimli Bire-Bir İlişki 21
Bire-Çok Zorlama Eğer ilişki her iki tarafta zorunlu ise 1:M ilişkide olduğu gibi aynı kısıtlamaya sahip olursunuz. Bu yüzden bunu zorlamak için ek kodlama yazmaya ihtiyaç duyarsınız. 22
Yayları Eşleme Yaya sahip bir varlık tek taraflı ilişkideki tablolardan olan ikincil anahtar içeren tabloya eşlenir. Hatta yaydaki ilişki çok tarafta zorunlu ise sonuçlanan ikincil anahtarlar seçimlilik olmalıdır. 23
Yayları Eşleme 24
Yayları Eşleme Yay, özel ilişkileri temsil ettiği zaman, tablodaki her bir satır için ikincil anahtarın tek bir değer alması için ek kodlama gereklidir. Veritabanında saklanan bir onay kısıtlaması bunu kolayca yapabilir. Örneğin, onay kısıtı için kod aşağıdaki gibi olacaktır: CHECK (pse_id is not null AND phe_id is null) OR (pse_id is null AND phe_id is not null) Eğer ilişki tamamen seçimlilikise, şunu ekleyebilirsiniz: OR (pse_id is null AND phe_id is null) 25
Yayları Eşleme 26
Yayları Eşleme Yerel boşluk numarası (pse_id) için değer mevcut ise özel ev numarası (phe_id) sütunu boş olmalıdır. Tam tersine, pse_id boş ise, phe_id dolu olmalıdır. Tamamen seçimli ilişkide ek kodlama her iki numaranın da boş olmasını sağlayacaktır. 27