DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   SQL baze podataka - Sponzor: Baze-Podataka.net (http://www.devprotalk.com/forumdisplay.php?f=10)
-   -   Arhitektura nekih tabela me muci! (http://www.devprotalk.com/showthread.php?t=1923)

Dzordz 27. 11. 2006. 17:23

Arhitektura nekih tabela me muci!
 
Cao! :)

Situacija sledeca. Pravim kladionicu i kvote vadim iz XML-a koji mi daje kladionica, kako se on updateuje svakih npr. 5 minuta onda ga i ja tako citam.
Kada utakmica pocne onda se ona vise ne pojavljuje u ponudi tacnije XML-u.

Posto ja moram da imam aktivnu ponudu i da mi slucajno neko ne bi uplatio utakmicu koja ja pocela u listi koju ja izbacujem takva i ne sme da se nadje.

Napravio sam tabelu koja za ID utakmice ima int i iteratuje se sama i ja razmisljam kako da napravim najelegantnije izvodjenje. Ono sto se meni zasad cini jeste da lepo ubacim kolonu "pocela" u tabelu sa vrednoscu boolean i da svaki put kad radim update pocnem transakciju sve prebacim na "true" i onda samo kako citam XML prebacujem na "false" zavrsim transakciju i komitujem i to je to.

*Naravno dupla provera ako neko pre nego sto je pocelo pokupi listu pa uradi submit za pola sata :P

Pa ako neko ima nesto da kaze, samo napred :)

dee 27. 11. 2006. 17:30

sto na novo citanje XMLa (trenutne ponude) ne bi napravio TRUNCATE dotadasnje tabele i upis novopristiglog XMLa? i to citas vani onda kao 'trenutnu ponudu'...

Dzordz 27. 11. 2006. 17:50

Pa zato sto treba da mi ostanu utakmice u tabeli :)

Posle ja u tu tabelu upisem rezultate i to se koristi za izracunavanje tiketa i slicno.

Naravno ako neko misli da ce ovo biti naporno za server prihvatam svaku sugestiju.

flash_back 27. 11. 2006. 18:04

Nisam te bas najbolje razumeo, ali koliko kapiram tebi treba neki ‘elegantan’ nacin da utvrdis dali je utakmica pocela ili ne... Ja sam nesto slicno budzio za vesti na jednom sajticu koji sam skoro radio, stvar je simple..

napravis vest, dodelis joj validan datum koji uporedjujes sa trenutnim datumom (u tvom slicaju ti treba i time funkcija).. I napravis jednostavno uporedjenje npr: da ako je datum neke tekme manji ili jednak danasnjem + ako je pocetak iste manji ili jednak trenutnom vremenu tekma jos nije pocela (ili si mozda uhvatio prvu sekundu utakmice, sto je malo verovatno ;)).. I znaci samo ispisujes te podatke :)

I da samo pazi na GTM time, da ne omanes za h ili dva ;)

dee 27. 11. 2006. 18:06

Citat:

Originalno napisao Dzordz
Pa zato sto treba da mi ostanu utakmice u tabeli :)

Posle ja u tu tabelu upisem rezultate i to se koristi za izracunavanje tiketa i slicno.


nismo se skontali mozda :)

imas dvije tabele:

1) sve utakmice
2) trenutno aktivna ponuda

u prvoj ti ostaju sve utakmice, a za drugu radis TRUNCATE i upis kako citas XML. i iz nje generiras onda trenutnu ponudu...

uvjet za ovo je da u XMLu imas neki jedinstveni identifikator koji ce bit nekakav foreign key izmedju te dvije tablice

Dzordz 27. 11. 2006. 18:39

U stvari ja sam sebe-se malo zbunio pa mi se sad manta.

Nemam jedinstven identifikator nazalost.

Da probam malo bolje da se odrazim sa novim razmisljanjima :)

1. Hocu da kada se nova utakmica pojavi u XML da je ubacim u ponudu
2. Hocu da kada utakmica nestane iz XML (pocela je) da je izbacim iz ponude
3. Hocu da sve utakmice koje sam ikada imao u ponudi budu u jednoj tabeli u koju cu ja upisati posle rezultat


Sad kad razmisljam jedan View bi mozda bio i najbolje resenje. Ako napravim samo jednu tabelu i onda napravim View utakmica koje pocinju posle "ovog trenutka" to bi moglo da upali. (ako moze tako naravno)

E sada sam mozda nasao pravo pitanje!
Kako uz najmanje rabljenje baze da odradim tacku 1 posto bi View onda bio resenja za tacku 2. :)

Naravno sve to podrazumeva da je serveru dobro nariktan sat :1064:


Ako ovo ima ikakvog smisla drago mi je, ako ko ima ideju opet mi je drago :)

dee 27. 11. 2006. 18:50

Citat:

Kako uz najmanje rabljenje baze da odradim tacku 1 posto bi View onda bio resenja za tacku 2.
ako oces minimalno koristit bazu, zaobidji je skroz. kad citas XML, spremi ga u cache i prikazuj ponudu direktno iz njega. znaci, svakih 5 minuta citas XML i radis refresh cachea :)

i imas automatski kako na nebu tako i na zemlji :)

u tom slucaju ostaje jedino ovaj dio da imas sve utakmice koje si ikad imao u ponudi u bazi.

pa sad da razmisljam na glas:

recimo da stavis primary key da ti bude kombinacija naslov utakmice (valjda PAR koji igra) ali i datum (posto recimo utakmica kupa moze imat uzvrat u roku par dana, ali istog datuma dvoje istih ne igraju) i onda samo upisujes. one koje jos nemas u tabeli ce upisat, a one koje imas, nece radi primarnog kljuca...

kodi 27. 11. 2006. 19:29

uh..
zamilsi key 27112006inter-juve ;) :D

Dzordz 27. 11. 2006. 19:57

Pa to bi kanda nekako i funkcionisalo :)


(svakih 5 minuta)
XML -----> Tabela sa svim utakmicama

Tabela -----> View sa svim utakmicama koje nisu pocele


I prikazujem sve iz View

Cini mi se nekako izvodljivo! :1043:

Sad mi toliko jednostavno da kao da nesto ne valja. :1002:

dee 27. 11. 2006. 21:43

Citat:

Originalno napisao kodi
uh..
zamilsi key 27112006inter-juve ;) :D

sto? sta? :)

ivanhoe 27. 11. 2006. 23:52

[ EDIT: ispod ima greska, nije Zira, nego flash_back predlozio ]

mislim da je ovo sto ti je zira predlozio najbolje resenje, i meni je isto palo na pamet:

1. parsiras xml i uradis update/insert utakmica
2. utakmicama koje su pocele upises vreme i datum pocetka (tako mozes da naknadno imas ideju kad je koja uplata isla u odnosu na pocetak, i posle godinu dana ako zatreba (a timestamp uvek zatreba, pre ili kasnije)
3. Uradis select utakmica kojima nije upisan pocetak (znaci nisu jos pocele)

i to je cela mudrost...

MorenoArdohain 28. 11. 2006. 00:00

^ Koji zira? :)

Dzordz 28. 11. 2006. 10:22

Onda mi je key kolona sta? Text? Pa sigurno ce biti keyova preko 30 karaktera duzine. Jel to pametno tako?

bluesman 28. 11. 2006. 11:34

Ti MORAŠ da imaš bar 2 stvari:

1. ID utakmice
2. vreme početka

Ako to nemaš onda ne možeš ni da imaš validnu listu, onda traži da ti to stave u taj XML.

Nema šta da flag-uješ počela/nije počela, ako imaš vreme početka utakmice, samo prikažeš one koje nisu počele. Iskreno ne kapiram u čemu je problem a upravo sam pročitao sve poruke od početka.

Dzordz 28. 11. 2006. 11:43

Ma mnogo sam nesto zbunjen zadnja dva dana :1054:

Vreme pocetka imam tako da je to reseno.

ID sam napravio po savetu Dee-a tako da je i to reseno.

Hvala svima na pomoci. :1064:

kodi 28. 11. 2006. 11:46

koliko sam ja shvatio, problem je sto on hoce da iz xml-a:
-ubaci utakmicu u bazu
-dok jos nije pocela utakmica da se prikazuje na stranici
-kad se zavrsi tekma (i nestane je iz xml-a) da mu ostane u bazi da bi mogao da upise rezultat i ima history

a glavni problem je shto nema unique key ..pa mora da ga pravi od datum+par

bluesman 28. 11. 2006. 11:51

Ne razumem kako nema unique key. Kako ćeš da se kladiš na utakmicu ako nemaš unique key. Pa čak i u štampanim listama ima key za svaku utakmicu.

Što se tiče prikaza, ti u baz ubaciš sve što imaš, a prikazuješ samo one kojima je vreme početka veće od trenutnog vremena. Pri tome se mora voditi računa kako se zapisuje vreme. U XML-u mora biti neka određena vremenska zona, znači da se ne prikazuje lokalno vreme početka već recimo GMT.

Dzordz 28. 11. 2006. 11:59

Filozofija kljuceva u "papirnim" kladionicama je da oni ponistavaju iste kad bude novo kolo, a meni je potrebno da se ne brise zbog istorije.
Na primer kad prikazujem istoriju odigranih tiketa jednog igraca da on moze da vidi sve utakmice i rezultate unutar tih tiketa.

Mada postoji "team ID" u XML-u koji je 8 cifreni broj tako kombinovano sa datumom ne mogu da omanem (imena timova se znaju nekad i promeniti).

Kôd:

Primer jedne utakmice

- <event>
  <type>MT</type>
  <date>18/11/2006</date>
  <time>18:30</time>
  <updated>15/11/2006 15:06</updated>
  <league>Austria - T-Mobile Bundesliga</league>
  <leagueID>12388</leagueID>
  <sportname>Soccer</sportname>
  <sportID>3893</sportID>
  <team1>FK Austria Magna</team1>
  <team1ID>11458633</team1ID>
  <team2>Altach</team2>
  <team2ID>11458635</team2ID>
  <odd1>1.65</odd1>
  <odd2>3.40</odd2>
  <odd3>4.75</odd3>
  </event>


bluesman 28. 11. 2006. 12:10

^ Pa imaš sve što ti treba.

Samo što je ovako formirana lista - neozbiljna.

Dzordz 28. 11. 2006. 12:16

To poruci ovima iz GameBookersa ( xml.gamebookers.com ) :1074:

Hvala jos jednom! :1043:

bluesman 28. 11. 2006. 12:27

Ma oni nemaju pojma :)

Ili ti ne šalju kompletnu listu.

Nego, ja sam mislio da ti to radiš za neku ozbiljnu kladionicu koja ima svoje bookmaker-e.

Dzordz 28. 11. 2006. 12:54

Ma jok ovo je neki licni projekat sa kojim nameravam da nadogradim svoju internet imperiju :D

P.S. Ja sam nekad radio kao bookmaker u jednoj domacoj kladji i taj posao se sastoji od skidanja kvota i malog korigovanja po osecaju

bluesman 28. 11. 2006. 12:55

aaaaaaaaa, pa što ne kažeš... ja mislio radiš za neku kladionicu pa se čudim da su tako neozbiljni :)


Vreme je GMT +2. Trenutno vreme je 13:33.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.