Donanım Haber Forum
Ana Sayfa | Kayıt ol | Profilim | Gelen Kutusu | DH Hız Aşırtma VT | Adres Defteri | Email'le üyeliklerim | Benim forumlarım | Fotoğraf Albümleri
Favorileriniz | Üyeler | Arama | SSS | Şikayet listesi | Uyarı listesi | Nick işlemleri
Veritabanı Tablo Oluşturma Mantığı?

İlgili konuları bak: (bu forumda | tüm forumlarda)

Bu isimle girdiniz: Guest
Bu konudaki kullanıcılar: hiç
  Basılabilir versiyon
Tüm forumlar >> [Web Tasarım - Programlama] >> Yazılım Geliştirme >> MsSQL / MySQL >> Veritabanı Tablo Oluşturma Mantığı? Sayfa: [1]
Giriş
Mesaj << Daha eski konu   Daha yeni konu >>
SiyahPelerinliAdam

Mesaj: 446


 20 Eylül 2008; 4:12:56 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

Veritabanında verilerin tutulma şekliyle ilgili emin olamadığım bi kaç nokta var...

Örneğin Stok Hareketlerinin işlendiği bir tablo var, Burada "Ürünler" tablosundan gelen ürünün ismini Stok Hareketlerin işlendiği tabloya yazdırmak ne kadar mantıklı? sadece Ürün kodunu işlemek sonradan yazılabilecek sorguları zora sokar mı?

Dahası, bir şirket otomasyonu için her tür cari hesap hareketi(personel, kredili hesap müşterileri, tedarikçiler v.s.) ve stok hareketlerini (alış/satış) bir tabloda tutmak mantık lımı... Tablodaki alan sayısını artırarak bunu yapmak mümkün gibi gözüküyor (Yaklaşık 60 Alan) Şöyleki;

- Kişiler/Kurumlar (Müşteri, Personel, Tedarikçi, Yetkili vs.)
- Ürünler/Hizmetler (Hertürlü alınan/satılan ürün hizmetler)
- Gider Grupları (Kategorisine Göre Kullanıcı tarafından oluşturan Gider Çeşitleri)
- Bankalar (Yine Kullanıcının Tanımlayacağı Bankalar)
vs...

gibi bütün hareketlerin tutulacağı tablodaki hareket kimliğini tamamlayacak alanlar ayrı tablolarda ve bütün bunlardan bilgi alan ve bütün cari hesap hareketlerinin işlendiği tek bir tabloya bağlayarak çalışmak ne kadar başarılı olur sizce?

Yoksa örneğin ürün(alış/satış) hareketlerini, cari hesaplardaki tutar hareketlerinden ayırmak mı gerekir...??



< Bu mesaj bu kişi tarafından değiştirildi SiyahPelerinliAdam -- 20 Eylül 2008; 4:13:30 >


_____________________________

"...Tutkularını haklı çıkarmak adına aklını küçük düşürmektense, Tutkularına bile bile boyun eğmek yeğdir..."
Bulldog

 

Mesaj: 207


 4 Ekim 2008; 1:40:36 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

Veritabanı tasarlarken 2 tür tablo yapılır :
1- Lookup
2- Fact

Lookup tabloları, birden fazla kullanılan değerleri tutmak icin kullanılır.
Örneğin; il tablosu. ilçe tablosu, Ürün tablosu

Fact tabloları ise esas verinin bulunduğu tablolardır.
Örneğin; fatura tablosu. Yada ürün tablosu.

Fact tablosunu su sekilde düşünelim.
FATURA_ID,TARIH,ALICI_ADI,ADRES,IL_ID

Bir de tüm illeri tutmak için il tablomuz olsun.
IL_ID,IL_ADI
06 ANKARA
34 İSTANBUL
.
.
.

Bu şekilde yarattığımız fact tabloda IL_ID kısmına İstanbul için '34' yazmamız yeterli. Kullanacağınız sorgularda da bu iki tabloyu join etmeniz yeterli.
Eğer lookup kullanmadan direk il ismini yazsaydık her istanbul adresi için 2 karakterlik alan yerine 8 karakterlik alan ayırmak zorunda kalacaktık.
Bu da gereksiz yere disk kapasitesini yükseltecekti.

vb vb vb....




