Merhaba,

Çok kullanıcılı (birbirinden bağımsız firmalar) web tabanlı basit bir otomasyon sistemi üzerinde çalışıyorum. Başlarda düşüncem, sistemi kullanan her kullanıcı için ayrı bir veritabanı oluşturmaktı ancak şu aşamada veritabanı kısıtlı olduğu için bu şekilde devam edemiyorum.

Bundan sonrası için aklımda iki seçenek var. Birincisi tek bir veritabanı ve tablo sistemi içinde, her tabloya bir uye\_id alanı ekleyip, sorguları yaparken bu uye\_id bilgisine göre kullanıcıları ayırmak, ikincisi ise her bir kullanıcı oluştururken yeniden tablolarını o üyeye özel bir ön ek kullanarak oluşturmak. Örnegin; crs\_musteriler, ktp\_musteriler gibi.

Her iki yöntemide daha önce kullanmadım, avantaj ve dezavantajlarını bilmiyorum. Bu konuda bilgisi olan arkadaşların yorumunu bekliyorum. Tabi başka bir alternatif önerilerinede açığım.

soruldu: 08 Tem '14, 03:54

zafer's gravatar image

zafer
41591019
cevap kabul oranı: 11%

değiştirildi: 08 Tem '14, 04:09

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183

bu sistemin, çok kullanıcılı bir web sitesinden farkı ne? Sadece kullanıcı yerine firma olmayacak mı? yoksa farklı mı?

(08 Tem '14, 04:00) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Aslında ilk başta birbirine benziyor gibi, ancak burada her firmanın bilgileri birbirinden ayrı olacak, senin söylediğinde ise kullanıcı bilgileri farklı ama içerik aynı oluyor diye biliyorum. Aslinda yapmak istediğim web tabanlı aynı sunucuda çalışan uygulamayı farklı müşterilere sunabilmek.

(08 Tem '14, 09:04) zafer zafer's gravatar image

Yorumunuzdan sonra

Şunun için sordum, farklı firmalar için farklı DB olabilir mi diye düşünmüşsünüz ya, aslında zaten gerek yok. Söylediğiniz uyeId alanı aslında işin doğal çözümü/akışı. Hiyerarşide en tepedeki veya ilişkileri açısından uygun olan tablolar için hangi firmaya bağlı oldugu bilinse yeterli. Bu site için mesela sorular ve cevaplar, kullanıcılara ait. Kullanıcı profilinde sadece o kullanıcıya ait bilgiler, gorunur/güncellenir. Her içerik ve her hareket bir kullanıcıya atanarak yapılır. Dolayısıyla da bu site için her kullanıcıya özel sayfalar hazırlanabilir(aynı tablolardan).

B2C e-ticaret yapısını düşünün, her firmanın kendi sanal magazası vardır ve kendi sayfasında sadece kendi bilgilerini gorur ve günceller. Sanal magazanın yapabildikleri de zaten büyük bir otomasyondur.

Aslında sizin yapmanız gereken de tüm işleri firma profilinde yapmak gibi birşey. @MüslümÖztürk'ün dediği gibi ikinci yöntem asla yapılmaması gereken bir yöntem. Veritabanına dinamik tablo ve alan eklemek her zaman yanlıştır. Kesinlikle yanlış veritabanı tasarımı oldugunu gösterir. Veritabanında sadece veriler dinamiktir. Yapısında hiçbir dinamiklik olmamalır.

Veritabanı sorunu bu şekilde çözülür, sizin yapmanız gereken uygulama tarafında bunu en kolay şekilde uygulayabilmek. Farklı senaryolarınıza göre farklı çözümler olacaktır.

permanent link

cevaplandı: 08 Tem '14, 09:33

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

Merhaba Ali, Doğrusunu söylemek gerekirse iki çözümüde daha önce kullanmadım, o sebeple arasında seçim yapamıyorum. Ancak madem siz tek bir tablo yapısı iyidir diyorsunuz bende onu denemeye karar verdim.

Diğer taraftan veritabanı ve diğer konularda kurallara sıkı sıkıya bağlı kalmanın çok doğru olmadığını düşünüyorum. Aksi taktirde daha yeni ve güzel teknikleri nasıl keşfederiz.

(08 Tem '14, 11:03) zafer zafer's gravatar image

Tabloya uye_id kolonu ekleyerek işlemlerini yapmanı öneririm. Eğer her uye için ayrı tablo oluşturursan yönetilmesi daha zor olur.

Diyelim ki geliştirme yaptın ve uyeadi_xxx tablosuna bir kolon daha ekledin. Eğer her uye için ayrı tablo oluşturmuş isen tüm kullanıcıların xxx tablolarına tek tek bu kolonu eklemen gerekecek.

Ayrıca sisteme yeni bir üye eklediğinde "create table" işlemleri ile uğraşacaksın bu da ayrı bir iş yükü çıkaracak sana.

permanent link

cevaplandı: 08 Tem '14, 04:48

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.7k103691
cevap kabul oranı: 28%

değiştirildi: 08 Tem '14, 07:29

Bende önce uye_id olarak düşündüm, ancak şöyle bir durum var mesela bir güncelleme geliştidin ancak sadece bazı müşterilere sunmak istiyorsun. Diğerleri bundan faydalanmasın, o zaman durum nasıl olur? Tablo oluşturma işini kodlara yıkmayı planlıyorum ;)

(08 Tem '14, 09:06) zafer zafer's gravatar image
2

dediğinizden sunu anlıyorum; yeni guncelleme geldi ve ben ilgili müşteriye ait tabloya ekleme yaptım, boylece diğerlerinde bu değişiklik otomatik olarak görünmeyecek. Peki uygulama tarafında bu değişikliği nasıl uygulamayı planlıyorsunuz? kodlarınız tek bir DB ve sabit tablolar için çalışıyor. farklı musteri tabloları için farklı kod mu çalıştıracaksınız?

(08 Tem '14, 09:45) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image
1

Uygulama tarafında kodlar ortak, bu sebeple bu güncellemeyi eklemeyi yada bir özellik ise pasif durumda tutmayı düşünüyordum. İgili tablolar olmadığı için işlem yapılamayacaktır zaten, ancak bu işlemi tabloda bir kolon açarakta yapmak mümkün tabi, bu işi iki türlüde çözmek mümkün görünüyor.

(08 Tem '14, 10:49) zafer zafer's gravatar image

Her bir modül için ayrı ayrı lisanslama yada yetkilendirme yöntemine gitmelisin bence.Kaç tane firman olursa olsun kaynak kodun tek olacak sonuç itibariyle.Menü yetkilendirmeleri yada ekran yetkilendirmeleri ile kullanıcılarına kısıtlamalar getirme yöntemini tercih etmelisin.İlk yorumda yazdığın gibi diğer firmaya güncelleştirme gitmesin mantığını güderse her firmaya kurulum yaptığında o anki kaynak kodun yedeğini almalısın. Aksi halde bu firma için şöyle çalış o firma için böyle çalış yazmayacaksındir herhalde ;).Daha önce dediğim gibi lisanslama ve yetkilendirme yöntemiyle daha rahat edersin

(08 Tem '14, 12:02) Müslüm ÖZTÜRK M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Evet, Müslüm ortak kullanılacak modüller için bende yetkilendirme düşünüyorum. Amacım her firmanın sistemdeki tüm özellikleri görebilmesi ama sadece izin verilen kullanıcıların ilgili modülleri kullanması.

Henüz o kısma daha var şimdilik veritabanını halledeyim. O bölüme gelince yine sana danışırım. Teşekkürler.

(09 Tem '14, 01:35) zafer zafer's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×66

Soruldu: 08 Tem '14, 03:54

Görüntüleme: 813 kez

Son güncelleme: 09 Tem '14, 01:35

powered by BitNami OSQA