Teklif al
E-ticaret

Ürün varyantı nasıl modellenir: fiyat ve stok hangi kayda asılıyor?

Aynı koku birden çok hacimde, aynı araç birden çok donanımda satılıyor; her ikinci el makine ise tek. Varyant sınırını tek bir soru çiziyor: fiyat ve stok hangi kayda asılıyor?

Algoriel 10 dk okuma
Ürün varyantı nasıl modellenir: fiyat ve stok hangi kayda asılıyor?
Bu yazıda
  1. Varyant sınırı kataloğun ilk kararıdır
  2. Satılabilir birim testi: fiyat ve stok neye bağlanıyor
  3. İki eksen birleşince kayıt birleşimin kendisi olur
  4. Varyant kaydı fiyattan fazlasını tutar
  5. Gezinme ekseni varyant değildir
  6. Her birim benzersizse varyant modeli kurulmaz
  7. Hangi ayrım nereye gider: dört yaklaşım yan yana

Ürün varyantı, bir çatı kaydının altında kendi fiyatı ve stoğuyla izlenen satılabilir birimdir; çatı kaydı ikisini de taşımaz. Sınırın nereden geçeceğini tek soru belirler: bu ayrıma ayrı bir fiyat ve ayrı bir stok asılıyor mu? Ölçüt ters yönde de çalışıyor: parfüm kataloğunda koku notasına fiyat asılmadığı için o eksen varyant sayılmıyor, sayılsaydı anlamsız bir stok sayacı açardı.

Varyant sınırı kataloğun ilk kararıdır

Bir katalog kurulurken en erken verilen karar, neyin bir kayıt sayılacağıdır. Bu karar sonradan değiştirilebilen bir ekran tercihi değil; üstüne fiyat, stok ve sipariş yazılan zemindir. Zemin yanlış seçildiğinde hata tek bir yerde patlamaz, kataloğun her yerine dağılır.

Parfüm perakendesi bu kararı çıplak gösteriyor. Aynı kokunun birden çok hacimde satıldığı Kokudankokuya mağazasında standart e-ticaret ürün modeli kataloğu tek satır olarak görüyor: bir parfüm, bir kayıt. Mağazanın işleyişi bu varsayıma uymuyor, çünkü müşteri parfümü değil belirli bir şişeyi satın alıyor.

Hazır bir kurulumda düğümün iki çıkışı var ve ikisi de kendi bedelini üretiyor. Birinci uç, her şişe hacmini bağımsız bir ürün olarak açmak. Model bu durumda tutuyor ama katalog bozuluyor: liste sayfasında aynı parfüm art arda diziliyor, arama sonucunda aynı ad birkaç kez görünüyor ve müşteri aynı ürünün kaç biçimi olduğunu ancak satırları okuyarak anlıyor. Katalog büyüdükçe tekrar da büyüyor.

İkinci uç, bütün hacimleri tek ürün kaydına sıkıştırmak. Katalog bu kez düzgün görünüyor, kayıt bozuluyor. Fiyat tek bir alanda duruyor ve hacimler arasındaki fark bir açıklama metnine iniyor. Stok tarafında sonuç daha ağır: hangi şişenin tükendiği kayıttan okunamıyor, çünkü sayaç kokunun altında tek. Depodaki kişi doğru bilgiyi bilse bile katalog onu gösteremiyor.

İki ucun ortak yanı, ikisinin de sorunu kaydın dışına atması. Birincisi yükü katalog düzenine, ikincisi bir insanın hafızasına bırakıyor. Doğru sınır bu iki ucun arasında bir yerde ve o yeri tek bir ölçüt belirliyor.

Satılabilir birim testi: fiyat ve stok neye bağlanıyor

Ölçüt şu: neyin fiyatı ve stoğu ayrı ayrı takip ediliyorsa, satılabilir birim odur. Varyant sınırı da tam oradan geçer. Sorulacak soru şu: bunun kendi fiyatı ve kendi stoğu var mı.

Kokudankokuya’da cevap hacim. Katalogda kokunun kendisi tek bir kayıt olarak duruyor; her şişe hacmi o kaydın altında kendi başına satılan bir birim. Fiyat ve stok koku kaydına değil bu birimlere yazılı. Koku kaydı bir çatı: adı, açıklaması ve görseli var, fiyatı ve stoğu yok.

Ayrımın pratik karşılığı büyüme anında görünüyor. Kataloğa yeni bir şişe boyu geldiğinde yeni bir ürün açılmıyor; mevcut çatının altına bir birim ekleniyor. Katalogdaki ürün sayısı yerinde kalıyor, satılabilir birim sayısı artıyor. Model doğruysa büyümenin bedeli listede görünmüyor. Yanlışsa her yeni hacim kataloğa bir satır daha ekliyor ve büyüme kendi kendini yavaşlatıyor.

Kayıt modelinin özelleşmesi altyapının da özelleşmesi anlamına gelmiyor. Bu kataloğun ölçeği ayrı bir arama ya da önbellek katmanı gerektirmedi; mağaza Laravel ve MySQL üzerinde duruyor. Model kararı ile yığın kararı birbirinden bağımsız: biri işin kayıt biriminden, öteki ölçekten çıkıyor. E-ticaret işlerimizde ilk yazdığımız şey de bu yüzden ekran olmuyor; neyin satılabilir birim olduğunu yazıyoruz.

Bu model fiyatın tek bir eksenden türediği kataloglarda çalışıyor. Hacim tek başına fiyatı belirliyor, başka bir seçim fiyata karışmıyor. Fiyatı birden fazla seçim ekseni birlikte belirliyorsa tek eksenli varyant modeli yetmiyor ve sınırı başka bir yerden çizmek gerekiyor.

İki eksen birleşince kayıt birleşimin kendisi olur

Otomotivde satılan şey rafta duran bir kalem değil, bir yapılandırma sonucu. Alıcı önce aracı kuruyor: hangi donanım paketi, hangi renk. Donanım ile renk birleşiminin kendi kaydı olduğu KGM SsangYong online satış kanalında çeşitlilik tek eksende değil, iki eksenin çarpımında yaşıyor.

Kokudan farkı burada. Parfümde hacim tek başına yeterli bir ayrımdı; hacmi bilen fiyatı da biliyordu. Araçta donanımı ya da rengi tek başına bilmek yetmiyor. Fiyatı belirleyen şey ikisinin birlikte aldığı değer. Bu yüzden fiyat donanım kaydına ya da renk kaydına değil, birleşimi temsil eden kayda yazılı. Her donanım–renk birleşimi katalogda kendi kaydıyla duruyor.

Alternatif, fiyatı eksenlerden birine bağlayıp diğerini bir fark olarak eklemek olurdu: donanımın fiyatı, artı rengin farkı. Bu kurgu ilk bakışta ekonomik görünüyor, çünkü daha az kayıt istiyor. Bedeli, birleşimlerin gerçekten bağımsız fiyatlandığı anda çıkıyor. Bir donanımda bir renk ek bedel istemiyor, başka bir donanımda aynı renk istiyorsa toplama kuralı bozuluyor ve kural her istisnada bir dal daha kazanıyor. Kayıt birleşim düzeyinde tutulduğunda istisna diye bir şey kalmıyor; her birleşimin değeri kendi kaydında yazılı.

Hazır sepet yazılımlarının sınırı da burada. Bu ürünler fiyatı tek bir ürün kaydına bağlıyor ve donanım–renk kırılımını kuramıyor. Yapılandırma ekranı bir varyant alanı açıyor, ama o alanın fiyat ve satış koşulu tutup tutamayacağını söylemiyor. Birleşim düzeyinde kayıt bu yüzden özel kuruldu.

