návrh db

Programovacie jazyky, rady, poradňa...
final
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 04 dec 2005, 11:43
Bydlisko: Prievidza

návrh db

Príspevok od používateľa final »

zdravím.. chcel by som sa opýtať skúsenejších ako by riešili takúto situáciu...

predstavme si finančné transakcie.. máme dané entity užívateľ (vlastné konto), skupina užívateľov (tiež), banka a povedzme ešte nejaké 2-3..

teraz chceme logovať transakcie (variácie bez opakovania)
  1. užívateľ -> skupina
  2. skupina -> užívateľ
  3. užívateľ -> banka
  4. ...
prvé riešenie by bolo v štýle mať tabuľku transakcie, kde by bol atribút určujúci typ transakcie a nepotrebné kľúčové atribúty by boli nullové.. nejak extra závažné mi to nepríde, nakoľko konzistenciu cudzích kľúčov by som nenarušoval, povedal by som že ani anomáliu pridania, akurát pridávanie atribútov pre určité transakcie tam akosi deformuje návrh..

pre príklad užívateľ -> banka:

transakcia_id = 1;
transakcia_typ = u-b;
transakcia_suma = 10;
uzivatel_id = 20;
banka_id = 2;
skupina_id = NULL;

v druhom riešení by som mal hlavnú tabuľku transakcie a k nej pripojený potrebný počet tabuliek (FK) dvojsmerných transakcií.. tento spôsob aj momentálne používam..

vzhľadom na jednoduchšiu správu systému by vyhralo jednoznačne prvé..

nemôžem sa však striasť pocitu ktoré riešenie je lepšie.. a už sa s tým druhý, ak nie tretí krát stretávam..

takže by som poprosil skritizovať obe riešenia, poprípade ponúknuť nejaké iné - tretie riešenie :)
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

skor by som to videl na #2

s tym rozdielom ze medzi kazdymi dvoma entitami (tabulkami) ktore maju n-m vztah by bola jedna tabulka transakcii
(tabulka so vsetkymi transakciami nema vyznam)
final
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 04 dec 2005, 11:43
Bydlisko: Prievidza

Príspevok od používateľa final »

no práve ten rozdiel tam zaručuje unikátny identifikátor transakcií.. transakcie musia byť takto identifikované už len z toho dôvodu keby ich zobrazuješ uživateľovi a on tam zrazu zbadá 2 rôzne transakcie s tými istými ID číslami..

ach neviem neviem, toto ma bude asi stále štvať..

mimochodom je nejaká kontrola v innodb ktorá by kontrolovala v tých rozvetvených tabuľkách unikátny kľúč tej hlavnej tabuľky? (nehľadiac na triggery)
mastermind
VIP
VIP
Používateľov profilový obrázok
Príspevky: 4810
Registrovaný: 09 feb 2005, 13:17

Príspevok od používateľa mastermind »

dlhe predlhe si to napisal, ani sa mi to nechce citat cele. no toto nie je koser

transakcia_id = 1;
transakcia_typ = u-b;
transakcia_suma = 10;
uzivatel_id = 20;
banka_id = 2;
skupina_id = NULL;

na co to takto komplikovat?
id
suma
od
do

a mas pokoj
Napísať odpoveď