tablo tasarımında ne yapmalı

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

tablo tasarımında ne yapmalı

Mesaj gönderen Uğur1982 »

merhaba arkadaşlar;

başlık tam anlamlı olmadı ama kusura bakmayın....

aşağıdaki gibi tablolarım var

Kod: Tümünü seç

Carikart                       Stokhareket               Carihareket     
-----------------------      ------------------          --------------------
kod (primary key)            kod (primary key)            kod(primarykey)    
Ad                            Ad                           Ad
Soyad                         Soyad                        Soyad 
tel1                         StokAdi                      KasaKodu
tel2                         StokFiyat                    İslemTipi
---                          ----------                  ----------
----                         -----                        ------- 
----                         -----                        -----
----                         ---                           -----
projemde yazdığım kodlar bu tablolara göre yazıldı..
şimdiki olay ise mutalaka herkesin başına gelmiştir :)

carikarttaki bir kayıt değiştiğinde
örnek
1 ahmet altan -------------->500 hakan korkmaz oldu

haliyle

Stokhareketteki,Carihareketteki buna bağlı hareketlerde değişmesi lazım

kişiye ait diyelim stokhareketinde 500 kaydı var bunlarda değişmesi lazım

bunu böyle yapacağıma. düşündüm :)

Kod: Tümünü seç

Carikart                 Stokhareket        Carihareket             iztablosu
--------------------    ------------------    ----------------      ------------- 
iz (primary key)      iz (primary key)       iz(primarykey)      iz(primary key)

tel1                    StokAdi                 KasaKodu              Kod
tel2                    StokFiyat               İslemTipi             Ad
---                      ----------          ----------               Soyad
----                     -----                ------- 
----                    -----                  -----
----                     ---                   -----
yukarıdaki gibi yapsak bi "iztablosu" gibi bişey yapsak
toptan değişikliklerde sadece "iztablosu"ndan değiştirsek
o kayda bağlı carihareket,stokhareket 500-1000 kayıt herneyse bu kadar kayıtla uğraşmasak, hem daha hızlı olur hemde daha güvenli gibi geldi bana;
kayıt bulmalarda "iztablosu"ndalkilere eşit olanlara çağırsak gibi

valla kafam karıştı arkadaşlar sizce ne yapayım dediğim gibi böyle bişey yapsak,daha doğrusu siz nasıl yapıyorsunuz,ne önerirsiniz

roman gibi oldu ama güzel oldu :)
şimdiden herkese teşekkür ederim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Anladığım kadarıyla Master tablodaki master key değişikliğini Detail tabloda nasıl yaparım mı soruyorsun? Kullandığın veritabanı önemli! Veritabanı tarafından organik bir ilişki yoksa after update trigger i ile detaildeki alanları değiştirebilirsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

merhaba;

rsimsek hocam köklü değişikliklerde dediğim mantık uygun olurmu diye sormuştum.

"iztablosu" gibi bi tablo olacak

kişilerin kod,ad,soyadı burada tutulacak mesala kişinin carikarttaki bi bilgisi değiştiği(bu değişiklik "iztablosu"ndan olacak esas) zaman bütün kartlara yansıması lazım,haliyle stokharette bu kişiye aid günde iki defa kayıt girileceği hesaplanırsa yıl sonuna kadar
bayaa bi kayıt girilmiş olacak + olarakta cariharekette değişiklik olacak

böyle yapacığıma baya bi SQL kodu çalıştıracağıma sadece "iztablosu" ndan değiştirsek sadece 1 kaydı değiştirmiş oluruz + bu değişiklikte bütün kartlara yansımış olur.acaba mantıklı olur mu diye sormuştum
olayı anlamışsınızdır .sizce doğru mu yapıyorum,düşünüyorum.

vt:Firebird 1.5

teşekkür ederim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Ne yapmak istediğini halen anlamış değilim :? Master tablodaki kayıt neden her seferinde değişsin ki?
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Dostum sen işi baştan yanlış yapmışsın.Bak

tblCari :
-CariID (p.k.)
-CariAdi
-CariUnvani
.....


tblStokHareket
-StokHareketId (p.k)
-StokId
-CariID
-Miktar
-Fiyat
...


şeklinde yapıp stok hareket kısmında sadece CariId kısmını girmeli,daha sonra bu hareketi hangi carinin girdiğini görmek istediğinde de tblcari tablosundan ismi çağırman gerekir.O zaman iz diye bir tabloya gerek kalmaz.İlişkisel veri tabanı kavramını ve sql de joinli ifadeleri araştır.Bu programlamada çok önemli bir konu....
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

hocam kusura bakmayın tam net yazamadım :)

şöyle diyim asıl amacım mesala var diğer yazılım firmaların programlarında carikarttan bi kayıt değiştiriyorsun ve buna bağlı cariharekette,stokharekette 5000 tane kayıt var mecburen ne yapmak gerekiyor.
kayıt şöyle
2 ahmet altan ---------> 100 hakan korkmaz oldu

tabi haliyle carihareketteki,stokhareketteki
2 ahmet altan --------> 100 hakan korkmaz olması lazım

bunun içinde SQL kodu yazmak gerekiyor.+bu değişiklikleri yapması içinde bi zaman gerekiyor

dediğim gibi carikartta,cariharekette,stokharekette ortak alanlar
kod,ad,soyad

bunları bu tablolarda tutcağıma "iztablosu" gibi bi tabloda tutayım
sadece bu tablodan değiştireyim ve diğer tablolarada,carikart,carihareket,stokharekete yansısın
çok pratikmiş gibi geldi bana.

hocam kusura bakmayın inşallah
böyle bi mantık yukarıdaki fieldler eksik olabilir
sadece bir düşünce.

teşekkür ederim
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

evet işte benim istediğimde buydu. mesajlar karışmış
bak tartışınca ortaya ne güzel şeyler çıkıyor :)

haklısın ali kardeş
herkese teşekkür ederim
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Ali Erdoğan yazdı:Dostum sen işi baştan yanlış yapmışsın.Bak

tblCari :
-CariID (p.k.)
-CariAdi
-CariUnvani
.....


tblStokHareket
-StokHareketId (p.k)
-StokId
-CariID
-Miktar
-Fiyat

...


şeklinde yapıp stok hareket kısmında sadece CariId kısmını girmeli,daha sonra bu hareketi hangi carinin girdiğini görmek istediğinde de tblcari tablosundan ismi çağırman gerekir.O zaman iz diye bir tabloya gerek kalmaz.İlişkisel veri tabanı kavramını ve sql de joinli ifadeleri araştır.Bu programlamada çok önemli bir konu....

yukarıdaki gibi bir sistem kurduğunda

Kod: Tümünü seç

SELECT tbStokHareket.*, tbCari.CariAdi
FROM tbStokHareket INNER JOIN tbCari ON tbStokHareket.StokHareketId  = Cari.CariID;
Şeklinde bir kullanımda bir kullanımla stok hareketlerini gösterirsen cari adını değiştirdiğin zaman tüm alanlarda cari adı otomatik olarak değişecektir.Cari adı değiştiğinde başka hiçbir işleme gerek kalmaz..
Uğur1982
Üye
Mesajlar: 383
Kayıt: 11 Mar 2005 03:18
Konum: İzmir

Mesaj gönderen Uğur1982 »

ilgin için sağol.
teşekkür ederim..
Cevapla