bir birleştirme tablosuyla tek yönlü bir bire çok ilişki çok sadece bir dış anahtar kolon kullanılarak tercih olduğunu söyler sahip olunan varlık. Sorum şu, neden daha çok tercih ediliyor?
cevap
Sahip olduğu varlık türünün başka bir ana varlık türü tarafından sahip olunabileceği durumu düşünün. Sahip olunan tablodaki yabancı anahtar referanslarını her iki ana tabloya koyar mısınız? Üç ana tipiniz varsa ne olur? Sadece büyük tasarımlara göre ölçeklendirilmez.
Birleştirme tablosu, birleştirmeyi ayırır, böylece sahip olunan tablonun, üst tablo (lar) hakkında hiçbir bilgisi yoktur, bu da tasarımın zarif bir şekilde ölçeklenmesine izin verir.
Farkı görün bakın http://stackoverflow.com/q/18333198/418439 –
Çocuk öğesinin yalnızca bir üst türü varsa, birleştirme tablosuna gerek yoktur. Bunu JPA ile yaptım (hazırda bekletme ile).
Avantajlar: Daha az bir tablo. Belki daha iyi performans. Hayır "bu tablo ne için?" sorular yazın.
Dezavantaj: OO açısından bakıldığında, çocuk ve ebeveyn arasında ek bir bağımlılık vardır. Pratikte bu büyük bir anlaşma değildir, çünkü ilişki çocukta özeldir.
e.g. parent: @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL) @MapKey(name = "name") private Map children; child: @ManyToOne(optional = false) private Parent parent;
adresindeki iç SQL işlemlerinin birleştirme tablosunda ve yabancı anahtarda çağrılması, –
Rafine dezavantajı konusunda daha fazla ayrıntı verebilir. – Conor
Sadece, JPA 2.0 ile çocuğun üst öğeye başvurmasının artık gerekli olmadığını unutmayın. Sadece ebeveyn üzerindeki @JoinColumn ek açıklamasını kullanın. –
http://stackoverflow.com/questions/2092611/why-is-it-recommended-to-avoid-unidirectional-one-to-many-association-on-a-forei –