Ziyaretçi tarafında bunun karşılığı sade. Donanım ya da renk seçimi değiştiğinde fiyat ve ekrandaki araç görseli aynı anda güncelleniyor. İkisi birbiriyle tutarlı, çünkü ikisi de aynı birleşim kaydından okunuyor. İki bilgi iki ayrı yerde dursaydı tutarlılık bir eşleme kuralına kalırdı; kural da her yeni birleşimde yeniden doğrulanması gereken bir nesne olurdu.

Varyant kaydı fiyattan fazlasını tutar

Varyant sözcüğü çoğu zaman fiyat farkı diye okunuyor. Kayıt düzeyine inildiğinde bunun dar bir okuma olduğu görünüyor. Bir varyant kaydının hangi alanları tutacağı katalogdan kataloğa değişiyor.

SsangYong satış kanalında birleşim kaydı üç şeyi birden tutuyor. Birincisi fiyat. İkincisi görsel: her donanım–renk birleşiminin kendi araç görseli var ve görsel model düzeyinde değil birleşim düzeyinde duruyor. Renk seçimi değiştiğinde ekrandaki araç değişiyor, çünkü görsel bulunduğu yerde birleşime asılı. Görsel model kaydında dursaydı ziyaretçi bir rengi seçip başka renkteki araca bakardı; ekranla fiyat birbirinden ayrışırdı.

Üçüncüsü satış koşulu. Her birleşim kendi satış koşuluyla kayda geçiyor. Koşul birleşime asılmasaydı iki farklı yapılandırma aynı koşulu paylaşmak zorunda kalırdı; bir donanımda geçerli olan bir düzenleme, geçmediği bir donanımda da görünürdü. Koşulu birleşim düzeyinde tutmak, koşulun değiştiği gün dokunulacak yeri de tek bir kayda indiriyor.

İki kataloğu yan yana koymak alan listesinin sabit olmadığını gösteriyor. Parfümde satılabilir birim fiyat ve stok tutuyor; görsel koku düzeyinde kalıyor, çünkü şişe boyu ürünün karakterini değiştirmiyor. Araçta ise birleşim kaydı fiyatı, görseli ve satış koşulunu birlikte tutuyor. Aynı sözcük iki katalogda iki farklı kayıt yapısını adlandırıyor.

Buradan çıkan kural şu: varyant kaydının alan listesi bir şablondan gelmiyor, sorudan geliyor. Alıcının seçimi neyi değiştiriyorsa o bilgi varyant düzeyinde duruyor. Seçim değiştiğinde değişmeyen bilgi çatıda kalıyor. Ayrımı baştan yapmayan kataloglarda alanlar zamanla yanlış katmana yerleşiyor ve düzeltme, kayıtların tamamına dokunmayı gerektiriyor.

Gezinme ekseni varyant değildir

Katalogdaki her ayrım varyant değil. Bazı ayrımlar ürünü bölmüyor, ürüne ulaşmanın ikinci bir yolunu açıyor. Ayrımı yapmanın yolu yine aynı soru.

Kokudankokuya’da kategori ağacının yanında ikinci bir eksen duruyor: koku ailesi ve nota. Marka adını bilmeyen müşteri buradan başlıyor. Aradığı şey bir ad değil bir karakter. Eksen bu niyetin karşılığı olarak kuruldu.

Bu eksenin varyanttan farkı bağlanma biçiminde. Varyantta bir birim tek bir çatıya bağlı: bir şişe boyu tek bir kokuya ait. Notada ilişki çok uçlu; bir parfüm birden çok notaya bağlanabiliyor ve aynı ürün farklı arama niyetlerinden bulunuyor. Ürün tek bir kategori dalına hapsolmuyor.

Asıl ölçüt yine fiyat ve stokta. Notaya ya da koku ailesine fiyat asılmıyor, stok asılmıyor. Kimse bir koku ailesi satın almıyor; belirli bir kokunun belirli bir şişesini satın alıyor. Satılabilir birim hacim olarak kalıyor, nota yalnız bir yol.

Aynı katalogda iki ayrım tipi yan yana yaşıyor: hacim bir varyant, nota bir ilişki. İkisini aynı mekanizmayla kurmak iki yönde de zarar veriyor. Notayı varyant olarak modellemek her notaya bir stok sayacı açar ve o sayaç hiçbir zaman anlamlı bir sayı göstermez. Hacmi ilişki olarak modellemek ise fiyatı ortada bırakır.

Ayrımın hangi tipte olduğu her zaman baştan belli olmuyor. Bir katalogda gezinme ekseni gibi duran bir özellik, işletme onu ayrı fiyatlamaya başladığı gün varyanta dönüşüyor. Dönüşümü fark etmenin işareti tek: o özellik için ayrı bir fiyat ya da ayrı bir stok tutulmaya başlanmışsa eksen artık bir bağlantı değil. Kokudankokuya’da bu sınır yerinde duruyor; nota bir arama yolu olarak kaldığı sürece kendi sayacına ihtiyaç duymuyor.

Bir ayrımın nereye yerleşeceğine karar verirken önce ona fiyat ve stok asılıp asılmadığına bakın: asılıyorsa alt kayıt, asılmıyorsa bağlantı.

Her birim benzersizse varyant modeli kurulmaz

Şimdiye kadarki iki örnek de aynı şeyin birden çok kopyasını satan kataloglardı. Bazı kataloglarda bu koşul hiç yok.

Her makinenin kendi başına yayınlandığı Plastik ve Makina platformunda kayıt birimi ürün değil ilan. Sıfır ve ikinci el plastik işleme makineleri aynı yerde listeleniyor ve ilanlar birbirinin çeşidi olarak modellenmiyor. Üstünde varyant kurulacak ortak bir ürün kaydı yok, çünkü iki ikinci el makine birbirinin aynısı değil.

Fiyat ve stok tarafındaki fark buradan geliyor. Platform satışa aracılık etmiyor; pazarlık ve ödeme taraflar arasında kalıyor. Bu yüzden fiyat ve stok e-ticaretteki gibi bir operasyon yükü olarak sisteme bağlanmıyor. Bir ilanın adedi kendi başına belli olduğu için stok sayacı da bir soruya cevap vermiyor.

Peki sıfır ile ikinci el ayrımı ne? Varyant değil, filtre ekseni. İki durum aynı listede duruyor ve alıcı filtreyi açıp iki seçeneği tek arama içinde karşılaştırıyor. Ayrı listelerde dursaydı karşılaştırma yapılamazdı; alıcı ikinci el bir makinenin fiyatını sıfırının yanında göremezdi. Ayrımın nereye konduğu doğrudan alıcının kararına bakıyor.

Kategori ağacının tamamı tek bir makine ailesinin kendi ayrımlarına göre kurulu. Genel bir ilan sitesinde sanayi başlığının altında bir alt satır olan ayrım burada ana eksen. Liste Laravel’de sunucuda üretiliyor, Inertia tarayıcıya taşıyor; filtre değiştiğinde sayfa baştan yüklenmiyor.

Bu katalogda varyant modeli kurmak boş bir hiyerarşi üretirdi: her çatının altında tek bir birim. Kayıt bir katman derinleşir, hiçbir soru cevaplanmazdı.

Ayrım, e-ticaret ile ilan platformunu birbirinden ayıran şeyi de gösteriyor. Mağaza aynı ürünü tekrar tekrar satar; ilan platformu her kaydı bir kez yayınlar. Birincisinde stok bir sayaç, ikincisinde bir durum. Kayıt modelini bu farkı görmeden kurmak, mağaza için yazılmış bir şablonu ilan listesine giydirmek olur ve giydirme her zaman aynı yerden sırıtır: doldurulmayan varyant alanları.

Hangi ayrım nereye gider: dört yaklaşım yan yana

