Sunteți pe pagina 1din 18

Capitol 4

Aplicatia web RealIDD

4.1 Mediul de functionare / implementare Funcionarea coerent a aplicaiei necesit instalarea pe un server a urmtoarelor componente (n versiuni ct mai avansate): un sistem de operare Linux sau windows; sistemul de baze date MySQL; mediul PHP; agent SMTP; server web Apache cu suport pentru PHP Internet-ul este n al treilea stadiu de dezvoltare, iar dinamic i interactiv sunt atributele eseniale ale oricrui site de succes. Conform lui Graeme, PHP i MySQL reprezint cea mai bun metod actual pentru crearea unor site-uri care folosesc baze de date. Acest fapt este demonstrat de un studiu de cercetare al companiei Netcraft care arat c dac n iunie 1998 existau 7.500 de host-uri care utilizau PHP n martie 1999 numrul acestora a crescut la 410.000. Aceast combinaie a primit i titlul de Database of the Year la Webcon98. MySQL este un server de baze de date mic i compact, ideal att pentru aplicaii mici, ct i pentru dezvoltarea marilor proiecte. n afara faptului c suport standardul SQL (ANSI-92), poate rula pe mai multe platforme i permite sisteme multithreading pentru serverele Unix, ceea ce aduce o cretere important a performanei. Sub WindowsNT, 2000 sau XP, MySQL este lansat ca un serviciu, pe cnd sub Windows95/98, ca un proces normal. PHP este un limbaj de programare pentru server. Codul PHP poate fi integrat n interiorul codului HTML. Scriptul PHP va fi apoi procesat de ctre server care va returna un fiier HTML. Acest tip de interaciune permite executarea unor operaii destul de complexe. Aplicaiile WEB reprezint att prezentul ct i viitorul, ele funcionnd pe baza unei arhitecturi client/server. Aplicaiile realizate cu PHP i MySQL utilizeaz un singur client i anume browser-ul WEB. Limbajul de baz al browser-ului WEB este HTML. Acest limbaj dispune de o serie de tag-uri care descriu modul n care va arta o pagin WEB. Majoritatea prelucrrilor efectuate de aplicaiile Web au loc pe sever. O aplicaie specific, numit server Web, va asigura comunicarea cu browser-ul. Un server de baze de date relaionale stocheaz informaiile pe care le va accesa aplicaia. n final mai este nevoie de un limbaj care s intermedieze interogrile ce apar ntre serverul Web i serverul de baze de date. Acest limbaj va fi utilizat i pentru a executa anumite operaii asupra informaiilor care vin spre i dinspre serverul Web.

32

Capitol 4

Aplicatia web RealIDD

Utilizatorii platformei vor dispune de staii PC prevzute cu un sistem de operare, de preferin Windows mpreun cu: Adobe Acrobat Reader; Suita de programe Microsoft Office; Un browser (Internet explorer, FireFox Opera etc); O aplicaie de e-mail; Windows Media Player sau un alt mediu video compatibil. Implementarea aplicaiei presupune: crearea i popularea bazelor de date; instalarea aplicaiei constituit din produse program. Din punct de vedere informaional popularea bazelor de date necesit informaii pertinente i complete cu referire la: structura organizaional a instituiei; planurile de nvmnt; formaiile de studiu; cadrele didactice, date personale specifice activitii; studeni, date personale specifice instituiei. Implementarea aplicaiei din punct de vedere al suportului software se realizeaz la nivelul ntregii universiti prin definirea bazelor de date dar activarea procedurilor pentru popularea platformei cu informaii este n responsabilitatea grupelor de utilizatori desemnai pentru fiecare specializare. Ca atare pot exista diferene n gradul de umplere a platformei cu informaii specifice fiecrei specializri. Implemetarea platformei de nvmnt electronic presupune o activitate ciclic (repetabil n fiecare an universitar) i const n: actualizarea bazelor de date referitoare la universitate; actualizare i completarea ofertei de materiale didactice; actualizarea i completarea ofertei de teste de autoevaluare; actualizarea n timp util, la zi, a informaiilor rapid perisabile n vederea asigurrii coerenei i corectitudinii datelor oferite; preluarea periodic a feedback-ului studenilor asupra calitii serviciilor educaionale. Exploatarea curent a platformei presupune activarea procedurilor specifice ntr-un flux prestabilit, pentru fiecare specializare, respectiv: utilizarea procedurilor pentru nscrierea candidailor i selecia studenilor; uitlizarea procedurilor pentru organizarea procesului de nvmnt; utilizarea procedurilor pentru susinerea procesului de nvmnt. n consecin, se poate discuta de stadiul implementrii aplicaiei n dou plane diferite, respectiv: stadiul implementrii platformei relativ la acoperirea cu proceduri a necesitilor sistemului real, numit n continuare stadiul dezvolrii platformei; stadiul implemetrii platformei existente cu informaii, numit n continuare gradul de acoperire cu date. 33

