İlişkilerin çoğu zaman yalnızca bir tarafa erişildiği çoktan çoğa ilişkiyi modelliyorum. Daha çok bir hiyerarşi gibi, yukarıdan aşağıya erişilir ve diğer yoldan değil.Bağlantı tabloları vs yabancı anahtar dizileri?
Anketi vardır ve var birçok Sorular aittir ve birçok Cevapları aittir.
Her iki ilişki de çoktan çoğa olmalıdır, çünkü aynı soru farklı anketlerde ve aynı soruda birçok soruda tekrar kullanılabilir. Bu bir şarttır.
Standart M2M uygulaması, iki birleşim tabloları, surveys_questions
ve questions_answers
kullanır. Bunun yerine, PostgreSQL'in tamsayı dizilerini kullanarak, Ankette question_ids
ve soruda answer_ids
'u depolamayı düşünüyorum.
Yabancı anahtar dizisiyle eşleşen tüm satırları sorgulamak için HER operatörünü kullanabiliriz.
Tüm anketleri soruları ve sorularının yanıtlarını SQL kullanarak nasıl sorgularız?
Yabancı anahtar dizisiyle döndürülen satırların sırasını nasıl eşleştirebiliriz? yani. question_ids = [1,2,3] kullanarak soru satırlarını 1, 2, 3 numaralı sırayla döndürmesi garanti edilir.
Bu, bağlantı tablolarıyla karşılaştırıldığında performans açısından daha iyi performans gösterir (uygun indeksler varsa, her ne olursa olsun)?
Bunu önerir misiniz? M2M'yi bunun gibi modelleme konusunda bazı kaynaklar var mı?
Güncelleme
Orada PostgreSQL 9.3 için dizi yabancı anahtarlar için bilgi tutarlılığını eklemek için bir öneri, ama dahil alamadım: http://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/
yabancı anahtar diziyi PostgreSQL JOIN with array type with array elements order, how to implement? kullanarak düzeni sağlamak konusunda SO soru
Çok kişiye çok şey söylüyorsunuz, ancak bu bire çok gibi geliyor; Pek çok kişi, her bir anketin birkaç soruyla ilgili olduğu ve her sorunun birkaç anketle ilgili olduğu anlamına gelir, ama bu biraz garip geliyor, şüphesiz, '' birçoğunu '' ifadesi normalde bir ile birçokyla eşanlamlıdır. -many genellikle 'has -ve-aittir-çok' 'olarak adlandırılır) – SingleNegationElimination
@TokenMacGuy: Karışıklık için özür dilerim. Sorular, çoktan çoğa ilişkileri kuran sorular arasında anketler ve cevaplar boyunca yeniden kullanılabilir. Değiştireceğim HABTM ile çok ilişkisi var. – randomguy