Basit bir örnek belirteyim: Sipariş ve Alışveriş Sepetiniz var. Bunu devam ettirmeyi düşündüğüm yollardan biri, bir Sipariş belgesini ve bir Sepet belgesini kaydetmektir. Sipariş belgesinde, ilgili Sepet belgesinin UUID değeri olan "alışveriş sepeti" adında bir alan olabilir. Bunu yapmanın başka bir yolu da, bir Sipariş belgesini, tüm Sepetteki bir ilişkisel dizi içeren "alışveriş sepeti" alanıyla kaydetmek. Diğer bir deyişle, Sepeti açıkça bağımsız bir belge olarak kaydetmek yerine, Sepetim belgesini Sipariş belgesine yerleştirdim.CouchDB'de yabancı anahtarların uygulanmasının deyimsel yolu nedir?
Daha sonra bir Cart'ın kalıcı olması gerektiğine karar verirsek, geri dönen bir kullanıcı yarı mamul Cart'ı oturumları boyunca beklerken bulacaktır? Daha sonra, her iki yöntemi bir araya getirebileceğimizi, Cart'ı tamamlanmamış halde ayrı tuttuğunu ve son haline getirildiğinde/satın alındığında Sipariş belgesine gömebileceğimizi hayal ediyorum.
Her iki yöntem de çalışacaktır, ancak CouchDB'nin yabancı anahtar kısıtlamalarına sahip olmamasından endişeleniyorum; İlk yöntemde Cart belgesi silinebilir ve size bozuk bir veri kümesi bırakabilir.
Hangi yöntemin kullanılacağına nasıl karar verirsiniz? Bu yöntemlerden biri CouchDB'ye daha aptalca mıdır? Kaçırdığım yöntemler var mı?
CouchDB'ye yeni yaşıyorum, bu yüzden avantajları/dezavantajları az çok normalleştirilmiş bir yapıya sahip olmamı görmek benim için zor.