KerimCETINBAS Merhaba,
Normal şartlarda varyantların, ürünlerin ve varyant-urun ilişkisinin tutulduğu toplam 3 adet tabloya ihtiyaç duyarsınız. Sizinki burada bahsettiğiniz üzere ürün içinde ürün varyantı durumu. Bu tip durumda yaklaşımınız doğru fakat yine de birkaç tavsiye verebilirim;
- Öncelikle
jk_products_variant
tablonuzda mutlaka id
alanı olmalı ve pk
olarak işaretlenmelidir.
- Indekslemeleri
id
alanlarına yapınız
- Bunlar dışında şu yolu izleyebilirsiniz;
products
tablosuna 1 adet alan açınız. Bu alanın tipi olarak integer[]
şeklinde tanımlayabilirsiniz. Daha sonra ilişkilendirilecek her ürün id
numarasını ilgili alana push edebilirsiniz. Böylelikle ek sorgu yükü ve tablo yükünden kurtulabilirsiniz fakat bu durum için çok büyük sorgu yükü olan veritabanları için geçerlidir.
Örnek verecek olursam;
id title price variant
1 RED 1000 [2,3]
2 BLUE 1000 [1,3]
3 GREEN 1000 [1, 2]
ilgili sorguya alanı in
olarak eklersen ilgili varyantları sana direkt ürünleri verecektir. Bir diğer yol ise varyant kategori sistemidir. Onu da şu şekilde yapabilirsin. Yine bir alan oluşturmalısın. variant_id
adında. Bu id
numarası unique olmayacaktır ama her ürün grubu için unique
olacaktır. Örneğin bir iphone ürün grubu için;
id title price variant_id
1 RED 1000 1
2 BLUE 1000 1
3 GREEN 1000 1
böylelikle bir ürünü select
ettiğinde o ürünün variant_id
değerini tüm ürünlerde select
edersen otomatik olarak o ürünün varyantlarını elde etmiş olursun.
Erdem Merhaba,
NoSQL karmaşık yapılarda daha doğrusu kompleks yapılarda bazen sorun çıkartabiliyor veya geliştirmesi uzun sürebiliyor. NoSQL veya SQL seçimini ürününüze göre tercih etmenizi öneririm.