_____________________________

Connecting to life...
altugaaa

Mesaj: 334


 4 Ekim 2008; 4:07:20 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

Eğer sorunuzu yanlış anlamadıysam "database normalization" konusunu biraz araştırmanızı öneririm.

_____________________________

SiyahPelerinliAdam

Mesaj: 446


 4 Ekim 2008; 5:36:47 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

Cevaplar için gerçekten çok teşekkürler, bundan sonra ne şekilde yönlenmem gerektiği ile ilgili ciddi fikirler verdi.

Ancak programcı bir arkadaş ile çok netleştiremediğimiz bir mevzu da fact( bilgi için tşk :) ) tablolarını mümkün olduğunca azaltmanın bir faydası olur mu? Örneğin ürün stok hareketleri ile cari hesap & çek senet hareketlerinin aynı tabloda toplanmış olması bir avantaj sağlar mı... Alan sayısını artırarak ve alanları akıllıca kullanarak bunu yapmamız mümkün gibi gözüküyor ancak bunun gerekli olduğundan emin değilim.

_____________________________

"...Tutkularını haklı çıkarmak adına aklını küçük düşürmektense, Tutkularına bile bile boyun eğmek yeğdir..."
Bulldog

 

Mesaj: 207


 5 Ekim 2008; 4:15:59 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.


quote:

Orjinalden alıntı: SiyahPelerinliAdam

Cevaplar için gerçekten çok teşekkürler, bundan sonra ne şekilde yönlenmem gerektiği ile ilgili ciddi fikirler verdi.

Ancak programcı bir arkadaş ile çok netleştiremediğimiz bir mevzu da fact( bilgi için tşk :) ) tablolarını mümkün olduğunca azaltmanın bir faydası olur mu? Örneğin ürün stok hareketleri ile cari hesap & çek senet hareketlerinin aynı tabloda toplanmış olması bir avantaj sağlar mı... Alan sayısını artırarak ve alanları akıllıca kullanarak bunu yapmamız mümkün gibi gözüküyor ancak bunun gerekli olduğundan emin değilim.


Fact tabloların fazla olması, tek bir tabloya tüm alanların yazılmasından daha iyidir.
Örneğin;
Bir fatura düşünün. Bu faturada 3 ürün alınmış. Toplam 300 ytl. Ve fatura nakit(200 ytl) ve kredi kartı (100 ytl) olarak ödenmiş.
Şimdi bu bilgiyi tek bir tabloya nasıl yazarız ?


_____________________________

Connecting to life...
SiyahPelerinliAdam

Mesaj: 446


 5 Ekim 2008; 4:50:09 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

Her ürün için Fiş Kodu (yada Sepet Kodu) ve Fiş Tutarı (yada Sepet Tutarı) gibi alanlar gerekliki bunlar sepet içerisindeki her üründe tekrarlanmış olucak ve bu da tekrarlanmış gereksiz veri anlamına gelicek...

Bu tekrarlanmanın her fatura/fiş için farklı tablo da oluşacak bir satırdan daha verimli olabileceği ihtimali bu soruya sebep olmuştu aslında :)

Cevaplar için çok çok teşekkürler...



_____________________________

"...Tutkularını haklı çıkarmak adına aklını küçük düşürmektense, Tutkularına bile bile boyun eğmek yeğdir..."
Bulldog

 

Mesaj: 207


 5 Ekim 2008; 4:58:29 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.


quote:

Orjinalden alıntı: SiyahPelerinliAdam

Her ürün için Fiş Kodu (yada Sepet Kodu) ve Fiş Tutarı (yada Sepet Tutarı) gibi alanlar gerekliki bunlar sepet içerisindeki her üründe tekrarlanmış olucak ve bu da tekrarlanmış gereksiz veri anlamına gelicek...

Bu tekrarlanmanın her fatura/fiş için farklı tablo da oluşacak bir satırdan daha verimli olabileceği ihtimali bu soruya sebep olmuştu aslında :)

Cevaplar için çok çok teşekkürler...



Aklın yolu bir :)