Capitol 4

Aplicatia web RealIDD

Organizaional, se consider necesar existena unui colectiv alctuit din persoane competente care s sprijine exploatarea curent a aplicaiei. Acest colectiv va dispune de urmtoarele categorii de personal cu urmtoarele competene: ef colectiv cunotine SQL (MySQL), LINUX/WINDOWS administrator reea Internet la nivelul instituiei (Centru de Comunicaii) LINUX, SQL etc administrator baze de date operatori calculator n funcie de numrul de specializri Fiecare utilizator definit va avea unul din rolurile: administrator Administratorii vor gestiona la nivel jos entitatile bazei de date, prin inermediul browserului, cu scopul de a urmari parametrii/evenimentele aferente serviciilor de deservesc platforma. Ei pot lansa diferite interogari directe pe structurile de date ale aplicatiei. supervizor Utilizatorii cu acest rol vor fi responsabili in principal cu mentinerea / gestionarea stucturilor organizatorice (universitati, facultati, sectii, instante) instructor(tutore) Utilizatorii din acest grup vor gestiona procesul de invatare in spatiul virtual. Vor posta material de studiu pentru fiecare curs, vor gestiona listele de intrebari, cu diferite nivele de dificultate, si testele aferente pentru autoevaluare si evaluari finale; vor mentine canalele de discutie/consultare sincrone si asincrone gen chat si forum; vor gestiona rezultatele procesului didactic virtual. cursant

4.2 Structura bazei de date Schema relationala a bazei de date, prezentata in figura de mai jos, este gestionata si intretinuta prin intermediul instrumentului MySQL Workbench 5.0 OSS, instrument ce permite, visual, gestionarea tuturor elementelor constitutive (tabele, indecsi, relatii, triggere, proceduri stocate), importul si exportul de date, generarea scriptuilor SQL pentru recrearea structurilor de date pe alte servere.
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; CREATE SCHEMA IF NOT EXISTS `IDD` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci ; SHOW WARNINGS; USE `IDD`;

34

Capitol 4

Aplicatia web RealIDD

