[ mr.zhile @ 17.12.2008. 13:04 ] @
Hteo bi da ,ZA SVOJE POTREBE napravim programcic kojim se vodi statistika jedne rukometne utakmice...
Neznam sta sve treba takav program da sadrzi...?
Pretpostavljam da ga uradim na nacin da postoji statisticar koji vodi evidenciju,vrsi unos...
Svi saveti i predlozi su dobro dosli
[ chachka @ 17.12.2008. 13:16 ] @
Ako je program za tvoje potrebe, valjda ti najbolje znaš koje su to potrebe i šta program treba da sadrži.

U ovom slučaju ti igraš dve uloge: ulogu naručioca (koji zna ŠTA treba da se uradi) i ulogu izvođača (koji zna KAKO treba da se uradi).
[ mr.zhile @ 17.12.2008. 14:29 ] @
Treba mi pomoc oko uloge narucioca?
Sta sve treba da taj program radi?
Ako se neko bavio takvom vrstom problematike neka me uputi...npr...
stra sve opisuje igrace,klub...
[ .:Marvin:. @ 17.12.2008. 14:44 ] @
Kao prvo, moras da odlucis koju ces bazu da koristis.

Ja sam 2 godine radio kao statisticar u I zenskoj ligi u kosarci, i mogu ti reci nesto o tom resenju. Vecinu toga mozes da iskoristis.

Kao prvo, za bazu je uzet FireBird, sto tebi odgovara. Mada, moze i da se napravi SQL Server, pa da u realnom vremenu vise korisnika salje podatke serveru, ali mislim da za tim nemas potrebe.

Pocni od sifarnika: Klubovi, igraci, treneri.
Dalje, smisli kako da definises pojedinacnu utakmicu. Na primer: Tim1, Tim2, vreme, mesto, datum, sudija1, sudija2 itd.

Ono sto je najbitnije je, sta ces sve da belezis u toku meca. Ono sto je osnovno su golovi, faulovi, kazne (2 minuta, kartoni).

Nacin na koji ce se unositi dogadjaji je na tebi. Mozes da koristis misa (mada je u realnosti to sporo), pa da kliknes na broj igraca, kliknes 'GOL', upises vreme, i to negde snimis u bazu.
Druga varijanta je da postoje sifre, npr. igrac1 akcija1 (gol), vreme.

Najbolje da za pocetak osmislis bazu, pa ako to dobro odradis vec je 20% posla gotovo. Ako slabo stojis sa bazama, vici upomoc.

Ako sam oko neceg bio nejasan, slobodno pitaj.

Pozdrav
[ .:Marvin:. @ 17.12.2008. 14:53 ] @
Evo da dodam, pa posle mozes sam.

Igrace opisuje: neka jedinstvena sifra, ime, prezime, datum rodjenja, visina, tezina, pozicija na kojoj igra

Klub opisuje: Naziv, adresa, MB (svako pravno lice ga ima)...

Dalje vec kapiras. Sto se tice toga koji igrac nastupa za koji klub, imas varijantu da kod igraca dodas polje klub, ili da napravis novu tabelu sa strukturom
Igrac1, Klub1.

Eto, probaj dalje sam pa vici ako zatreba.
[ Deep|Blue @ 17.12.2008. 15:04 ] @
Samo sto bi pre svega trebal oda razmislis, sta zelis da imas od toga...
Napisao si da ti je potrebna statitika za jednu utakmicu.
ako vec radis za jednu, nije toliko komplikovano uraditi za vise utakmica.
Sta ces da pratis od statistika i nije toliko bitno na startu,
al bi valjalo da popricas asa nekim ko to vec radi...

Ipak malo planiranja moye da ustedi podosta vremena.
[ mr.zhile @ 17.12.2008. 15:05 ] @
@Marvin
Hvala na iscrpnim informacijama..mnogo mi znace...idem da prionem na rad pa kad zapnem jaukacu:)
Odradio bi kompletnu statistiku jednog kluba...
Onda mislim da mi trebaju tabele
Klub
Igraci
Raspored utakmica
---pod rasporedom bi uradio svaku utakmicu,...da bi trner mogao da vidi koliko je koji igrac napredovao,propao...
e sad da bi napravio tabelu raspored moram imati spisak svih klbava(to bi bilo u tabeli klub)
a u nju bih smestio
tim1,tim2,datum,mesto,vreme...
nisu mi neophodne sudije ,delegati i van sportska lica...
Ako sam negde pogresio ispravite me dopunite me...?
Za izradu baze koristim FireBird

[Ovu poruku je menjao mr.zhile dana 17.12.2008. u 16:30 GMT+1]
[ mr.zhile @ 17.12.2008. 19:17 ] @
Code:

CREATE TABLE RASPORED(
  SIFRA_UTAKMICE Varchar(30) NOT NULL,
  DOMACIN Varchar(30) NOT NULL,
  GOST Varchar(30) NOT NULL,
  VREME Timestamp,
  MESTO Varchar(30),
  BROJ_KOLA Integer
);
CREATE TABLE STATISTIKA
(
  UTAKMICA Varchar(30) NOT NULL,
  IGRAC_BROJ_DRESA Varchar(2) NOT NULL,
  IGRAC_IME Varchar(30),
  IGRAC_PREZIME Varchar(30),
  IGRAC_DAN_RODJENJA Varchar(2),
  IGRAC_MESEC_RODJENJA Varchar(2),
  IGRAC_GODINA_RODJENJA Varchar(4),
  IGRAC_VISINA Numeric(5,2),
  IGRAC_TEZINA Numeric(5,2),
  IGRAC_POZICIJA Varchar(2),
  KAZNA_2_MINUTA Varchar(1),
  ZUTI_KARTON Varchar(1),
  CRVENI_KARTON Varchar(1),
  SUT_6M Integer,
  GOLOVI_6M Integer,
  SUT_9M Integer,
  GOLOVI_9M Integer,
  SUT_7M Integer,
  GOLOVI_7M Integer
);
CREATE TABLE T_IGRAC
(
  SIFRA Varchar(30) NOT NULL,
  MATICNI_BROJ Varchar(13) NOT NULL,
  BROJ_DRESA Varchar(2) NOT NULL,
  IME Varchar(30),
  PREZIME Varchar(30),
  DAN_RODJENJA Varchar(2),
  MESEC_RODJENJA Varchar(2),
  GODINA_RODJENJA Varchar(4),
  MESTO_RODJENJA Varchar(30),
  OPSTINA_RODJENJA Varchar(30),
  ADRESA Varchar(50),
  VISINA Numeric(5,2),
  TEZINA Numeric(5,2),
  KONTAKT_TEL Varchar(30),
  E_MAIL Varchar(30),
  POZICIJA Varchar(2)
);
CREATE TABLE T_KLUB
(
  SIFRA Varchar(30) NOT NULL,
  NAZIV Varchar(30) NOT NULL,
  MESTO Varchar(30),
  ADRESA Varchar(50)
);
ALTER TABLE STATISTIKA ADD BROJ_GOLOVA COMPUTED BY (golovi_6m+golovi_9m+golovi_7m);
ALTER TABLE STATISTIKA ADD BROJ_SUTEVA COMPUTED BY (sut_6m + sut_9m + sut_7m);

