Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Firebird veritabanı yapısı hakkında öneri
#1
Merhaba, hazır konu hakkında deneyimli üstadlar varken bir veritabanı yapısı hakkında öneri almak isterim. Konuyu okuyan arkadaşlar içinde yol gösterici olur.
Şöyle bir veritabanımız var (Kısaltarak yazıyorum alanları);
CARI_HESAP tablosu ; KOD, UNVAN, BORC, ALACAK
STOK tablosu ; KOD, ADI, GIREN, CIKAN
FATURA_1 tablosu ; KOD, TURU, CARIKODU, TUTAR, BORC, ALACAK
FATURA_2 tablosu ; KOD, FATURA1KODU, TURU, CARIKODU, STOKKODU, MIKTAR, GIREN, CIKAN
(TURU alanı BYTE tipinde 0:ALIS FT. 1:SATIS FT. şeklinde)
(FATURA_1 tablosunda Before Insert olayında ALIS yada SATIS faturası olması durumuna göre TUTAR alanı BORC yada ALACAK alanlarına yazılıyor)
(FATURA_2 tablosunda Before Insert olayında ALIS yada SATIS faturası olması durumuna göre MIKTAR alanı GIREN yada CIKAN alanlarına yazılıyor)
(FATURA_1 tablosunda After Insert olayında CARI_HESAP tablosundaki BORC, ALACAK alanları güncelleniyor)
(FATURA_2 tablosunda After Insert olayında STOK tablosundaki GIREN, CIKAN alanları güncelleniyor)

CARI_ISLEM View'i
CREATE VIEW CARI_ISLEM(
    KOD,
    TURU,
    ACIKLAMA,
    CARIKODU,
    BORC,
    ALACAK)
AS
select KOD, TURU, CARIKODU, BORC, ALACAK 
from
(
SELECT F.KOD,
F.TURU,
CASE
WHEN F.TURU=0 THEN 'Alis Ft.'
WHEN F.TURU=1 THEN 'Satis Ft.'
END AS ACIKLAMA,
F.CARIKODU,
F.BORC, 
F.ALACAK
FROM FAT1 F
)
View i kısaca yazdım, normalde içinde çekler, tahsilat ve ödemeler vs.vs. var. Cari hareketlerini bu şekilde gösteriyorum.
Cari hesapları listelerkende hazır BORC, ALACAK kayıtlı olduğu için direk Grid de gösteriyorum, altında da işlemleri tabi.

Fakat bunu şu şekilde de yapabiliyoruz;
FATURA tablolarındaki Before Insert ve After Insert olaylarını iptal edip, CARI_HESAP tablosundan da BORC ve ALACAK alanlarını kaldırıyoruz.
CARI_HESAPLAR View i oluşturuyoruz;

CREATE VIEW CARI_HESAPLAR(
    KOD,
    UNVAN,
    BORC,
    ALACAK)
AS
select KOD, UNVAN, COALESCE(BORC,0), COALESCE(ALACAK,0)
from
(
SELECT C.KOD as KOD, C.UNVAN AS UNVAN, 
       sum(F.BORC) AS BORC, sum(F.ALACAK) AS ALACAK
FROM CARI as C
LEFT JOIN
(SELECT CARIKODU AS KOD, SUM(BORC) as BORC, SUM(ALACAK) AS ALACAK
 FROM FATURA_1
 GROUP by CARIKODU
 ) as F on F.KOD = C.KOD
 GROUP BY C.KOD, C.UNVAN
)

2. olaydaki amaç Fatura, Çek vs. kaydederken After Insert olayındaki CARI ve STOK tablolarındaki alanların güncellemelerini kapatmak. Kısaca trigger kullanımını en aza indirmek.

Sizce bu 2 sistemden hangisi daha uygundur? hangisi daha hızlı ve daha hatasız çalışır?
WWW
Cevapla


Bu Konudaki Yorumlar
Firebird veritabanı yapısı hakkında öneri - Yazar: esistem - 10-05-2017, Saat: 10:22
Firebird veritabanı yapısı hakkında öneri - Yazar: esistem - 10-05-2017, Saat: 11:16
Firebird veritabanı yapısı hakkında öneri - Yazar: esistem - 10-05-2017, Saat: 12:20

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  pardusda dbeaver ıle fırebırd kullanımı hakkında sadikacar60 8 483 29-02-2024, Saat: 17:50
Son Yorum: Hayati
  Firebird Sound_ex Kodu. COMMANDX 1 276 28-01-2024, Saat: 01:56
Son Yorum: maydin60
  Firebird ile FIFO Hesaplama Nasıl yapılır? klavye 0 334 17-08-2023, Saat: 12:33
Son Yorum: klavye
  IBExpert ile Firebird Veri Kurtarma DelphiCanR 6 7.424 19-07-2023, Saat: 14:42
Son Yorum: baloglurecep
  Firebird Bozuk Dosya Hk. dark12side 1 363 07-06-2023, Saat: 21:53
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi