Navrh databaze

Karel Zak zakkr na zf.jcu.cz
Středa Září 27 15:08:00 CEST 2000


On Wed, 27 Sep 2000, "Zíka Aleš, Ing." wrote:

> 	Zdravim vsechny,

 Zdar,

> 	Mame takovou partu a vyhodnocujeme zavody ve vodnim slalomu na
> divoke vode (na OH2000 zase potesili!), nas stary program v Clipperu po
> Novellem uz dosluhuje, taxme se rozhodli ho napsat zgruntu znova a zatim to
> vypada na Linux a PostgreSQL. V cem je problem: Zavodnik projizdi pres 20

 Dobra volba :-)

> (podle pravidel max. 26) branek a na kazde muze dostat 0, 2 nebo 50
> trestnych bodu a ta je treba ulozit v tabulce. Jde mi o to jak je to
> nejlepsi?

> moznosti, bud na body mit jeden sloupec a ukladat je tam jako 26-prvkove
> pole, nebo na ne mit extra tabulku, kde by krome jednoznacneho klice na

 Dobra rada, zapomente na ta pole - za 1/ support pro todle v PG neni
zas tak uplne super, 2/ prilis by se to stejne nelisilo od varianty se
sloupecky 

> tabulky stacily agregacni funkce. Prepokladam spravne, ze na pole agregacni
> funkce nefunguji? Jaky na to mate nazor?

 Je problem to zkusit? (- alespon v 7.1devel (starsi nemam:-) to jde)

create table arr (a int[2]);
insert into arr values ('{1,2}');
insert into arr values ('{1,5}');

select sum(a[2]) from arr;
 sum
-----
   7

> 	Zatim jsem vymyslel prikaz "UPDATE zavodnik SET poradi = (SELECT
> COUNT(*) + 1 FROM zavodnik z WHERE z.vysledek < zavodnik.vysledek)" (pisu to
> z hlavy, tak je tam mozna nekde nejaka chybka), ktery by se spoustel
> triggerem po kazde zmene vysledku a prepocital poradi pro celou tabulku.

 Nezapomenout "sub-select je rychlosti-zabijak" a umisteni neceho takoveho do
triggeru bych promyslel... Stejne na zjiskani toho poradi budete provozovat
nejaky SELECT tak proc to nezpocitat az v nem (apod.)

					Karel



Další informace o konferenci Test