kod baze...
gde bi dodao spisak igraca za utakmicu?
i kako bi vodio statistiku za klub?
[ chachka @ 17.12.2008. 22:07 ] @
Za početak: Tipovi podataka su ti potpuno pogrešni!

1.
Code:
  ...
  IGRAC_DAN_RODJENJA Varchar(2),
  IGRAC_MESEC_RODJENJA Varchar(2),
  IGRAC_GODINA_RODJENJA Varchar(4),
  ...

Datum rođenja igrača je jedan atribut a ne tri! Taj JEDAN atirbut bi recimo trebao da bude nešto poput:
Code:
  datum_rodjenja_igraca DATE


2.
Code:
  ...
  IGRAC_VISINA Numeric(5,2),
  ...

Po tome što se radi o numeric tipu čini mi se da visinu želiš da predstaviš u metrima, i to je ok, ali čemu NUMERIC(5, 2)? Da li postoji igrač koji je visok 434,21 metar? Naravno da ne postoji. Ovde je primerenije:
Code:
  IGRAC_VISINA Numeric(3,2),


3.
Code:
  ...
  KONTAKT_TEL Varchar(30),
  ...

Da li zaista postoji broj telefona koji je dugačak 30 cifara? Ja ga nisam video, a mogu se kladiti da ga niko nikada na planeti zemlji nije video! Ako se pročitaju, reciimo, wikipedijini članci Telephone number i E.164, jasno se dolazi do ispravnog:
Code:
  KONTAKT_TEL Varchar(15),


4.
Code:
   ...
  E_MAIL Varchar(30),
  ...

Ovde se opet radi o loše dimenzionisanom tipu podataka! Zapitaj se sam, kolika je najduža e-mail adresa koju sam video u životu? Verujem da će odgovor prevazići 30 znakova! Ovde opet može da pomogne wikipedia i članak E-mail address gde se u delu "RFC specification" navode maksimalne dužine od 64 + 255 + 1 znak što mu dođe:
Code:
   E_MAIL Varchar(320),


itd...

Zasada sam se pozabavio samo tipovima podataka, a možda ću se u nekom narednom postu pozabaviti i nekim drugim aspektima modela, ako to neko ne uradi pre mene.

[Ovu poruku je menjao chachka dana 18.12.2008. u 13:14 GMT+1]
[ savkic @ 18.12.2008. 01:33 ] @
> Da li zaista postoji broj telefona koji je dugačak 30 cifara? Ja ga nisam video, a mogu se kladiti da ga niko nikada na
> planeti zemlji nije video! Ako se pročitaju, reciimo, wikipedijini članci Telephone number i E.164, jasno se dolazi do ispravnog:

Po meni je 30 sasvim regularna dužina, recimo može uneti, fiksni, mobilni, na poslu...

Inače, struktura tabela je loša, doduše imam u vidu da je Žile početnik pa kako kažu svaki početak je težak. Samo kratki hintovi, u tabeli statistika ti ne trebaju podaci o igraču, ti podaci pripadaju tabeli igrač a te dve tabele ćeš povezati preko primarnog i spoljnog ključa. Statistika ti je vezana samo za rukomet, a i tu nije kompletna. Mislim da je bolje da imaš jednu kratku tabelu događaji gde ćeš upisivati sva dešavanja na utakmici,
vreme 12:21, igrač Pera, šut,
vreme 12:21, golman Mika, odbrana
vreme 12:25, izmena, Pera out, Žika in

Ostavljam tebi da je dalje razradiš.

[Ovu poruku je menjao chachka dana 18.12.2008. u 13:15 GMT+1]
[ Deep|Blue @ 18.12.2008. 07:33 ] @
slazem se sa savkicem, uz blagu dopunu ..
Code:

--statistika

CREATE TABLE Tipovi_Akcija
(
  IDN smallint NOT NULL,
  Akcija Varchar(40) NULL
)

CREATE TABLE Akcije
(
  IDN bigint NOT NULL,
  ID_Utakmice int NULL,
  Poluvreme smallint,
  ID_Igraca int NULL,
  ID_Tip_Akcije int NULL,
  Vreme_Sluzbeno int NULL, --sluzbeni minut utakmice u kojem je nastala akcija
  Vreme_Unosa smalldatetime NULL,
  Operater_Unosa smalldatetime NULL -- ako vise ljudi unosi podatke, pa hoces da pratis ko unosi sta.
)


Otprilike ovo bi malo olaksalo kasniju obradu podataka, a sto se tice akcija koje se prate statistikom, ne bi imao nikakvo ogranicenje zbog tabele Tipovi_Akcija, gde mozes da dodas koliko god hoces istih (u stvari ograniceno tipom podatka IDN)


@mr.zhile
Generalno u tabelama za klubove i igrace potrebno je da dodas sifru ili autonumber polje (obicno int tipa), sa kojim ces razlikovati igrace, klubove, kola, utakmice
Usvim ostalim tabelama (tipa gornje t Akcije) nema potrebe da ponovo kucas nazive klubova ili igraca, vec samo njihovu sifru (ID_Igraca, ID_Akcije ...)

Citat:
mr.zhile
kod baze...
gde bi dodao spisak igraca za utakmicu?
i kako bi vodio statistiku za klub?


igraci, klubovi, kola, utakmice ... za svaku od ovih stavki kreiras posebnu tabelu ...

Sto se tice statistike,
ideja je da baza drzi podatke o klubovima, igracima, akcijama ..., a da program pravi statistiku po pozivu.
Postoji varijacija da se neki delovi statistike cuvaju u zaseboj tabeli (u slucaju velikog broja poziva statistike) ali je bolje da to stalno radi program, zbog tacnosti podataka.
[ .:Marvin:. @ 18.12.2008. 07:41 ] @
Sto se tice spiska igraca za utakmicu, najbolje da napravis jos jendu tabelu, NASTUPA ili tako nesto. Nesto ovako:

Sifra_utakmice1, igrac1,
Sifra_utakmice1, igrac2
i tako dalje. Ovde ne stavljas nazive klubova, imena igraca i sl. nego te podatke vadis spajanjem sa drugim tabelama. Opet kazem, ako si slab sa relacionim bazama kazi da malo pojasnimo neke stvari. Za pocetak, tabela STATISTIKA ti je redudantna, tj. ponavljaju se podaci koji se vec nalaze u nekoj drugoj tabeli. Procitaj malo o trecoj normalnoj formi, sa nekim jednostavnim primerima, ako ti nije jasno. U ovom slucaju, dovoljno je da u tabeli STATISTIKA stoji samo
Utakmica1, sifra_igraca1, akcija1.

Sta to znaci? Utakmicu si vec definisao u tabeli RASPORED. Igrace si vec definisao u nekoj drugoj tabeli, i nema potrebe da se ovde ponavljaju svi podaci o igracima, jer spajanjem sa tabelom IGRAC mozes doci do njih. Najbolje bi bilo da definises jos jednu malu (tzv. sifarnu) tabelu, DOGADJAJI ili AKCIJE. Ta tabela bi izgledala ovako nekako:

sifra_akcije, opis
_______________
1, Sut na gol
2, Gol 6 m
3, Odbrana
4, 2 minuta
5, zuti karton
6, Gol 7 m
7, Gol 9 m

E, sad da se vratimo na tabelu STATISTIKA. Ako hoces da kazes da je Pera Peric (sifra igraca1) dao gol sa 6 m pises:

utakmica1, igrac1, akcija2.

E sad probaj dalje, pa vidi. Ako te u ovoj koncepciji buni kako ces doci do raznih statistika, u pitanju su jednostavni SQL upiti. Broj golova igraca 1:

SELECT COUNT(*)
FROM STATISTIKA
WHERE sifra_igraca = 1
AND akcija in (2,6,7).

Ovo gore je upit koji 100% radi u SQL serveru, a za FireBird treba proveriti.
Ako nesto nije jasno, vici.

[Ovu poruku je menjao chachka dana 18.12.2008. u 13:15 GMT+1]
[ .:Marvin:. @ 18.12.2008. 07:43 ] @
Deep blue me pretece. Da pojasnim, njegova tabela tipovi_akcija odgovara mojoj tabeli AKCIJE. (uz sitne, nebitne, razlike) Dalje ces vec sam skapirati.
[ mr.zhile @ 18.12.2008. 11:17 ] @
HVALA Vam svima,sad cuda primenim savete,pa cu jaukati..kad zapnem


[Ovu poruku je menjao chachka dana 18.12.2008. u 13:16 GMT+1]
[ mr.zhile @ 18.12.2008. 14:36 ] @
Zapeo sam!!!!
Ovako stavio sam tabelu Raspored,kola,utaakmice..kako sad da povezem da pod jednim kolom se igra vise utakmica,da u rasporedu da ima vise kola pri tome mislim na sledece
kolo1
________
utakmica1
utakmica2
utakmica3

raspored1
________
kolo1
kolo2
kolo3
kolo4

[ chachka @ 18.12.2008. 19:16 ] @
U forumu baze podataka je bila jedna interesantna tema koja ti možda može pomoći jer se radi o sličnim temama.
Teorija vs. praksa - modeliranje lige u nekom sportu
[ Deep|Blue @ 19.12.2008. 08:25 ] @
@mr.zhile
zbilja bi valjalo da malo proucis teoriju po pitanju pravljenja baza.
Tema sa modeliranjem lige je dosta dobra, mada tebi nije potrebno toliko kompleksno resenje. Tu mozes da naucis dosta stvari, ali mislim da bi ti i za pracenje te teme trebalo, da prvo malo prelistas knjige ...

a sto se tice tabela ... ne valja
mala pomoc ...
dve tabele koje si napravio su pogresno zamisljene, za nesto sto si pitao (utakmice i kola) otprilike su ti potrebne sledece tabele:
-Timovi (spisak timova u ligi, podaci: tim1, tim2 ...)
--------
idn
naziv
sediste
.....

-Kola (spisak kola u sezoni)
-------
idn
ID_Sezona (ako hoces pregled statistike kroz vise sezona)
RB_kolo
Datum

-Utakmice (ovde uparujes timove po pojedinacnoj utakmici)
--------
idn
id_kolo
id_Tim_Domacin
id_Tim_Gost
Datum igranja
.....


moze i jos jedna tabela gde bi pratio sudije koje su sudile na mecevima.
....

[ mr.zhile @ 23.12.2008. 18:55 ] @
Potrebno mi je misljenje iskusnih strucnjaka...
Svaka tabela poseduje polje id(koje se automatski generise,tj to je vrednost generatora..koja se dobija preko procedure)vrednost tog polja se ne vidi...iz prostog razloga sto mozeda se vrednost generise pa se odustane od daljeg unosa,i polje sifra koje se vidi,i koje je tipa varchar(8)not null unique...kako bi izgledala procedura,triger ili sta vec cime bi se polje sifra automatski popunjavalo od slucajnih brojeva...ao npr Sifa=Ranodm(99999999),nesto slicno bi se odradilo u delphiju i fnkcionisalo bi,ali mene interesuje kako to da se odradi u trigeru u sql_u?
[ ventura @ 23.12.2008. 19:41 ] @
Imamo tabelu koja se zove "ProbaTabela", u njoj je nebitan broj polja, od kojih je jedno ID polje, numeric dužine 9 cifara. Triger nakon inserta, update ili delete-a generiše random broj u opsegu 1-99999999, proveri da li taj random broj postoji u tabeli, ako postoji keće ispočetka, ako ne postoji za posljenje polje bez ID-ja upiše taj random broj.

Code:

CREATE TRIGGER UpdateID ON [dbo].[ProbaTabela] 
FOR INSERT, UPDATE, DELETE 
AS

DECLARE @RandID numeric

Begin_Random:

SET @RandID = (SELECT 1 + CONVERT(int, (99999999-1+1)*RAND()))

IF (SELECT count(*) from ProbaTabela WHERE ID = @RandID) > 0
    BEGIN
        GOTO Begin_Random
    END
ELSE
    BEGIN
        UPDATE ProbaTabela SET ID = @RandID WHERE ID IS NULL
    END

GO
[ mr.zhile @ 23.12.2008. 20:45 ] @
@ventura
Hvala
[ jablan @ 23.12.2008. 21:30 ] @
Šta će ti taj drugi ID?
[ mr.zhile @ 24.12.2008. 07:53 ] @
Nema drugog id_a,vec id u sifra
Sifru korisnik moze da unese,a moze da se sama generise,a id je vrednost generatora
[ jablan @ 24.12.2008. 08:40 ] @
To pitam, šta će ti ta šifra?
[ mr.zhile @ 24.12.2008. 09:02 ] @
AKo neka vrsta pomocnog kljuca
[ jablan @ 24.12.2008. 10:01 ] @
Ne razumem ali nema veze.
[ Zidar @ 24.12.2008. 15:36 ] @
Citat:
neka vrsta pomocnog kljuca

Mozda Jablan i ja nismo bas iskusni experti, ali nismi bas ni za bacanje. A za pomocni kljuc nismo culi. Culi smo za Primary key i Foreign Key, to je OK. Nisam siguran da ce ti pomocni kljuc pomoci. PK ide od Pimary Key a ne od Pomocni Key

Nemam nista protiv da se identity ili nekakva tako generisani broj koristi kao PK, tamo gde treba. Medjutim, tema koju si odabrao ne dozvoljava bas obilnu upotrebu vestackih kljuceva. Veruj mi na rec, bar kad je ova oblast (lige , utakmice i sportske statistike) u pitanju
[ ventura @ 24.12.2008. 15:40 ] @
Ne znam koj će mu takav ključ u ovoj tabeli, ali ovakva vrsta 'informativnog' ključa je veoma korisna u recimo tiketima sportske kladionice... Tu hoćeš da imaš jedan ID koji je logičan za sistem, a drugi koji se štampa na tiketu i koji je potpuno random kako ti konkurencija ne bi brojala prodaju tiketa...
[ jablan @ 24.12.2008. 15:47 ] @
Citat:
ventura: Tu hoćeš da imaš jedan ID koji je logičan za sistem, a drugi koji se štampa na tiketu i koji je potpuno random kako ti konkurencija ne bi brojala prodaju tiketa...

Ne znam zašto bi jedno isključivalo drugo. Ne znači da "ID logičan za sistem" ne može da bude random (tipa GUID na MS platformi). Posebno ako oba generiše računar.
[ mr.zhile @ 24.12.2008. 16:43 ] @

Citat:
@Zidar
Mozda Jablan i ja nismo bas iskusni experti,


Mislim da asam ja najneiskusniji u sveri IT_A od svih vas koji ste mi pomagali i nesebicno mi pomazete,pa zato resih da va sposlusam...Ok u pravu ste izbrisacu sifru,a ostavicu ID,kao jedini primary key!


Mislim da sam zavrsio sa bazom,konsulovao saam se sa temom o ligam i sportovima...mislim da je to ot..

Moje pitanje je :Kako da povezem tabele,npr klub igrac,a da u klubu umesto Id-a igraca vidim ime,prezime...postoji li drugi nacin da se to uradi sem look up polja

2.pitanje kako bi trebao da se formira raspored utakmica...Da li da se unose timovi..ili da se uz odredjena ogranicenja mesaju?
[ Getsbi @ 24.12.2008. 16:44 ] @
Termin "Pomoćni ključ" kao takav ne postoji. Postoji nešto pored PK (primarni kjuč) i FK(spoljni ključ) što se zove AK (alternativni ključ) u informacionom modeliranju na logičkom nivou i može da bude jedino iz skupa kandidata za ključeve koji su otpali prilikom odlučivanja o PK. Ovakav AK se u alatima za razvoj baza podataka kasnije ne tretira kao ključ za povezivanje sa drugim tabelama, već isključivo kao eventualna varijanta za pretraživanje, sortiranje, indeksiranje..... jer daje "skoro" jedinstvene zapise. Zbog ovog "skoro" je i otpao prilikom odabira. Recimo primer entiteta OSOBA (OsobaID, Prezime, Ime, Adrsa, JMBG...). Jedinstveni Matični Broj Građana bi mogao da bude samo AK, obzirom da još uvek postoje osobe koje ga nemaju. Sve oko suvišne upotrebe veštačkih ključeva što su rekle kolege Zidar i Jablan je tačno. Ovo oko AK bi se moglo odnositi na pojašnjenje Venturine želje za dodatnim potrebama kod sportskih kladionica za koje ja baš i nisam mnogo stručan.
[ Deep|Blue @ 25.12.2008. 10:34 ] @
Citat:
mr.zhile: ...

Mislim da sam zavrsio sa bazom,konsulovao saam se sa temom o ligam i sportovima...mislim da je to ot..

Moje pitanje je :Kako da povezem tabele,npr klub igrac,a da u klubu umesto Id-a igraca vidim ime,prezime...postoji li drugi nacin da se to uradi sem look up polja

2.pitanje kako bi trebao da se formira raspored utakmica...Da li da se unose timovi..ili da se uz odredjena ogranicenja mesaju?


cekaj, da li si zacrsio sa kreiranjem baze ili ne?
Ako jesi, ona bi moderatori mogli da te vrate u delfi forum.

1. Ako je ovo pitanje za pravljenje aplikacije, onda ti je sad potrerbno pravljenje kverija...
za pocetak, mogao bi da nam prosledis izgled baze.

2. Oces da ti program napravi raspored utakmica za celu sezonu ili sta?


[ mr.zhile @ 25.12.2008. 14:46 ] @
Nisam jos jedan problem resio vezan za bazu
Naime KAko da upisem statistiku kluba na osnovu statistike igaca za svaku utakmicu?
Evo kako sam mislio da odradim statistiku igraca
Code:
CREATE TABLE IGRAC
(
  ID Varchar(8) NOT NULL,
  MATICNI_BROJ Varchar(13) NOT NULL,
  BROJ_DRESA Varchar(2) NOT NULL,
  IME Varchar(30),
  PREZIME Varchar(30),
  DATUM_RODJENJA Timestamp,
  MESTO_RODJENJA Varchar(30),
  OPSTINA_RODJENJA Varchar(30),
  ADRESA Varchar(50),
  KONTAKT_TEL Varchar(30),
  E_MAIL Varchar(300),
  VISINA Numeric(3,2),
  TEZINA Numeric(5,2),
  POZICIJA Varchar(2),
  CONSTRAINT PK_IGRAC PRIMARY KEY (ID),
);
CREATE TABLE STATISTIKA_IGRAC
(
  ID Varchar(8) NOT NULL,
  UTAKMICA Varchar(30) NOT NULL,
  IGRAC Varchar(8) NOT NULL,
  ID_AKCIJE Varchar(8) NOT NULL,
  CONSTRAINT PK_STAT_IGRAC PRIMARY KEY (ID)
);
CREATE TABLE AKCIJA
(
  ID Varchar(8) NOT NULL,
  OPIS Varchar(30),
  CONSTRAINT PK_AKCIJA PRIMARY KEY (ID)
);
CREATE TABLE UTAKMICA
(
  ID Varchar(8) NOT NULL,
  SIFRA_UTAKMICE Varchar(8) NOT NULL,
  DOMACIN Varchar(30) NOT NULL,
  GOST Varchar(30) NOT NULL,
  VREME Timestamp,
  MESTO Varchar(30),
  KOLO Integer NOT NULL,
  CONSTRAINT PK_UTAKMICA_1 PRIMARY KEY (ID)
);
CREATE TABLE DOGADJAJI
(
  ID Varchar(8) NOT NULL,
  IGRAC Varchar(30)  NOT NULL,
  UTAKMICA Varchar(8) NOT NULL,
  AKCIJA Varchar(8) NOT NULL,
  VREME_SLUZBENO Time NOT NULL,
  VREME_UNOSA Time NOT NULL,
  OPERATER Integer,
  CONSTRAINT PK_DOGADJAJI PRIMARY KEY (ID)
);

Nije ovo jos utegnuto,i povezano sve,ali je to srz cele price
[ Deep|Blue @ 26.12.2008. 07:58 ] @
pa tek je utezemo
barem da postoji pregled...

Za pocetak, nisam siguran sta bi ti drugi preporucili, ali pod obavezno ID polja da budu int ili bigint tipa.
Takodje definisao si ID polja kao varchar(8 ), a odgovarajuca FK polja su ti varchar(30), trebalo bi da bude identicno.
U cemu pravis bazu?

Ne vidim svrhu tabele STATISTIKA_IGRAC
U tabeli utakmica bi mogao da dodas sluzbeni rezultat.
U tabeli Akcija, ne bi bilo lose dodati polje sifra akcijie (u slucaju da zelis da omogucis unos novih akcija, pa trener unese akciju 'Opet je smotani Markovic pokusao da izvede onaj svoj "maestralni" sut, je..m li ga kljakavog', da ipak na interfejsu mozes prikazati i skraceni opis 'Maestro Marko 0'


E sad, sto se tice statistike, u relacionim bazama sato se tice tvog pitanja o statistici kluba, bi bilo suvisno i denormalizovalo bi bazu.

Sve podatke i detalje statistike vadis iz tabele dogadjaji odgovarajucim upitima.
Tj, ako te zanima procenat suta za nekog igraca, uradis upit na tabeli dogadjaji, za tu utakmicu i tog igraca, trazis koeficijent sume pogodaka kroz sumu suteva i golova...
slicna situacija i za ekipu, samo sto se onda povezes sa tabelama igraca i timova...

Doduse postoji mogucnost pravljenja pomocnih tabela sa statistikom za klubove, u slucaju da se to povlaci mnogo cesto, pa da se ustedi na obradi podataka, a to bi mogao da izvedes sa jos jednom tabelom, koja bi imala sumirane dogadjaje, grupisane po igracu, utakmici i akciji.

[ mr.zhile @ 26.12.2008. 10:49 ] @
Pravim firebird bazu u flamerobin-u
ID p[olje kada je intager ima ogranicenje vrednosti..32000+i nesto,a kao varchar(8) ima vrednost od 1 do 99999999,mislim da je svrsishodnije na dugorocni period...ali naglasavam da nemam iskustva
Znam da imam gresku u fk,napisao sam da je skoro gotova baza...
Moja tabela STATISTIKA _KLUBA sam mislio da se popunjava sumiranjem akcija igraca,u dnosu na utakmicu i klub...
[ ventura @ 26.12.2008. 11:32 ] @
A tabela sa kaznama/kaznenim poenima?
[ mr.zhile @ 26.12.2008. 11:57 ] @
Citat:
A tabela sa kaznama/kaznenim poenima?

Kazne su u tabeli akcije...kao npr
id opis
______
25 zuti karton
26 crveni karton
27 2 min
[ mr.zhile @ 26.12.2008. 13:14 ] @
Mislim da bi bilo zanimljivo i funkcionalno resenje,da se tabela STATISTIKA_JKLUBA popunjava trigreon na dogadjaj before inster iz tabele STATISTIKA_IGRACA..neznma dal je to izvodljivo i kako?
[ jablan @ 26.12.2008. 14:55 ] @
Izvodljivo jeste ali preporučljivo nije. Kao što je neko već rekao, nema logike da imaš obe tabele.
[ savkic @ 26.12.2008. 16:51 ] @
> ID p[olje kada je intager ima ogranicenje vrednosti..32000+i nesto,a kao varchar(8) ima vrednost od 1 do 99999999,mislim da je
> svrsishodnije na dugorocni period...ali naglasavam da nemam iskustva

INTEGER tip ima malo veća ograničenja, sasvim dovoljna za tvoje potrebe: -2147483648..2147483647. Neću ni spominjati BIGINT ;)
[ Deep|Blue @ 05.01.2009. 11:46 ] @
@mr.zhile
posto bi statistika igraca i statistika kluba predstavljale denormalizaciju baze,
ajde da ti postavim jos par pitanja ...
-koliko ljudi bi koristilo bazu za pregled?
-koliko cesto?
-da li bi gledali neke odredjene delove statistike ili sve detalje ?
[ mr.zhile @ 05.01.2009. 12:03 ] @
Citat:
Deep|Blue: @mr.zhile
posto bi statistika igraca i statistika kluba predstavljale denormalizaciju baze,
ajde da ti postavim jos par pitanja ...
-koliko ljudi bi koristilo bazu za pregled?
-koliko cesto?
-da li bi gledali neke odredjene delove statistike ili sve detalje ?


Paa komplikovana pitanja pitas;)

Ja mislim da gleda:trner,uprava kluba,delegat utakmice,zapisnicar...to sam mislio a razdvojim pravima pristupa...
tabela korisnici u zavisnosti od nivoa koji imaju...npr
nivo 1-3 delegat,zapisnicki sto(gledaju statistiku kluba i igraca..,moze da dodaje novu statistiku kluba,a ne moze staru da menja)
nivo 4-6 uprava (gleda statistike)
nivo 7-9 trener (menja staistike igraca,a gleda statistiku kluba)
nivo 10 administrator sistema radi sta god hoce;)

Cesto?Zavisi ko gleda trener moze svaki dan...
[ Deep|Blue @ 05.01.2009. 14:57 ] @
hmmmp?!
"trener menja statistiku igraca "
kako si ovo smislio ?

sad si nesto zbunio,
jel moze malo objasnjenje, cemu sluzi statistika igraca i cemu sluzi statistika kluba...

nikad nisam voleo sistem prava prustupa sa nivoima
[ mr.zhile @ 05.01.2009. 15:15 ] @
Citat:
hmmmp?!
"trener menja statistiku igraca "
kako si ovo smislio ?

Pa npr akcija u 25 minutu je skok sut Mike,a trner dopise u opisu...miklina zabica...ili mikin blentavi pogodak..

Citat:

jel moze malo objasnjenje, cemu sluzi statistika igraca i cemu sluzi statistika kluba...

Statistika igraca da trener vidi kako koji igarc napreduje upise neku belesku..a statistika kluba da [predsenik uprava,...vide koka klub napreduje...npr sezona 2009 partizan izgubio od blabla kluba a sezona 2005 pobedio,ili 6 poraza partizana od kad je predsednik kupio djola djokica ...plastican primer


aj mi pomozite ako sam negde pogresio ali mislim da je ovo dobra fora
[ Deep|Blue @ 06.01.2009. 07:51 ] @
znaci mikin blesavi pogodak
ok, posto ce trener dodavati komentare (a ne menjati statistiku )mozes da dodas polje komentar u tabeli akcije, ali posto ce trener mali broj akcija, bolja opcija je dodavanje tabele
Code:

Akcija_Komentar
----------------
IDN (int)
ID_Akcija (int)
Komentar (varchar(500))

Izvlacenje tabela za statistiku igraca i klubova bi stvorilo multipliciranje podataka, sto je kod relacionih baza pozeljno izbeci. Primer bi bio da se mikicin blesavi pogodak nalazi upisan u akcijama, statistici mike i statistici kluba. Sasvim bespotrebno.

Pozeljno bi bilo da se statistika igraca vuce iz akcija.
Za klub postoji opcija izdvajanja statistike po utakmici, u slucaju veceg broja stalnih upita, ali i to moze da se vuce iz akcija.

Predstavljanje podataka je stvar aplikacije i ti tu mozes dosta da uradis pa cak i prikaz statistike jednog igraca, kroz sezone i klubove, ali za to ti ne trebaju posebne tabele, vec samo malo znanja i snalazljivosti da izvuces postojece podatke i postojecih tabela.

A osnova svega je dobro osmisljena baza

[ mr.zhile @ 06.01.2009. 12:11 ] @
Ako sam dobro razumeo,statistika kluba se radi na klijentskoj strani,tj u delphijju(za moj slucaj) pomocu sql_a?

E sad imam jos jednu dilemu....
Kako voditi rezulatat utakmice...
Jedan predlog koji sam dobio ej polje sluzbeni rezultat u tabeli utakmica...e sad kako da izvucem iz tog polja broj golova domaceg tima npr ako unesem 29:34 u polje
Moje razmisljanje je da se uvedu 3 polja sluzbeni rezultat,golova domacin,golova gost...ako je sve regularno u sluzbeni rezultat se pise golova domacin+:+golova gost,a ako nije onda se unosi raultat tipa 20:0 ili sl..?
ili da se sluzbeni raultat razdvoji na dva polja 1. sluzbeno golova domacin 2. sluzbeno golova gost?
POMOC oko dileme,ili trilme...
[ Zidar @ 06.01.2009. 14:10 ] @
Nisam bas video gde si stavio rezultat utakmice, ali treba ovde:


CREATE TABLE UTAKMICA
(
ID Varchar( NOT NULL,
SIFRA_UTAKMICE Varchar( NOT NULL,
DOMACIN Varchar(30) NOT NULL,
GOST Varchar(30) NOT NULL,
VREME Timestamp,
MESTO Varchar(30),
KOLO Integer NOT NULL,
CONSTRAINT PK_UTAKMICA_1 PRIMARY KEY (ID)
);


Rezultat utakmice ne moze da se vodi kao 'jedno polje' Tu su dva podatka - broj golova koje je dao domacin i broj golova koje je dao gost. Dakle, dva 'polja'. Dodaj ih u tabelu UTAKMICA, nekako ovako:

CREATE TABLE UTAKMICA
(
ID Varchar( NOT NULL,
SIFRA_UTAKMICE Varchar( NOT NULL,
DOMACIN Varchar(30) NOT NULL,
GOST Varchar(30) NOT NULL,
VREME Timestamp,
MESTO Varchar(30),
BRojGolovaDomacina int NOT NULL DEFAULT 0 CHECK (BRojGolovaDomacina >=0)
BRojGolovaGosta int NOT NULL DEFAULT 0 CHECK (BRojGolovaGosta >=0)
KOLO Integer NOT NULL,
CONSTRAINT PK_UTAKMICA_1 PRIMARY KEY (ID)
);

Za utakmice koje se zavrse sluzbenim rezultatom, jednostavno se u kolone BRojGolovaDomacina i BRojGolovaGosta unese sta vec treba. To se resava na nivou aplikacije.

Ne bi bilo lose da dodas i nekakv 'Status' za utakmicu. Utakmica se moze odloziti, ponisytiti, prekinuti a i zavrsiti normalno. Samo utakmice koje su zavrsene normalno broje se za tabelu.

Kad malo pogledam definiciju tabele, vidim da nista ne sprecava operatera da unese isti tim za domacina i za gosta. A i Kolo moze da bude nagtivan broj....

Kako ces sad odavde da izvuces tabelu? Na pocetku su te uputili na temu sa ovog foruma koje je radila nesto slicno, pa pogledaj tamo. Nije jednostavno ali je interesantno.

Imao si pitanje o pravljenju rasporeda utakmica. Bila je mozgalica na ovom forumu ili na MS SQL forumu, nisam siguran, upravo o tome - kako napraviti raspored ligaskog takmicenja. Da li je lako, ponovo, nije, ali trenutno nemamo nista bolje da ponudimo.




[ mr.zhile @ 06.01.2009. 14:35 ] @
hvala na odgovoru
Citat:

Kad malo pogledam definiciju tabele, vidim da nista ne sprecava operatera da unese isti tim za domacina i za gosta. A i Kolo moze da bude nagtivan broj....

Problem sa domacinom i gostima sam mislio da resim na nivou aplikacije?
Kolo ne moze biti negatrivno jer svaki ID tabela se veze za generetor,a generator se automatski pravi preko stored procedure..
[ mr.zhile @ 06.01.2009. 15:39 ] @
Ako ko zna ili nadje link ka mozgalici koju je Zidar rekao neka mi postavi,ja se ubi trazeci i nista null;)
HVALA
[ chachka @ 07.01.2009. 00:38 ] @
Mozgalica pod brojem 13 u top temi o mozgalicama.
[ mr.zhile @ 07.01.2009. 13:27 ] @
@Zidar
SVAKA CAST TI SI GENIJE !!!

Super je odradjeno,samo jedan maleni predlog,sta ako je liga sa neparnim brojem klubava?to nije redak slucaj,ili kada se igraju neki revijalni turniri..?
Sta bi trebalo ispraviti da bi se dobilo resenje koje funkcinise i za ovakav slucaj

Hvala Vam svima na pomoci...

Kod koji sam nasao u mozgalici, (uz punoooo truda sam nekako skontao)...Da li je korektno da taj kod stavim kao SqlText svojstvo za DataSet,jer za svaki rekord treba generisati ID a tose radi preko stored proc...?

P.S.
Mislim da bi bilo zanimljivo videti isti problem resen u nekom od oop jezika tip ObjectPascal,C++...ako ima vec nesto uradjeno u OPAscalu molio bih link
HVALA
[ Zidar @ 08.01.2009. 17:50 ] @
Citat:
Problem sa domacinom i gostima sam mislio da resim na nivou aplikacije?

Na nivou aplikacije se resava samo ono sto ama bas nikako ne moze u samoj bazi. the best code is no code at all....
Citat:
Kolo ne moze biti negatrivno jer svaki ID tabela se veze za generetor,a generator se automatski pravi preko stored procedure..

Stored procedure je kao neka vrsta aplikacije. Ne smeta da se stavi da ID mora biti > 0. neka procedure, ali integritet podataka je integritet podataka i ne treba da zavisi od procedure. Procedura je kod, a ponovo - the best code is no code at all.

Citat:
Super je odradjeno,samo jedan maleni predlog,sta ako je liga sa neparnim brojem klubava?to nije redak slucaj,ili kada se igraju neki revijalni turniri..?

Izracunas raspored za prvei sledeci parni broj. Onda uradis UPDATE - gde god se pojavljuje taj dodati parni broj stavis nesto kao 'SLOBODAN'. Ako je broj timova neparan, uvek je jedan tim slobodan u svakom kolu. Ko je slobodan? Pa onaj ko bi igrao sa nepostojecim dodtim parnim timom.


Problem odredjivanja raspreda utakmica u ligaskom takmicenju jeste matematicki problem vise nego programerski. Pitanje sam postavio na forumu Matematika, ali mi ga je moderator bio obrisao misleci da je u pitanju domaci zadatak :-)

Nisam nasao u literaturi nista nigde, kao ni na internetu, na srpskom ili engleskom. Zato sam morao da izmislim svoj algoritam, koji sam mislim zapisoa kao pseudo kod u mozgalici br. 13. Posto ja nisam matematicar, mozda nisam umeo da nadjem nista u literaturi, mozda sam pregledao pogresnu literaturu. Ako je neko matematicar, pa zna nesto o ovome, neka nam ostavi neki link ili nesto objasni, lepo bi bilo nauciti nesto novo.

:-)
[ ivanst @ 08.01.2009. 19:20 ] @
Raspored utakmica se pravi na osnovu Bergerovih tablica.
[ Getsbi @ 08.01.2009. 20:20 ] @
Evo i linka ka tablicama:

http://sr.wikipedia.org/sr-el/...%D0%B1%D0%BB%D0%B8%D1%86%D0%B5
[ Zidar @ 08.01.2009. 21:16 ] @
E, da mi je neko rekao da trazim 'Bergerove tablice'.....

Hvala Ivanst i Getsbi :-)
[ Zidar @ 09.01.2009. 17:34 ] @
kad god covek pomisli da je nesto izmislio, uvek pronadje da je neko drugi to vec izmislio. Otisao sam na wikipediju da pogledam Bergerove tablice i ostale emtode i onda kliknuo na English i dobio ovo:

http://en.wikipedia.org/wiki/Round-robin_tournament

pa dalje ovo:

http://en.wikipedia.org/wiki/R...ournament#Scheduling_algorithm

Scheduling algorithm koji je ovde dat je upravo ono sto sam ja uradio, misleci da sam iznmislio toplu vodu - fiksiram jedan tim a ostale rotiram suprotno od kretanja kazalje na satu.

Ima jos, "round robin schedule generator" http://www.teamopolis.com/tools/round-robin-generator.aspx

a tek ovo: http://en.wikipedia.org/wiki/Tournament_(graph_theory)

Sto ti je lepota foruma, prvo nista, pa saznas za Bergera i onda te internet odvede ko zna gde ....

[ Zidar @ 09.01.2009. 18:07 ] @
Koristeci algebarski metod koji je dat na SH stranici Wikipedije, dosao sam SELECT izraza koji vraca raspored utakmica po kolima za N -1 kolo. Podrazumva se da imamo N timova, N je paran broj.

Prvi izraz je pisan za MS SQL 2006 i koristi WITH bez iteracija.
Ispod sledi izraz za MS SQL 2000 koji verovatno radi i u drugim sistemima.

Nije vodjeno racuna ko je kada domacin a kada gost. Iam na wikipediji kako se to moze odraditi:
http://sr.wikipedia.org/sr-el/...%D0%B8%D1%81%D1%82%D0%B5%D0%BC
Citat:

Principi [uredi]
Neposredno početka turnira, žrebaju se turnirski brojevi igrača. Kod neparnog broja učesnika turnira, u svakom kolu jedan od igrača je slobodan. Igrač broj 1 u svakom kolu igra sa igračem čiji je redni broj jednak rednom broju kola. Izuzetak je prvo kolo, kada takmičar broj 1 igra sa poslednjim turnirskim brojem, ili kad je (kod neparnog broja igrača) — slobodan.

U slučaju da oba igrača imaju „istorodne“, odnosno parne ili neparne brojeve, bele figure imaće igrač sa većim brojem, dok ako imaju „raznorodne“ brojeve (jedan igrač ima paran, a drugi neparan broj), beli će biti igrač sa manjim brojem. Poslednji broj kod parnog broja učesnika je izuzetak - sa gornjom polovinom igrača on ima crne, a sa donjom bele figure.

Za neparan broj učesnika turnira, tablice su identične sa prvim većim parnim brojem učesnika (npr. tablice za 11 igrača su iste kao za 12). Slobodan je onaj igrač koji bi trebalo da igra sa poslednjim brojem pri parnom broju učesnika.

Za paran broj učesnika turnira, igrači sa turnirskim brojem iz gornje polovine tabele imaće više puta bele figure.




Code:

-- MS SQL 2005
/* 
Treba vam tablica brojeva, koja izgleda ovako CREATE BRojevi AS (Broj int):
SELECT TOP 5 * FROM Brojevi  
       BROJ
-----------
          0
          1
          2
          3
          4

(5 row(s) affected)
*/

--- SQL koji generise N-1 kolo za N igraca (N je paran broj)
DECLARE @N int
SET @N = 14
;WITH Igraci AS
(
SELECT A.Broj AS X, B.Broj AS Y 
FROM Brojevi AS A, Brojevi AS B
WHERE A.Broj <=@N AND A.Broj > 0
    AND B.Broj <=@N AND B.Broj > 0
    AND A.Broj < B.Broj    -- da eliminisemo duplikate tipa (1,3) i (3,1)
)
SELECT            -- Za sve igrace osim gde je x = N vazi jedan set formula 
    x
    , y
    , k =    CASE 
                WHEN (x + y)> @N THEN x + y - @N 
                ELSE x + y - 1 
            END
FROM Igraci WHERE y<> @N    -- formula ne vazi za poslednji turnirski broj

UNION

SELECT        -- Za poslednji turnirski broj vazi drugi set formula
    x = Broj
    , y = @N
    , k = CASE
                WHEN 2*Broj > @N THEN 2*Broj - @N
                ELSE 2*Broj - 1
            END
FROM Brojevi WHERE Broj <@N AND Broj > 0

-- ORDER BY se odnosi na ceo UNION (SELECT .. FROM  UNION SELECT .. FROM )
ORDER BY k,x


Code:

-- Moglo je da se napise i ovako, ko radi u MS SQL 2000:
-- Podrazumeva se da imate tablicu brojeva
DECLARE @N int
SET @N = 14

SELECT            -- Za sve igrace osim gde je x = N vazi jedan set formula 
    x
    , y
    , k =    CASE 
                WHEN (x + y)> @N THEN x + y - @N 
                ELSE x + y - 1 
            END
 
FROM 
    (
    SELECT A.Broj AS X, B.Broj AS Y 
    FROM Brojevi AS A, Brojevi AS B
    WHERE A.Broj <=@N AND A.Broj > 0
        AND B.Broj <=@N AND B.Broj > 0
        AND A.Broj < B.Broj    -- da eliminisemo duplikate tipa (1,3) i (3,1)
    ) AS Igraci
WHERE y<> @N    -- formula ne vazi za poslednji turnirski broj

UNION

SELECT        -- Za poslednji turnirski broj vazi drugi set formula
    x = Broj
    , y = @N
    , k = CASE
                WHEN 2*Broj > @N THEN 2*Broj - @N
                ELSE 2*Broj - 1
            END
FROM Brojevi WHERE Broj <@N AND Broj > 0

-- ORDER BY se odnosi na ceo UNION (SELECT .. FROM  UNION SELECT .. FROM )
ORDER BY k,x



[ mr.zhile @ 09.01.2009. 18:22 ] @
@Zidar

Pa jel ja vec rekoh covece daa si genijalac..svaka cast

Koji od ova dva priemra bi sa vecom verovatnocom radio u FB bazi?
[ Zidar @ 12.01.2009. 17:41 ] @
Nije Zidar genijalac, nego Bergman. stos je u tome da umes da pronadjes sta je neko vec odradio. A za to mora da se iz fudbala i hokeja izadje malo u sah

Ne znam koji bi primer radio u FB ili u bilo cemu drugom, probaj pa vidi. Vazno je da razumes sta radis. Cut/Paste nece pomoci, garantovano.
[ mr.zhile @ 04.03.2009. 19:00 ] @
Evo ga trenutni sors baze
Code:

/******************** TABLES **********************/

CREATE TABLE AKCIJA
(
  NAZIV Varchar(30),
  ID Integer NOT NULL
);
CREATE TABLE DOGADJAJI
(
  ID Integer NOT NULL,
  AKCIJA Integer NOT NULL,
  VREME_SLUZBENO Time NOT NULL,
  VREME_UNOSA Time NOT NULL,
  OPERATER Integer,
  IGRAC Integer NOT NULL,
  UTAKMICA Integer NOT NULL
);
CREATE TABLE IGRAC
(
  ID Integer NOT NULL,
  IME Varchar(30),
  PREZIME Varchar(30),
  MATICNI_BROJ Varchar(13) NOT NULL,
  BROJ_DRESA Varchar(2) NOT NULL,
  DATUM_RODJENJA Timestamp,
  ADRESA Varchar(850),
  KONTAKT_TEL Varchar(30),
  E_MAIL Varchar(300),
  VISINA Numeric(3,2),
  TEZINA Numeric(5,2),
  SLIKA Blob sub_type 0,
  POZICIJA Varchar(8),
  KLUB Integer NOT NULL,
  MESTO_RODJENJA Integer NOT NULL
);
CREATE TABLE KLUB
(
  ID Integer NOT NULL,
  NAZIV Varchar(30) NOT NULL,
  ADRESA Varchar(50),
  MESTO Integer NOT NULL,
  CONSTRAINT PK_T_KLUB_1 PRIMARY KEY (ID)
);
CREATE TABLE KOLO
(
  ID Integer NOT NULL,
  RASPORED Integer NOT NULL,
  BROJ_KOLA Integer NOT NULL,
  DATUM_ODIGRAVANJA Date,
  CONSTRAINT PK_KOLO PRIMARY KEY (ID)
);
CREATE TABLE KORISNICI
(
  KORISNICKO_IME Varchar(30) NOT NULL,
  LOZINKA Varchar(30) NOT NULL,
  PREZIME_IME_KORISNIKA Varchar(50),
  NIVO_PRISTUPA Varchar(3) DEFAULT '1',
  CONSTRAINT PK_KOR PRIMARY KEY (KORISNICKO_IME)
);
CREATE TABLE MESTO
(
  POST_BROJ Varchar(5) NOT NULL,
  NAZIV Varchar(3),
  ID Integer NOT NULL,
  CONSTRAINT PK_MESTO PRIMARY KEY (POST_BROJ)
);
CREATE TABLE NASTUP
(
  ID Integer NOT NULL,
  IGRAC Integer NOT NULL,
  KLUB Integer NOT NULL,
  UTAKMICA Integer NOT NULL,
  CONSTRAINT PK_NASTUP PRIMARY KEY (ID)
);
CREATE TABLE POZICIJA
(
  NAZIV Varchar(10),
  SKRACENICA Varchar(2),
  ID Integer NOT NULL,
  CONSTRAINT UNQ_POZICIJA_1 UNIQUE (SKRACENICA)
);
CREATE TABLE POZICIJA_IGRACA
(
  ID Integer NOT NULL,
  IGRAC Integer NOT NULL,
  POZICIJA Integer NOT NULL
);
CREATE TABLE RASPORED
(
  ID Integer NOT NULL,
  CONSTRAINT PK_RASPORED_1 PRIMARY KEY (ID)
);
CREATE TABLE STATISTIKA_IGRAC
(
  IGRAC Integer NOT NULL,
  UTAKKMICA Integer NOT NULL,
  ID Integer NOT NULL
);
CREATE TABLE UTAKMICA
(
  ID Integer NOT NULL,
  KOLO Integer NOT NULL,
  NAZIV_UTAKMICE Varchar(30) NOT NULL,
  GOST Varchar(8) NOT NULL,
  DOMACIN Varchar(8) NOT NULL,
  VREME Timestamp,
  MESTO Varchar(30),
  CONSTRAINT PK_UTAKMICA PRIMARY KEY (ID)
);

E sad imam sledeci problem
polje kolo u tabeli utakmica treba povezati sa pooljem broj_kola u tabeli kolo,ali sistem mi puca gresku da ne moze biti polje koje nije primary ikey ili uniqe foreight key,a ovo polje ne moze biti ni primarni kljuc ni jedinstveno jer se brioj kola razlikuje od rasasporeda do rasporeda...i u svarkom rasporedu ima kolo 1,2,3...
POMOC
[ .:Marvin:. @ 05.03.2009. 12:34 ] @
U tom slucaju, mozes da imas slozeni kljuc Raspored + Kolo, pa ista ta dva polja da imas i u tabeli kolo, kao foreign key. Jer ako ti polje kolo u tabeli utakmica nije jedinstveno, kako ces znati na koje se kolo odnosi (kolo 1. iz rasporeda A ili kolo 1 iz rasporeda B). Razumes?
[ mr.zhile @ 05.03.2009. 12:59 ] @
>

@Marvin
Aj mi malo objasni kako se to raid?ne znam



[Ovu poruku je menjao chachka dana 07.03.2009. u 02:06 GMT+1]
[ .:Marvin:. @ 07.03.2009. 10:09 ] @
Pa ne znam kako se to radi kod IBa, ali sigurno može pošto može i access :)
Ako si preko nekog vizuelnog alata uradio to, probaj da obeležiš obe pomenute kolone, pa da onda odabereš opciju primary key ili tako nešto.
A ako radiš preko čistog SQLa, onda kad kreiraš tabelu ili constraint navedi obe kolone za primary key.
[ mr.zhile @ 09.03.2009. 07:47 ] @
@MArvin HVALA na pomoci

Jos jedan problem imam,kojim kodom treba da se ispita da li je tabela refercirana na neku drugu tabela...svaka tabela se referencira preko poljak koje ima isti naziv kao i tabela koja se reeferencira...?

Da li ima jos neki predlog da sam nesto propustio pri projektovanju baze?
[ .:Marvin:. @ 11.03.2009. 12:18 ] @
Naziv polja nije bitan. Znaci ako imas npr. u tabeli STUDENT polje maticnibroj, u nekoj tabeli ISPIT mozes da imas polje MBR koje se odnosi na maticni broj studenta. Kapiras?
E sad, kako ces to da ispitas u Delfiju / IB, ne znam. To moras da vidis u dokumentaciji za IB. MS SQL ima sistemsku tabelu sysobjects, gde su popisani svi objekti (tabele, procedure, ogranicenja...). Verovatno i IB ima nesto slicno, to ne znam. To je vec pitanje za IB podforum.
[ mr.zhile @ 11.03.2009. 16:05 ] @
@MArvin
Nisi ti mene razumeo,nije fazon u povezivanju tabela,vec kako mogu da
ispitam nekom univerzalnom funkcijom,procedurom da li je tabela
referencirana na druge tabele...?
Npr da ima true ako je polje tabele S isto kao naziv tabele T1....?



[Ovu poruku je menjao misk0 dana 11.03.2009. u 20:26 GMT+1]
[ .:Marvin:. @ 12.03.2009. 08:08 ] @
To sam ti vec odgovorio:

Citat:

E sad, kako ces to da ispitas u Delfiju / IB, ne znam. To moras da vidis u dokumentaciji za IB. MS SQL ima sistemsku tabelu sysobjects, gde su popisani svi objekti (tabele, procedure, ogranicenja...). Verovatno i IB ima nesto slicno, to ne znam. To je vec pitanje za IB podforum.


Znaci pitaj na IB forumu kojim upitom da dobijes ovaj rezultat, pa cemo to lako da pretocimo u Delfi.