[]
Database uzmanlarına bir soru
Merhaba dostlar,
Şimdi bir bilgisayar toptancısı için B2B sistem hazırlanması gerekiyor, bu adamlar bilgisayar sarf malzemesinden tutun da elektronik eşyaya kadar bir çok farklı türde ürün satıyorlar ve her ürünün teknik özelliklerini veritabanında kaydetmemiz gerekiyor yani standart bir ürün tablosu oluşturup o ürünle ilgili özellikleri bu tabloya işlemek ihtiyacımızı gidermiyor.
İşveren şöyle bir sistem istiyor ben yönetici panelinden yeni bir ürün tipi oluşturduğumda o ürün tipine ait özel alanları kendim oluşturabileyim ve her yeni ürünü bu tipi seçerek eklediğimde o ürün tipine ait field'ları doldurayım.
Yani anlayacağınız esnek bir sistem olmalı ve sınırsız sayıda ürün tipine sınırsız sayıda alan ekleyebilmemiz gerekiyor ayrıca şu da önemli, bazı özellikler integer değer taşıyacakken bazıları belki datetime bazıları string olacak.
Böyle bir yapı nasıl kurulur ? Genel kabul görmüş teknik nedir ?
Şimdi bir bilgisayar toptancısı için B2B sistem hazırlanması gerekiyor, bu adamlar bilgisayar sarf malzemesinden tutun da elektronik eşyaya kadar bir çok farklı türde ürün satıyorlar ve her ürünün teknik özelliklerini veritabanında kaydetmemiz gerekiyor yani standart bir ürün tablosu oluşturup o ürünle ilgili özellikleri bu tabloya işlemek ihtiyacımızı gidermiyor.
İşveren şöyle bir sistem istiyor ben yönetici panelinden yeni bir ürün tipi oluşturduğumda o ürün tipine ait özel alanları kendim oluşturabileyim ve her yeni ürünü bu tipi seçerek eklediğimde o ürün tipine ait field'ları doldurayım.
Yani anlayacağınız esnek bir sistem olmalı ve sınırsız sayıda ürün tipine sınırsız sayıda alan ekleyebilmemiz gerekiyor ayrıca şu da önemli, bazı özellikler integer değer taşıyacakken bazıları belki datetime bazıları string olacak.
Böyle bir yapı nasıl kurulur ? Genel kabul görmüş teknik nedir ?
Ben böyle programlar yazmıyorum sadece yaklaşımım nasıl olurdu onu yazayım...
Her tip için dinamik olarak tablo oluşturup "tipler" database'ine atardım. Arayüzde verileri gösterirken devamlı veri formatlaman gerekecek, kayıt yaparken devamlı veri formatlamak ve hatalı veri girişini engellemen gerekecek.
Her tip için dinamik olarak tablo oluşturup "tipler" database'ine atardım. Arayüzde verileri gösterirken devamlı veri formatlaman gerekecek, kayıt yaparken devamlı veri formatlamak ve hatalı veri girişini engellemen gerekecek.
- kimlanbu (06.08.16 11:12:47)
@acemi, 2000 yılında takılı kalmışsın istersen biraz araştır o dediğin teknoloji tarihe karıştı. Ben böyle bir şey var mı diye sormuyorum bunu yapanlar nasıl yapıyor diye soruyorum zilyon tane proje var böyle esnek yapıyla çalışan.
- solo (06.08.16 12:41:53 ~ 12:42:59)
stok tutmak açısından doğru bir kurgu değil elbette bu. yapılamaz demiyorum, sadece doğru değil diyorum. SAP dahil bir sürü ERP ile entegre uygulama yazdım, hepsinde belli bir şablon oluyordu, olmalıdır.
yapılamaz demiyorum kısmına gelince, nosql ile rahatlıkla yaparsın. şema yok zira, key-value mantığında çalışır. value'nun içeriği senin keyfince olur. bi tablo yaparsın, o tablonun bi row'u başka tipte field'lara sahipken bi altındaki row'un ortak alanlar dışındakileri bambaşka sayıda ve tipte olabilir. şema olmadığından kısıtlaman da olmaz.
nosql ile kritik dataları tutmak konusunda bir takım endişeler okuyorum, production seviyesinde bir ürün çıkartmadan evvel nosql ile geliştirilecek db'nin backup'ını nasıl almalısın kısmını iyice araştır. ben nosql'de asla kritik data tutmuyorum, o yüzden pek sallamıyorum data-loss olsa bile.
yapılamaz demiyorum kısmına gelince, nosql ile rahatlıkla yaparsın. şema yok zira, key-value mantığında çalışır. value'nun içeriği senin keyfince olur. bi tablo yaparsın, o tablonun bi row'u başka tipte field'lara sahipken bi altındaki row'un ortak alanlar dışındakileri bambaşka sayıda ve tipte olabilir. şema olmadığından kısıtlaman da olmaz.
nosql ile kritik dataları tutmak konusunda bir takım endişeler okuyorum, production seviyesinde bir ürün çıkartmadan evvel nosql ile geliştirilecek db'nin backup'ını nasıl almalısın kısmını iyice araştır. ben nosql'de asla kritik data tutmuyorum, o yüzden pek sallamıyorum data-loss olsa bile.
- cevap botu (06.08.16 12:59:59)
amma piroblem yapmissiniz
al sana cozum :
uruntipi ve tipDetay diye 2 tablo olusturacaksin.
uruntipi (Id, tipIsmi)
tipDetay (DetayId, tipId(foreign key), DetayIsmi, DetayTipi (int), DetayDegeri(string 120))
* böylece bir uruntipine atadığında sınırsız detay girebilirsin girebilirsin.
* detay degerini kaydederken string e çevirip kaydedersin.
* detayTipine gore stringden cevirip kullanırsın.
Detaytip 0 = int
DetayTip 1 = date
DetayTip 2 = binary, gibi
oldu bitti gitti
** string yerine base64 e falan cevrilir aslinda ama karistirmak istemedim.
al sana cozum :
uruntipi ve tipDetay diye 2 tablo olusturacaksin.
uruntipi (Id, tipIsmi)
tipDetay (DetayId, tipId(foreign key), DetayIsmi, DetayTipi (int), DetayDegeri(string 120))
* böylece bir uruntipine atadığında sınırsız detay girebilirsin girebilirsin.
* detay degerini kaydederken string e çevirip kaydedersin.
* detayTipine gore stringden cevirip kullanırsın.
Detaytip 0 = int
DetayTip 1 = date
DetayTip 2 = binary, gibi
oldu bitti gitti
** string yerine base64 e falan cevrilir aslinda ama karistirmak istemedim.
- supermatik (06.08.16 13:19:03 ~ 13:28:03)
@supermatik, sanırım bir tablo daha lazım yanlış anlamadıysam, tip isimlerinin tutulduğu 1. tablo, ürün tiplerinin fieldlarının tutulduğu 2. tablo, ve bu field'lara bağlı ürün detaylarının tutulduğu 3. bir tablo olmalı.
@acemi, hem SAP hem de AS400 geliştiricisi olarak hala seninle ilgili düşüncem aynı yine de teşekkür ederim cevap verdiğin için.
@acemi, hem SAP hem de AS400 geliştiricisi olarak hala seninle ilgili düşüncem aynı yine de teşekkür ederim cevap verdiğin için.
- solo (06.08.16 14:38:27 ~ 14:38:57)
1