-- ------------------------------------------------------ Table `IDD`.`persoane` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`persoane` ( `cnp` CHAR(13) ASCII NOT NULL COMMENT 'Cod numeric personal' , `nume` CHAR(32) ASCII NOT NULL COMMENT 'Nume' , `prenume` CHAR(32) ASCII NULL COMMENT 'Prenume' , `titlu` VARCHAR(32) NULL COMMENT 'Titlu' , `dnastere` DATE NOT NULL COMMENT 'Data nastere' , `email` VARCHAR(64) NULL COMMENT 'Adresa email' , `homepage` VARCHAR(64) NULL COMMENT 'Pagina web personala' , `yahooID` VARCHAR(48) NULL COMMENT 'YahooID' , `tel_fix` VARCHAR(32) NULL COMMENT 'Numar telefon fix' , `tel_mob` VARCHAR(32) NULL COMMENT 'Numar telefon mobil' , `activ` ENUM('D','N') NULL DEFAULT 'D' COMMENT 'activ' , PRIMARY KEY (`cnp`) ) ENGINE = InnoDB COMMENT = 'Date generale persoane'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`adrese` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`adrese` ( `cnp` CHAR(13) ASCII NOT NULL COMMENT 'Cod numeric personal' , `tara` CHAR(3) NULL DEFAULT 'ROM' COMMENT 'Tara' , `judet` CHAR(2) NULL COMMENT 'Judet' , `oras` VARCHAR(24) NULL COMMENT 'Oras' , `strada` VARCHAR(32) NULL COMMENT 'Strada' , `nr` CHAR(8) NULL COMMENT 'Nr' , `bloc` CHAR(8) NULL COMMENT 'Bloc' , `scara` CHAR(8) NULL COMMENT 'Scara' , `et` CHAR(4) NULL COMMENT 'Etaj' , `ap` CHAR(4) NULL COMMENT 'Apartament' , PRIMARY KEY (`cnp`) , INDEX fk_persoane_adrese (`cnp` ASC) , CONSTRAINT `fk_persoane_adrese` FOREIGN KEY (`cnp` ) REFERENCES `IDD`.`persoane` (`cnp` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Adrese peroane'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`utilizatori` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`utilizatori` ( `utilizatorid` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id utilizator' , `hash_sha1` CHAR(40) NOT NULL COMMENT 'hash parola (sha1)' , `cnp` CHAR(13) ASCII NOT NULL COMMENT 'cnp' , `tip` ENUM('ADMINISTRATOR','SUPERVIZOR','INSTRUCTOR','CURSANT') NOT NULL COMMENT 'tip' , `activ` ENUM('D','N') NOT NULL DEFAULT 'D' COMMENT 'activ' , `acc_last_logon` DATETIME NULL , `acc_last_logon_ip` VARCHAR(15) NULL DEFAULT '0.0.0.0' , `acc_last_session_key` CHAR(40) NULL , `acc_locked_out` ENUM('D','N') NULL DEFAULT 'N' , `acc_locked_expire` DATETIME NULL , `acc_disabled` ENUM('D','N') NULL DEFAULT 'N' , `acc_bad_logon_count` TINYINT NULL DEFAULT 0 , `acc_expire` DATETIME NULL , PRIMARY KEY (`utilizatorid`) , INDEX fk_persoane_utilizatori (`cnp` ASC) , CONSTRAINT `fk_persoane_utilizatori`

35

Capitol 4
FOREIGN KEY (`cnp` ) REFERENCES `IDD`.`persoane` (`cnp` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Utilizatori platforma\n'; SHOW WARNINGS; DELIMITER // // SHOW WARNINGS// CREATE TRIGGER utilizatori_before_insert BEFORE INSERT ON utilizatori FOR EACH ROW BEGIN IF LENGTH(NEW.hash_sha1)<40 THEN SET NEW.hash_sha1 = sha1(NEW.hash_sha1); END IF; END// SHOW WARNINGS// // SHOW WARNINGS// CREATE TRIGGER utilizatori_before_update BEFORE UPDATE ON utilizatori FOR EACH ROW BEGIN IF LENGTH(NEW.hash_sha1)<40 THEN SET NEW.hash_sha1 = sha1(NEW.hash_sha1); END IF; END// SHOW WARNINGS// DELIMITER ;

Aplicatia web RealIDD

-- ------------------------------------------------------ Table `IDD`.`universitati` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`universitati` ( `univid` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Cod universitate' , `nume` VARCHAR(48) NULL COMMENT 'Nume' , `adresa` VARCHAR(64) NULL COMMENT 'Adresa' , `site` VARCHAR(64) NULL COMMENT 'WebSite' , `activa` ENUM('D','N') NULL DEFAULT 'D' , PRIMARY KEY (`univid`) ) ENGINE = InnoDB COMMENT = 'Universitati'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`fisiere` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`fisiere` ( `fisierid` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id fisier' , `dt_publicare` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'data si ora pubicare' , `proprietar` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'proprietar' , `ref_nume` VARCHAR(24) NULL COMMENT 'referinta (nume tabela)' , `ref_id` INT NULL COMMENT 'referinta (id PK tabela)' , `fisier` VARCHAR(32) NOT NULL COMMENT 'nume fisier' , `fisier_anterior` VARCHAR(32) NOT NULL COMMENT 'nume fisier (la upload)' , `descriere` VARCHAR(64) NOT NULL COMMENT 'descriere' , `acces_privat` ENUM('D','N') NOT NULL DEFAULT 'N' COMMENT 'privat' ,

36

Capitol 4

Aplicatia web RealIDD

`acces_grup` CHAR(4) NOT NULL DEFAULT 'DDDD' COMMENT 'acces pentru grupurile predefinite' , `downloads` INT NOT NULL DEFAULT 0 , `activ` ENUM('D','N') NOT NULL DEFAULT 'D' COMMENT 'activ' , PRIMARY KEY (`fisierid`) , INDEX UTILIZATOR (`proprietar` ASC) , INDEX activ (`activ` ASC) , INDEX fk_utilizatori_fisiere (`proprietar` ASC) , CONSTRAINT `fk_utilizatori_fisiere` FOREIGN KEY (`proprietar` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Fisiere'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`facultati` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`facultati` ( `facid` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Cod facultate' , `univid` INT UNSIGNED NOT NULL COMMENT 'Cod universitate' , `nume` VARCHAR(48) NULL COMMENT 'Nume' , `site` VARCHAR(64) NULL COMMENT 'WebSite' , `activa` ENUM('D','N') NULL DEFAULT 'D' , PRIMARY KEY (`facid`) , INDEX fk_universitati_facultati (`univid` ASC) , CONSTRAINT `fk_universitati_facultati` FOREIGN KEY (`univid` ) REFERENCES `IDD`.`universitati` (`univid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Facultati'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`sectii` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`sectii` ( `secid` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Cod sectie' , `facid` INT UNSIGNED NOT NULL COMMENT 'Cod facultate' , `nume` VARCHAR(48) NULL COMMENT 'Nume' , `site` VARCHAR(64) NULL COMMENT 'WebSite' , `activa` ENUM('D','N') NULL DEFAULT 'D' , PRIMARY KEY (`secid`) , INDEX fk_facultati_sectii (`facid` ASC) , CONSTRAINT `fk_facultati_sectii` FOREIGN KEY (`facid` ) REFERENCES `IDD`.`facultati` (`facid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Sectii'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`isectii` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`isectii` ( `isecid` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Id instanta\n' , `secid` INT UNSIGNED NOT NULL COMMENT 'Id sectie' , `data_inceput` DATE NOT NULL COMMENT 'Data start (important anul)' , `data_sfarsit` DATE NOT NULL COMMENT 'Data final (important anul)' ,

37

Capitol 4
`descriere` VARCHAR(45) NOT NULL COMMENT 'Descriere' , `activa` ENUM('D','N') NOT NULL DEFAULT 'D' , PRIMARY KEY (`isecid`) , INDEX fk_sectii_isectii (`secid` ASC) , CONSTRAINT `fk_sectii_isectii` FOREIGN KEY (`secid` ) REFERENCES `IDD`.`sectii` (`secid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Instante sectii'; SHOW WARNINGS;

Aplicatia web RealIDD

-- ------------------------------------------------------ Table `IDD`.`cursuri` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`cursuri` ( `cursid` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Id curs\n' , `data` DATE NOT NULL COMMENT 'Data creare' , `nume` VARCHAR(64) NOT NULL COMMENT 'Nume' , `activ` ENUM('D','N') NOT NULL DEFAULT 'D' , PRIMARY KEY (`cursid`) ) ENGINE = InnoDB COMMENT = 'Cursuri'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`instructori` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`instructori` ( `rid` INT UNSIGNED NOT NULL AUTO_INCREMENT , `cursid` INT UNSIGNED NOT NULL COMMENT 'Id curs' , `utilizatorid` INT UNSIGNED NOT NULL COMMENT 'Id utilizator' , `titlu` VARCHAR(32) NOT NULL , `dtstart` DATE NOT NULL , `dtfinal` DATE NULL , INDEX fk_utilizatori_instructori (`utilizatorid` ASC) , INDEX fk_cursuri_instructori (`cursid` ASC) , PRIMARY KEY (`rid`) , UNIQUE INDEX ix_unic (`cursid` ASC, `utilizatorid` ASC) , CONSTRAINT `fk_utilizatori_instructori` FOREIGN KEY (`utilizatorid` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_cursuri_instructori` FOREIGN KEY (`cursid` ) REFERENCES `IDD`.`cursuri` (`cursid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Instructori cursuri'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`isc` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`isc` ( `iscid` INT UNSIGNED NOT NULL AUTO_INCREMENT , `isecid` INT UNSIGNED NOT NULL COMMENT 'Id instanta sectie' , `cursid` INT UNSIGNED NOT NULL COMMENT 'Id curs' , `data` DATE NOT NULL COMMENT 'Data' , `an` TINYINT UNSIGNED NOT NULL , `semestru` TINYINT UNSIGNED NOT NULL , `nrcredite` SMALLINT UNSIGNED NOT NULL ,

38

Capitol 4
PRIMARY KEY (`iscid`) , INDEX fk_cursuri_isc (`cursid` ASC) , INDEX fk_isectii_isc (`isecid` ASC) , UNIQUE INDEX indx_unic1 (`isecid` ASC, CONSTRAINT `fk_cursuri_isc` FOREIGN KEY (`cursid` ) REFERENCES `IDD`.`cursuri` (`cursid` ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_isectii_isc` FOREIGN KEY (`isecid` ) REFERENCES `IDD`.`isectii` (`isecid` ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Cursuri atasate unei instante SHOW WARNINGS;

Aplicatia web RealIDD

`cursid` ASC, `an` ASC, `semestru` ASC) , )

sectie';

-- ------------------------------------------------------ Table `IDD`.`isu` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`isu` ( `rid` INT UNSIGNED NOT NULL AUTO_INCREMENT , `isecid` INT UNSIGNED NOT NULL COMMENT 'Id instanta sectie' , `utilizatorid` INT UNSIGNED NOT NULL COMMENT 'Id utilizator' , `data` DATE NOT NULL COMMENT 'Data (adaugare/transfer..)' , `stare` VARCHAR(32) NULL COMMENT 'Stare (descriptiv)' , `stareinitiala` VARCHAR(32) NOT NULL COMMENT 'Stare initiala (descriptiv)' , `activ` ENUM('D','N') NOT NULL DEFAULT 'D' , INDEX fk_isectii_isu (`isecid` ASC) , INDEX fk_utilizatori_isu (`utilizatorid` ASC) , UNIQUE INDEX ix_unic (`isecid` ASC, `utilizatorid` ASC) , PRIMARY KEY (`rid`) , CONSTRAINT `fk_isectii_isu` FOREIGN KEY (`isecid` ) REFERENCES `IDD`.`isectii` (`isecid` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_utilizatori_isu` FOREIGN KEY (`utilizatorid` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Utilizatorii asociati unei instante sectie'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`taxe` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`taxe` ( `taxaid` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID taxa' , `utilizatorids` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'ID utilizator (initiator)' , `utilizatorid` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'ID utilizator (platitor)' , `dataemitere` DATE NOT NULL COMMENT 'Data emiterii obligatiei de plata' , `datalimita` DATE NOT NULL COMMENT 'Data limita a platii' , `dataplata` DATE NULL COMMENT 'Data plata (stingere obligatie)' , `descriere` VARCHAR(64) NULL COMMENT 'Descriere ' , `suma_de_plata` FLOAT NOT NULL DEFAULT 0 COMMENT 'Valoare' , `suma_platita` FLOAT NOT NULL DEFAULT 0 , `moneda` CHAR(3) NOT NULL COMMENT 'Moneda' , `obs` VARCHAR(64) NULL COMMENT 'Alte observatii' , PRIMARY KEY (`taxaid`) , INDEX fk_utilizatori_taxe_s (`utilizatorids` ASC) , INDEX fk_utilizatori_taxe_d (`utilizatorid` ASC) ,

39

Capitol 4
CONSTRAINT `fk_utilizatori_taxe_s` FOREIGN KEY (`utilizatorids` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_utilizatori_taxe_d` FOREIGN KEY (`utilizatorid` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Taxe'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`teste` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`teste` ( `tid` INT UNSIGNED NOT NULL AUTO_INCREMENT , `cursid` INT UNSIGNED NOT NULL , `data` DATE NOT NULL , `descriere` VARCHAR(64) NOT NULL , `activ` ENUM('D','N') NOT NULL DEFAULT 'D' , `utilizator` INT UNSIGNED NOT NULL DEFAULT 0 , `fisier` INT NOT NULL DEFAULT 0 , `dt_start` DATETIME NULL , `dt_final` DATETIME NULL , PRIMARY KEY (`tid`) ) ENGINE = InnoDB COMMENT = 'teste'; SHOW WARNINGS;

Aplicatia web RealIDD

-- ------------------------------------------------------ Table `IDD`.`examinari` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`examinari` ( `rowid` BIGINT NOT NULL AUTO_INCREMENT , `iscid` INT UNSIGNED NOT NULL , `utilizatorid` INT UNSIGNED NOT NULL , `instructorid` INT UNSIGNED NOT NULL , `testid` INT UNSIGNED NOT NULL , `data` DATE NOT NULL , `nota` TINYINT UNSIGNED NOT NULL DEFAULT 1 , `obs` VARCHAR(64) NULL , `tipexamen` ENUM('PARTIAL','FINAL') NOT NULL DEFAULT 'PARTIAL' , `promovat` ENUM('D','N') NOT NULL DEFAULT 'N' , PRIMARY KEY (`rowid`) , INDEX fk_isc_ex (`iscid` ASC) , INDEX fk_utilizatori_ex1 (`utilizatorid` ASC) , INDEX fk_utilizatori_ex2 (`instructorid` ASC) , INDEX fk_teste_ex (`testid` ASC) , CONSTRAINT `fk_isc_ex` FOREIGN KEY (`iscid` ) REFERENCES `IDD`.`isc` (`iscid` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_utilizatori_ex1` FOREIGN KEY (`utilizatorid` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_utilizatori_ex2` FOREIGN KEY (`instructorid` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE,

40

Capitol 4
CONSTRAINT `fk_teste_ex` FOREIGN KEY (`testid` ) REFERENCES `IDD`.`teste` (`tid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Examene/teste sustinute'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`testei` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`testei` ( `qid` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT , `dataactualizare` DATE NOT NULL , `instructor` INT UNSIGNED NOT NULL , `cursid` INT UNSIGNED NOT NULL , `capid` INT UNSIGNED NOT NULL DEFAULT 0 , `intrebare` TEXT NOT NULL , `grila` ENUM('D','N') NOT NULL DEFAULT 'N' , `nrq` ENUM('0','1','2','3','4','5') NOT NULL DEFAULT '0' , `opt1` TEXT NULL , `opt2` TEXT NULL , `opt3` TEXT NULL , `opt4` TEXT NULL , `op5` TEXT NULL , `rez1` ENUM('D','N') NULL , `rez2` ENUM('D','N') NULL , `rez3` ENUM('D','N') NULL , `rez4` ENUM('D','N') NULL , `rez5` ENUM('D','N') NULL , `secunde` INT UNSIGNED NOT NULL DEFAULT 0 , `nivel` ENUM('Usor','Moderat','Rdicat') NULL , PRIMARY KEY (`qid`) , INDEX fk_utilizatori_testei (`instructor` ASC) , INDEX fk_cursuri_testei (`cursid` ASC) , CONSTRAINT `fk_utilizatori_testei` FOREIGN KEY (`instructor` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_cursuri_testei` FOREIGN KEY (`cursid` ) REFERENCES `IDD`.`cursuri` (`cursid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Teste (Intrebari)'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`cursuricap` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`cursuricap` ( `capid` INT UNSIGNED NOT NULL AUTO_INCREMENT , `cursid` INT UNSIGNED NOT NULL , `nume` VARCHAR(64) NOT NULL , `obs` VARCHAR(128) NULL , INDEX fk_cursuri (`cursid` ASC) , PRIMARY KEY (`capid`) , CONSTRAINT `fk_cursuri` FOREIGN KEY (`cursid` ) REFERENCES `IDD`.`cursuri` (`cursid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB

Aplicatia web RealIDD

41

Capitol 4
COMMENT = 'Capitole cursuri\n'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`testec` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`testec` ( `rid` BIGINT UNSIGNED NOT NULL COMMENT 'id rand ' , `tid` INT UNSIGNED NOT NULL COMMENT 'id test' , `qid` BIGINT UNSIGNED NOT NULL COMMENT 'id intrebare' , `dt_afisare` DATETIME NULL , `dt_rapuns` DATETIME NULL , `rez1` ENUM('D','N') NOT NULL DEFAULT 'N' , `rez2` ENUM('D','N') NOT NULL DEFAULT 'N' , `rez3` ENUM('D','N') NOT NULL DEFAULT 'N' , `rez4` ENUM('D','N') NOT NULL DEFAULT 'N' , `rez5` ENUM('D','N') NOT NULL DEFAULT 'N' , `rez` TEXT NULL , PRIMARY KEY (`rid`) , INDEX fk_testeic (`qid` ASC) , INDEX fk_testec (`tid` ASC) , CONSTRAINT `fk_testeic` FOREIGN KEY (`qid` ) REFERENCES `IDD`.`testei` (`qid` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_testec` FOREIGN KEY (`tid` ) REFERENCES `IDD`.`teste` (`tid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Componentele testului\n'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`testesablon` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`testesablon` ( `tsid` INT UNSIGNED NOT NULL AUTO_INCREMENT , `cursid` INT UNSIGNED NOT NULL , `data` DATE NOT NULL , `utilizator` INT UNSIGNED NOT NULL DEFAULT 0 , PRIMARY KEY (`tsid`) , INDEX fk_cursuri_ts (`cursid` ASC) , INDEX fk_utilizator_ts (`utilizator` ASC) , CONSTRAINT `fk_cursuri_ts` FOREIGN KEY (`cursid` ) REFERENCES `IDD`.`cursuri` (`cursid` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_utilizator_ts` FOREIGN KEY (`utilizator` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Teste sablon'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`testesablonc` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`testesablonc` ( `rid` INT UNSIGNED NOT NULL AUTO_INCREMENT ,

Aplicatia web RealIDD

42

Capitol 4
`tsid` INT UNSIGNED NOT NULL , `qid` BIGINT UNSIGNED NOT NULL , INDEX fk_q_tsc (`qid` ASC) , INDEX fk_ts_tsc (`tsid` ASC) , PRIMARY KEY (`rid`) , UNIQUE INDEX ix_unic (`tsid` ASC, `qid` ASC) , CONSTRAINT `fk_q_tsc` FOREIGN KEY (`qid` ) REFERENCES `IDD`.`testei` (`qid` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_ts_tsc` FOREIGN KEY (`tsid` ) REFERENCES `IDD`.`testesablon` (`tsid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Intrebarile unui test sablon'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`log` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`log` ( `logid` INT UNSIGNED NOT NULL AUTO_INCREMENT , `utilizatorid` INT UNSIGNED NOT NULL , `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0' , `tip` VARCHAR(15) NOT NULL , `descriere` VARCHAR(64) NULL , PRIMARY KEY (`logid`) , INDEX fk_utilizatori_log (`utilizatorid` ASC) , CONSTRAINT `fk_utilizatori_log` FOREIGN KEY (`utilizatorid` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB COMMENT = 'Log operatii'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`config` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`config` ( `param` VARCHAR(16) NOT NULL , `desc` VARCHAR(64) NULL , `cval` VARCHAR(32) NULL , `nval` INT NULL , `tval` TEXT NULL , `lval` ENUM('D','N') NULL , `dtval` DATETIME NULL , PRIMARY KEY (`param`) ) ENGINE = MyISAM COMMENT = 'Parametri platforma'; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`forum_topic` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`forum_topic` ( `idtop` INT UNSIGNED NOT NULL AUTO_INCREMENT , `nume` VARCHAR(128) NOT NULL , `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `iscid` INT UNSIGNED NOT NULL DEFAULT 0 ,

Aplicatia web RealIDD

43

Capitol 4
`autor` INT UNSIGNED NOT NULL , `activ` ENUM('D','N') NOT NULL DEFAULT 'D' , `t_post` ENUM('D','N') NOT NULL DEFAULT 'D' , PRIMARY KEY (`idtop`) , INDEX fk_forum_topic_isc (`iscid` ASC) , INDEX fk_forum_topic_utilizatori (`autor` ASC) , CONSTRAINT `fk_forum_topic_isc` FOREIGN KEY (`iscid` ) REFERENCES `IDD`.`isc` (`iscid` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_forum_topic_utilizatori` FOREIGN KEY (`autor` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB; SHOW WARNINGS; -- ------------------------------------------------------ Table `IDD`.`forum_msg` -- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `IDD`.`forum_msg` ( `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT , `idtop` INT UNSIGNED NOT NULL , `dt` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP , `autor` INT UNSIGNED NOT NULL DEFAULT 0 , `important` ENUM('D','N') NOT NULL DEFAULT 'N' , `owner_editor` ENUM('D','N') NOT NULL DEFAULT 'D' , `grup_editor` ENUM('D','N') NOT NULL DEFAULT 'N' , `titlu` VARCHAR(128) NULL , `continut` TEXT NULL , `voturi` INT UNSIGNED NOT NULL DEFAULT 0 , `hits` INT UNSIGNED NOT NULL DEFAULT 0 , `sters` ENUM('D','N') NOT NULL DEFAULT 'N' , `dt_stergere` DATETIME NULL , `stergator` INT UNSIGNED NOT NULL DEFAULT 0 , PRIMARY KEY (`id`) , INDEX fk_forum_msg_forum_topic (`idtop` ASC) , INDEX fk_forum_msg_utilizatori (`autor` ASC) , INDEX fk_forum_msg_utilizatori1 (`stergator` ASC) , CONSTRAINT `fk_forum_msg_forum_topic` FOREIGN KEY (`idtop` ) REFERENCES `IDD`.`forum_topic` (`idtop` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_forum_msg_utilizatori` FOREIGN KEY (`autor` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_forum_msg_utilizatori1` FOREIGN KEY (`stergator` ) REFERENCES `IDD`.`utilizatori` (`utilizatorid` ) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB; SHOW WARNINGS; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

Aplicatia web RealIDD

44

Capitol 4

Aplicatia web RealIDD

4.3 Ecrane aplicatie. Discutie

45

Capitol 4

Aplicatia web RealIDD

46

Capitol 4

Aplicatia web RealIDD

47

Capitol 4

Aplicatia web RealIDD

48

Capitol 4

Aplicatia web RealIDD

49

S-ar putea să vă placă și