sinankaya
21/10/2002, 22:59
Selam arkadaşlar, bu soruyu php.org.tr de sordum 2 haftadır tık yok belki burada en azından bi yanıt alabilirim...
MYSQL 'de bir personel veritanı oluşturmak istiyorum. Bu veritabanında personel hakkında
genel bilgilerinin dışında maaş bilgileri olsun istiyorum.
Fakat maaş bilgilerinin aylık ve yıllık bazda veritabanında olması gerekiyor.(nedense)şöyleki:
Sadece personele ait maaşların tutulduğu tabloda olması gereken bilgiler şöyle:
PersonelID ARALIK-2001 OCAK 2002 MAAŞI ŞUBAT.. diye devam eder
------------- ----------- ------------------ ------------------
1 10000000 200000000 20000000000 gibi
2 100000000 100000000 100000000000
(Bu tabi veritabanının en basit hali düzenlenmemiş hali)
Burada sorun: her maaş donemi icin yeni bir sutun acılması.
Örneğin:1 nolu personelin ocak-2003 icin yeni bir sutun gerekiyor,sanırım buda kotu bir yontem.
Şu bilinen normalizasyon adımlarını uygulayarak sadece maaş tablosu oluşturmaya çalıştım.
Şoyle 3 tablo ortaya çıktı. Bunlar : Maaş(MaaşID,MAAŞ), MaaşDonemi(MaaşDonemID,MaaşDonemi)
ve son olarak da personel,maaş ve MaaşDonemi tabloları arasındaki ilişkileri duzenleyen
ilişki tablosu : iliski(iliskiID, PersID, DonemID, mID)
Buradaki sorun ise işin daha da karmaşık hale gelerek querylerin zorlaşması ve
hataya açık olması ve 10 yıl icinde oluşabilecek kayıt miktarlarından toplam olarak yaklaşık
28000 hucreyi dolduracak.
Başka bir yontemde ise
MAAŞ(PersNo,Yıl,Ocak,Şubat,Mart,Nisan,Mayıs,Hazira n,Temmuz,Ağustos,Eylül,Ekim,Kasım,Aralık)
kullanıyorum (tabi bu uydurmaca...) ancak 500 satırda 7000 hucrede olay bitiyor.(ornek DB için)
Başka başka bir yontemde ise (ki bu yukarıdaki nin satır-sutun yerdeğişmesi :
MAAŞ(PersNo,Donem,maaş) ile 6000 satır da toplam 18000 hucrede olay biter.
(Cok uzun yazdım galiba umarım anlarsınız arkadaşlar...)
Şimdi sorular...
1. Bir veritabanında hucre sayısı ne kadar onemlidir.
2. Satırlara girilecek bilgilerin sabit sutunlara yayılması ile elde
edilen hucre sayısındaki azalma degerli midir? (2. ve 3 yontem de oldugu gibi)
3. Yukarısı cok uzun ve biraz da karmaşık oldu siz bu veritabanı nı nasıl duzenlerdiniz ?
Yardımlarınız için teşekkurler.
:confused:
MYSQL 'de bir personel veritanı oluşturmak istiyorum. Bu veritabanında personel hakkında
genel bilgilerinin dışında maaş bilgileri olsun istiyorum.
Fakat maaş bilgilerinin aylık ve yıllık bazda veritabanında olması gerekiyor.(nedense)şöyleki:
Sadece personele ait maaşların tutulduğu tabloda olması gereken bilgiler şöyle:
PersonelID ARALIK-2001 OCAK 2002 MAAŞI ŞUBAT.. diye devam eder
------------- ----------- ------------------ ------------------
1 10000000 200000000 20000000000 gibi
2 100000000 100000000 100000000000
(Bu tabi veritabanının en basit hali düzenlenmemiş hali)
Burada sorun: her maaş donemi icin yeni bir sutun acılması.
Örneğin:1 nolu personelin ocak-2003 icin yeni bir sutun gerekiyor,sanırım buda kotu bir yontem.
Şu bilinen normalizasyon adımlarını uygulayarak sadece maaş tablosu oluşturmaya çalıştım.
Şoyle 3 tablo ortaya çıktı. Bunlar : Maaş(MaaşID,MAAŞ), MaaşDonemi(MaaşDonemID,MaaşDonemi)
ve son olarak da personel,maaş ve MaaşDonemi tabloları arasındaki ilişkileri duzenleyen
ilişki tablosu : iliski(iliskiID, PersID, DonemID, mID)
Buradaki sorun ise işin daha da karmaşık hale gelerek querylerin zorlaşması ve
hataya açık olması ve 10 yıl icinde oluşabilecek kayıt miktarlarından toplam olarak yaklaşık
28000 hucreyi dolduracak.
Başka bir yontemde ise
MAAŞ(PersNo,Yıl,Ocak,Şubat,Mart,Nisan,Mayıs,Hazira n,Temmuz,Ağustos,Eylül,Ekim,Kasım,Aralık)
kullanıyorum (tabi bu uydurmaca...) ancak 500 satırda 7000 hucrede olay bitiyor.(ornek DB için)
Başka başka bir yontemde ise (ki bu yukarıdaki nin satır-sutun yerdeğişmesi :
MAAŞ(PersNo,Donem,maaş) ile 6000 satır da toplam 18000 hucrede olay biter.
(Cok uzun yazdım galiba umarım anlarsınız arkadaşlar...)
Şimdi sorular...
1. Bir veritabanında hucre sayısı ne kadar onemlidir.
2. Satırlara girilecek bilgilerin sabit sutunlara yayılması ile elde
edilen hucre sayısındaki azalma degerli midir? (2. ve 3 yontem de oldugu gibi)
3. Yukarısı cok uzun ve biraz da karmaşık oldu siz bu veritabanı nı nasıl duzenlerdiniz ?
Yardımlarınız için teşekkurler.
:confused: