![]() |
![]() |
|
Serverske aplikacije i baze podataka PHP, Perl, ASP, ASP .NET, ColdFusion... MySQL, PostgreSQL, MSQL, Oracle... |
![]() |
|
Alatke vezane za temu | Vrste prikaza |
![]() |
#1 |
Član
|
![]()
Pravim kao projekat za ispit informacioni sistem studentskog restorana. DBMS je MySQL, baza je distribuirana i koristim PHP.
U bazi koristim nekoliko tabela: studenti, fakulteti, jelovnik, potrošnja i uplata. E sad, zapeo sam kod sledećeg: potrebno je da se obavi realizacija obroka. Student ima neki novac na svom računu i pri tom bira jelo sa jelovnika, koje ima svoju cenu. Kada on odabere obrok (potrošnja), sistem treba da zaduži njegov račun za cenu obroka. Takođe, ne znam na koji način da realizujem uplatu na račun, tj. da se uplaćen iznos doda iznosu koji već postoji na računu. Da li je bolje da postoji zasebna tabela (entitet) RAČUN, ili da ga vodim samo kao atribut u tabeli STUDENTI? Problem je što poznajem samo osnovnu sintaksu SQL-a. Pretpostavljam da će se problem rešiti nekako preko komande UPDATE, ali ne znam tačno kako i molim vas za pomoć! |
![]() |
![]() |
![]() |
#2 |
Član
|
![]()
Rešio sam problem sa dodavanjem sredstava na račun.
Ukoliko nekom ikada bude trebalo, radi se update, i to: $updateSQL = sprintf("UPDATE tab_racun SET RACUN_STANJE = (RACUN_STANJE + %s) WHERE STUD_ID=%s" ![]() A i ovo što je ostalo rešavam uskoro... |
![]() |
![]() |
![]() |
#3 |
Deo inventara foruma
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.892 puta na 1.077 poruka
|
![]()
Evo par saveta
![]() Kao prvo da bi očuvao integritet svojih podataka prvo i osnovno pravilo dobrog dizajna relacionih baza podataka je da u bazu nikada ne skladištiš rezultate obrade podataka već same podatke kako bi kasnije izbegao neke ozbiljne probleme koji mogu da se jave recimo ako dođeš na ideju da proširuješ sistem ili poželiš da se baciš na ozbiljniju optimizaciju relacija putem normalizacije. Dakle, da pređem na konkretnu stvar. Svaki student ima po jedan račun i svaki račun je vezan za jednog studenta nezavisno od toga kom fakultetu pripada. Ovo te automatski navodi na to da je u bazu potrebno da ubaciš relaciju racuni u okviru koje bi pamtio svako zaduživanje vlasnika računa odnosno dodavanje novca na račun. Primarni ključ relacije bi trebao da bude prost i veštački tj. autoinkrementirajući broj dok bi preostali bitni argumenti trebali da budu vidljivi u sledećoj relaciji. idRacuna, idStudenta, iznos, tip, datum Kod:
CREATE TABLE `racuni` ( `idRacuna` INT NOT NULL AUTO_INCREMENT , `idStudenta` INT NOT NULL , `iznos` INT NOT NULL , `tip` ENUM( 'uplata', 'zaduzenje' ) NOT NULL , `datum` DATETIME NOT NULL , PRIMARY KEY ( `idRacuna` ) ) ENGINE = InnoDB Kako bi koristio ovu tabelu? Pa jednostavno. Svaki put kada student uplati neki iznos dodaš novi unos u tabelu. Kod:
INSERT INTO racuni (idRacuna, idStudenta, iznos, tip, datum) VALUES (NULL, ODGOVARAJUCI_ID_STUDENTA, IZNOS, 'uplata', NOW()) Kod:
INSERT INTO racuni (idRacuna, idStudenta, iznos, tip, datum) VALUES (NULL, ODGOVARAJUCI_ID_STUDENTA, IZNOS, 'zaduzenje', NOW()) ![]() Kod:
SELECT tip, SUM(iznos) FROM racuni WHERE idStudenta = 1 GROUP BY tip Kod:
uplata 1500 zaduzenje 1000 ![]() PHP kod:
![]() Elem, @dusandevic, volim kada se neko zaista trudi da odradi stvari samostalno i tada takvim ljudima pružam maksimalnu pomoć tako da ako bilo gde ponovo zapneš slobodno pitaj a nadam se da ti je ovo što sam istrtljao do sada bilo bar malo od pomoći ![]() |
![]() |
![]() |
Sledećih 2 korisnika se zahvaljuje korisniku holodoc na korisnoj poruci: | ||
dusandevic (30.1.2010), ivan.a (30.1.2010) |
![]() |
#4 |
Član
|
![]()
Okačiću ovde ER dijagram iz PowerDesigner-a, ali trenutno nemam na ovom kompu.
Ja sam to predvideo da ide u dve tabele, uplata u jednu a potrošnja u drugu, ali to nije nužno. Može i ovako kako predlažeš. Staviću ja to i na neki server pa da vidite kako funkcioniše. |
![]() |
![]() |
![]() |
#5 |
Deo inventara foruma
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.892 puta na 1.077 poruka
|
![]()
Ne znam da li na faksu imate obavezu da koristite nešto od softvera za dizajn relacionih baza tipa ERWin i sl. ali svakako jedno od jako kvalitetnih savremenih rešenja sa istom namerom je MySQL Workbench
![]() ![]() ![]() Evo malo više o programu ovde s tim što je to malo stariji tekst a novje verzije imaju sve opcije dostupne koje u vreme te recenzije nisu bile dostupne ![]() http://www.sk.rs/2008/11/skpd03.html |
![]() |
![]() |
![]() |
#6 |
Član
|
![]()
Znam, koristio sam "Radnu klupu"
![]() Nemamo obavezu da koristimo CASE alate, ali je poželjno... |
![]() |
![]() |
![]() |
#7 |
Član
|
![]() ![]() Evo i obećanog dijagrama. Prokomentarisao sam i kardinalitete, nadam se da je sve ok. PowerDesigner prilikom provere modela nije primetio nijednu grešku. |
![]() |
![]() |
![]() |
#8 |
Član
|
![]() ![]() A evo i fizičkog modela koji PDesigner napravi. Ovde imam par zamerki:
Mora li da postoji direktna veza između jelovnika i računa, zbog poslednje i suštinske stvari koju još nisam rešio: kada student jede, skine mu se sa računa cena obroka iz jelovnika? Bilo bi mi interesantno da ubacim i neka ograničenja. Na primer:
Kao što sam i obećao, ceo projekat je dostupan online na www.mksirmium.com/menza/default.php (zašto neće automatski da pokrene tu stranu kada dođem u /menza). Podaci za pristup su user: dusan i pass: dusan. Slobodno malo eksperimentišite... |
![]() |
![]() |
![]() |
#9 |
Deo inventara foruma
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.892 puta na 1.077 poruka
|
![]()
Pošto sam trenutno u gužvi prokomentarisaću za sada samo da glavnu stranicu preimenuješ iz default.php u index.php ili ako imaš pristup httpd.conf fajlu svog servera da potražiš liniju sa DirectoryIndex direktivom i i na kraju joj dodaš default.php. Recimo da izgleda kao recimo sledeći red
Kod:
DirectoryIndex index.php index.html index.htm default.php |
![]() |
![]() |
![]() |
Bookmarks sajtovi |
|
|
![]() |
||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Pomoć oko materijala za seminarski | prudentia | Brbljaonica | 0 | 25.11.2009 13:52 |
U pomoć! (Dreamweaver - tekst oko slike) | arlekino | Web razvoj | 1 | 17.10.2008 22:15 |
HDD rack ATA - kako povezati, pomoć! | Astor | Nosači podataka | 1 | 26.1.2008 18:02 |
koju agp grafičku kupiti ati 9800 xt ili 7300 gt agp pomoć | Iilija64 | ŠDK - Grafika | 13 | 25.10.2007 18:01 |
[Legend of Zelda - The Minish Cap] -> pomoć | Geomaster | Konzole | 30 | 10.9.2007 14:05 |