[]

veritabanı yapısı

Bir veritabanında tek kullanıcı için misal, kullanicibilgileri, mesajlar, kisiseltakvim, ayarlar gibi tablolar var.. Bunu çok kullanıcı için değiştirmek istediğimizde veritabanı yapısını nasıl kurmamız daha iyi..

Her bir kullanıcı için yeni bir veritabanı açmak mı, yoksa sütunlarda misal kullanıcı id gibi bir değerle tek bir tabloda tüm kullanıcı kayıtlarını tutmak mı? ya da bir üçüncü yol?


 
tabi ki kullanıcı id'si ile tek bir tabloda tutmak. hatta kullanicibilgileri, mesajlar, kisiseltakvim, ayarlar vb. başka işler için kullanılmıyor sadece kullanıcıya has bir arayüz vbde kullanılıyorsa tüm veriler de tek bir tabloda tutulabilir.


  • stopnsilence  (25.10.10 15:36:04) 
her kullanıcı içi ayrı veritabanı (veritabanı değil de tablolar demek istemişsiniz sanırım)
açmak çok mantıksız olur.

kullanıcı tablonuz şöyle olabilir.
UserId
UserName
gerekiyor ise DepartmentId vs. de eklenebilir, bir departman tanım tablosu olduğunu varsayarsak.

mesaj kişisel takvim gibi tablolara UserId i referans verebilirsiniz.

olay en basit hali ile bu.
  • the piano has been drinking  (25.10.10 15:40:40) 
her kullanıcı için o kullanıcıya özel bilgilerin tutulacağı 20'şer tablo var.. ayrı tablolar dersek, sadece 10 kullanıcıda 200 tablo yapar.. bir tabloda da tek kullanıcıya ait 2000 satır var, yine kullanıcı için bile 20 bin satır yapacak..

ayrı veritabanı demek istemiştim gerçekten.. yukarıdakilerin ikisi de optimum çözüm gibi gelmiyo bana, üçüncü bir yol yok mu bu iş için gerçekten?
  • vi3e  (25.10.10 15:44:58) 
eğer kullanıcı bilgileri tekrar kullanılabilir bilgiler ise, yani başka bir kullanıcı için de kullanılabiliyorsa;

kullanici tablosu: kullanici_id / kullanici_ismi
kullanicibilgi tablosu : bilgi_id / bilgi_aciklama
kullanicibilgi_kullanici tablosu: kullanici_id / bilgi_id

yani bahsettiğim bir ara tablo.

yok tekrar kullanılamaz ise o zaman kullanici_id ile referanslayarak tumalısınız.
aynı tip bilgileri aynı tabloda tutmanız daha mantıklı kanımca.
ayrı veritabanları kullanılması duruma göre ileri de performansı düşürebilir. bakım maliyetini yükseltir.
  • the piano has been drinking  (25.10.10 16:02:02) 
kullanicibilgileri tablosunda her kullanıcı için unique bir alan olacak.
bu kullanıcı ile
mesajlar, kisiseltakvim, ayarlar vb tablolara yeni satır girerken o kullanıcının unique id'sini foreign key olarak satırdaki user_id alanına yazacaksın.

Bu şekilde, kisiseltakvim ve diğer tablolarınıza sınırsız kişiyle ilişkili her kişi içinde teoride sınırsız kayıt açabilirsiniz.
Örnek olarak

kullanıc bilgileri
id|isim
1 ali
2 mehmet

takvim
kullanici_id | takvim_id | detay | tarih
1 1 text 01.01.01
1 2 text 02.01.01
2 3 text 02.01.01
1 4 text 02.02.01
2 5 text 03.02.01

Gördüğün gibi bir tablo üzerinde aynı veya farklı kişiler için birçok girdi yapabiliyorsun.
Senin söylemek istediğinde bu zaten.
Kısacası söylediğin yol gayet jenerik. Üçüncü bir yol araman için neden yok.

@the piano has been drinking'in yaptığı normalizasyonda bazı durumlarda hayat kurtarıcı olabilir.
  • velhasilkelam  (25.10.10 16:14:37 ~ 16:16:47) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.