Dördüncü bir durum daha var ve tabloyu tamamlıyor. Menünün tek sayfa olarak yayınlandığı Çatalca Merkez Kasap QR menüsünde fiyat doğrudan menü kaleminin üstünde duruyor. Varyant yok, çünkü kalemin altında ayrıca fiyatlanan bir birim yok. Sipariş, ödeme ve stok katmanı da hiç kurulmadı; kurulmadığı için stok sorusu ortaya çıkmıyor. Menü bölümlere ayrıldı; her bölüm ayrı bir adresle açılıyor, bu yüzden farklı QR kodları aynı sayfanın farklı yerlerine iniyor. Varyantsız tek kayıt biçimindeki içeriğin yaşadığı yer genellikle içerik yönetimi tarafı oluyor.

Dört yaklaşımı yan yana koymak, aralarındaki farkın ölçek değil soru olduğunu gösteriyor.

YaklaşımKayıt neyi temsil ediyorFiyat ve stok neye asılıÇeşitlilik alıcıya nasıl açılıyor
Tek kayıt, varyantsızMenü kalemi — QR menü sayfasındaki tek satırFiyat doğrudan kalemin üstünde; sipariş, ödeme ve stok katmanı hiç kurulmadıMenü bölümlere ayrılmış, her bölümün kendi adresi var; farklı QR kodları aynı sayfanın farklı noktasına iner
Tek eksende varyant (hacim düzeyi)Koku bir çatı kaydı, her şişe hacmi onun altında satılabilir birimFiyat ve stok hacim birimine yazılı; koku kaydı ikisini de taşımazKategori ağacının yanında koku ailesi ve nota ekseni; bir parfüm birden çok notaya bağlanır
Birleşim düzeyinde kayıt (iki eksen)Donanım ile rengin her birleşimi kendi kaydıFiyat birleşime yazılı; görsel ve satış koşulu da aynı birleşim kaydındaKonfigüratör: ziyaretçi donanım ve renk seçtikçe fiyat ve ekrandaki araç birlikte güncellenir
Benzersiz ilan (varyant yok)Her ilan kendi başına bir kayıt; ilanlar birbirinin çeşidi değilPazarlık ve ödeme taraflar arasında; sistem fiyat-stok operasyonu yürütmezMakine ailesine göre kurulu kategori ağacı; sıfır/ikinci el ayrımı aynı liste üstünde filtre

Tablonun ikinci sütunu birinci sütunun cevabı, üçüncü sütunu ise sonucu. Kaydın neyi temsil ettiği belirlendiğinde fiyatın ve stoğun nereye yazılacağı kendiliğinden çıkıyor; çeşitliliğin alıcıya nasıl açılacağı da onun ardından geliyor. Ters sıra denendiğinde ekran önce çiziliyor ve kayıt o ekranı beslemek için eğiliyor.

Dört satır bir olgunluk sıralaması değil. QR menü, birleşim düzeyinde kayda doğru büyümesi gereken eksik bir katalog değil; kendi sorusuna verilmiş tam bir cevap. Aynı şekilde ilan platformu, varyant modeline henüz gelmemiş bir mağaza değil. Her satır fiyat–stok sorusunun farklı bir cevabına karşılık geliyor.

Kendi kataloğunuz için bu tabloyu okumanın yolu tek bir cümleyi tamamlamak: “Bizim işimizde fiyat ve stok ___ üstünde duruyor.” Boşluğa yazdığınız şey satılabilir birimdir ve varyant sınırı da tam orada geçer. Boşluğu doldururken iki seçim eksenini birden yazmanız gerekiyorsa cevabınız üçüncü satır. Hiçbir şey yazamıyorsanız — fiyat pazarlıkta duruyor, stok diye bir kayıt yok — cevabınız dördüncü satır ve kuracağınız şey bir katalog değil, bir ilan listesi.

Temel çıkarımlar

  • Varyant sınırını fiyat ve stoğun bağlandığı kayıt belirler; bu karar katalog kurulmadan önce verilir.
  • Ürün kaydını çatı olarak tut; fiyatı ve stoğu altındaki satılabilir birime yaz.
  • İki seçenek ekseni fiyatı birlikte belirliyorsa kaydı eksenlerden birine değil birleşimin kendisine kur.
  • Fiyat ya da stok bağlanmayan gezinme ekseni varyant değil ilişkidir; alt kayıt olarak değil bağlantı olarak modellenir.
  • Her birim benzersiz olduğunda varyant modeli yerine filtre eksenleriyle çalışan ilan kaydı kurulur.

Bu yazıda sık sorulanlar

  • Aynı ürünün iki boyutu iki ayrı ürün mü, yoksa tek ürünün iki varyantı mı?

    Ayrımı boyutun kendisi değil, fiyat ve stok belirler. İki boy ayrı fiyatla ve ayrı stokla izleniyorsa, ikisi tek ürün çatısının altında birer satılabilir birim olarak modellenir. Kokudankokuya'da parfümün her şişe boyu böyle duruyor: katalogda ürün bir kez görünüyor, fiyatı ve stoğu her boy kendi kaydında tutuyor. Her boyu ayrı ürün açmak kataloğu aynı kokunun tekrarıyla şişirir; tek kayda sıkıştırmak boy bazlı stok takibini imkânsız kılar.

  • Fiyat ve stok ürün kaydına mı varyant kaydına mı yazılır?

    Fiyat ve stok satılabilir birime yazılır; ürün kaydı bu iki bilgiyi taşımayan bir çatıdır. Kokudankokuya'da bir kokunun fiyatı ve stoğu koku kaydında değil, her şişe hacmini temsil eden alt kayıtta duruyor. Büyüme anında fark görülüyor: yeni bir şişe boyu katalogda yeni bir ürün değil, mevcut çatının altına eklenen bir birim oluyor.

  • Renk ve donanım gibi iki seçim birleşince fiyat hangi kayda bağlanır?

    Fiyat, birleşimin kendisini temsil eden kayda bağlanır. SsangYong online satış sitesinde satılan şey rafta duran bir kalem değil, donanım paketi ile rengin birlikte belirlediği bir yapılandırma sonucu; fiyat bu iki seçimden birine değil ikisinin birleşim kaydına yazılıyor. Hazır sepet yazılımları fiyatı tek ürün kaydına bağladığı için bu kırılımı kuramıyor. Seçim değişince fiyat ve görsel aynı anda güncelleniyor, çünkü ikisi de aynı kayıttan okunuyor.

  • Koku ailesi ya da nota gibi gezinme eksenleri de varyant sayılır mı?

    Hayır; fiyat ya da stok bağlanmayan eksen varyant değil ilişkidir. Kokudankokuya'da koku ailesi ve nota, kategori ağacının yanında ikinci bir gezinme yolu açıyor: marka adını bilmeyen müşteri kokunun karakterinden başlıyor. Bir parfüm birden çok notaya bağlanabiliyor ama satılabilir birim hacim olarak kalıyor. Aynı katalogda iki ayrım tipi yan yana duruyor: hacim bir varyant, nota bir ilişki.

  • Her ürün benzersizse — ikinci el makine gibi — yine varyant modeli mi kurulur?

    Gerekmez; her birim benzersizse kayıt modeli varyant değil ilandır. Plastik ve Makina'da her makine kendi başına yayınlanan bir ilan; platform satışa aracılık etmediği, pazarlık ve ödeme taraflar arasında kaldığı için fiyat ve stok sisteme operasyonel yük olarak bağlanmıyor. Sıfır–ikinci el ayrımı da varyant değil filtre ekseni: iki durum aynı listede duruyor ve alıcı tek arama içinde karşılaştırıyor.

Yazar hakkında

Algoriel

Uzaktan çalışan web yazılım ajansı

İşletmelere özel web ve mobil yazılım geliştiriyoruz. Blogda, yazılım yaptırırken ve yayından sonra karşınıza çıkan soruları cevaplıyoruz.

İlgili hizmetler

Etiketler:
  • ürün varyantı
  • katalog modelleme
  • satılabilir birim
  • e-ticaret veri modeli
  • varyant yönetimi

İnşa edilecek bir sisteminiz mi var?

Kurmak istediğiniz bir sistem varsa teklif formundan anlatabilirsiniz.