FATURA ( fatura_id,tarih_id,magaza_id,kasiyer_id,fatura_toplam_tutar) = 1 kayıt . sadece fatura bilgisi
FATURA_DETAY (fatura_id,urun_id,urun_tutar,urun_adet) = 3 kayıt. her bir ürün için detay
FATURA_ODEME (fatura_id,odeme_turu_id,odeme_tutar) = 2 kayıt. her bir ödeme türü için birer kayıt.

odeme_turu_id alanı icin ODEME_TURU tablosuna join.
urun_id için URUN tablosuna join.

vs vs vs.... :)



_____________________________

Connecting to life...
Aspci79

 

Mesaj: 1195


 7 Ekim 2008; 0:49:47 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

Bütün yazılan ticari uygulamalar farklı modüller içerecekse ilişkisel veritabanını tercih eder.
Yani modül derken ticari bir proje hangi modülleri içerebilir.

Sipariş
üretim
satış
depolama
sevkiyat vs.

Bunları ayrı tablolarda kullanmak uygulamanızın geleceği ve revize edilebilirliğinide arttıracaktır. Ayrıca bütün datayı tek tabloya tıkmaya çalışmak hem sizi kod yönüyle yoracak ve revizeye karşı tehlikeli bir yapı oluşmasına neden olacaktır. Database içerisinde mesela Oracle içerisinde bir tablo içerisine engine tarafından kayıt yazılmadığı sürece hiç bir alan kaplamaz (index ve tabloyla ilgili sistem özelliklerinin kapladığı küçük alanı saymazsak.) .

Önceki postta ki arkadaşımızın tarif ettiği gibi ilişkisel raporları SQL ile rahatlıkla alabilirsiniz artı olarak yazma işlemi normal tek tablodan rahat ve düzenli olacaktır. Ama mimariyi iyi kurmalısınız.

İyi Çalışmalar...

_____________________________

"Data: Hayat Like Ref Null."
SiyahPelerinliAdam

Mesaj: 446


 7 Ekim 2008; 2:54:11 
Bu mesajla ilgili şikayetinizi bu icon a tıklayarak yapabilirsiniz.

Aslında projede bizi zora sokan da şirketin kurumsal yapısı... Girilen herhangi bir data işletmedeki bir çok birimle ilişkili... Üretim ve de satış yapan 3 ayrı birim olduğu gibi her birimin kendi tedarikçisi yahut müşterisi farklı koşullarda işlem görebiliyor... Kötüsü pratikte şirketin kasası tek... :)

Verdiğiniz fikirler ve bilgiler için gerçekten teşekkürler, ileriye dönük mimaride düşme ihtimalimin bulunduğu bir takım yanlışlardan sayeniz de geri durduğumu sanıyorum.

Tekrar teşekkürler...


< Bu mesaj bu kişi tarafından değiştirildi SiyahPelerinliAdam -- 7 Ekim 2008; 2:50:46 >


_____________________________

"...Tutkularını haklı çıkarmak adına aklını küçük düşürmektense, Tutkularına bile bile boyun eğmek yeğdir..."
Sayfa:   [1]
Tüm forumlar >> [Web Tasarım - Programlama] >> Yazılım Geliştirme >> MsSQL / MySQL >> Veritabanı Tablo Oluşturma Mantığı? Sayfa: [1]
Buraya git:



Donanım Haber Video İnceleme
FarCry 2 (PC,XBox 360, PS3)
Afrika topraklarında havadan daha sıcak çatışmalar bizleri bekliyor.
Cebit 2008: sunumaX Standı
SunumaX ile web sitelerimizi nasıl canlandıracağımızı ve gelen ziyaretçileri kaçırmıyacağımız hakkında bilgi ediniyoruz.
 


Yeni mesajlar Yeni mesajlar yok
Popüler konu, yeni mesajlar ile Popüler konu, yeni mesajlarsız
Kilitli yeni mesajlar ile Yeni mesajlar olmadan kilitli
 Yeni mesaj at
 Mesaja cevap at
 Yeni anket aç
 Oy kullan
 Kendi mesajımı sil
 Kendi konumu sil
 Mesaja değerlendir
 Mesajımı DH blog sayfama ekle
 
Reklamlar






















Videolarımız
 
Cebit 08: Forex Standı

Football Manager Live video ön inceleme


Forum Software powered by ASP Playground Advanced Edition 2.3
Copyright © 2000 - 2006 ASPPlayground.NET


0.469