Proiect DAW

Biblioteca

Descrierea proiectului

Aceasta aplicatie dezvoltata in PHP are ca scop gestionarea eficienta a unei biblioteci, atat a listei de utilizatori (incluzand clientii, angajatii si administratorii), cat si a cartilor. Aplicatia permite adaugarea, stergerea, modificarea stocurilor de carti, inregistrarea utilizatorilor si verificarea istoricului cartilor imprumutate, precum si a timpului ramas pana la returnare.

Include functionalitate de cautare avansata (dupa an, categorie, autor etc.) pentru a ajuta utilizatorii sa gaseasca rapid cartile dorite. De asemenea, poate genera rapoarte — cum ar fi numarul utilizatorilor inregistrati intr-o anumita luna sau numarul de carti imprumutate.

Tabele SQL

CREATE TABLE UTILIZATOR (
    id_utilizator INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
    nume VARCHAR(100) NOT NULL,
    prenume VARCHAR(100) NOT NULL,
    data_nasterii DATE NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    telefon VARCHAR(15),
    data_inscriere DATE DEFAULT CURRENT_DATE,
    parola VARCHAR(255) NOT NULL,
    rol ENUM('membru', 'bibliotecar', 'admin') NOT NULL DEFAULT 'membru'
);
CREATE TABLE AUTOR (
    id_autor INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
    nume VARCHAR(150) NOT NULL,
    nationalitate VARCHAR(100),
    data_nasterii DATE,
    descriere TEXT
);
CREATE TABLE EDITURA (
    id_editura INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
    nume VARCHAR(150) NOT NULL,
    oras VARCHAR(100),
    tara VARCHAR(100)
);
CREATE TABLE CARTE (
    id_carte INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
    titlu VARCHAR(255) NOT NULL,
    id_autor INT NOT NULL,
    id_editura INT NOT NULL,
    an_publicare YEAR,
    categorie VARCHAR(100),
    stoc_total INT NOT NULL DEFAULT 0,
    stoc_disponibil INT NOT NULL DEFAULT 0,
    coperta VARCHAR(255),
    FOREIGN KEY (id_autor) REFERENCES AUTOR(id_autor)
        ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (id_editura) REFERENCES EDITURA(id_editura)
        ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IMPRUMUT (
    id_imprumut INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
    id_utilizator INT NOT NULL,
    id_carte INT NOT NULL,
    data_imprumut DATE NOT NULL DEFAULT CURRENT_DATE,
    data_scadenta DATE NOT NULL,
    data_retur DATE,
    FOREIGN KEY (id_utilizator) REFERENCES UTILIZATOR(id_utilizator)
        ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (id_carte) REFERENCES CARTE(id_carte)
        ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE RECENZIE (
    id_recenzie INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
    id_carte INT NOT NULL,
    id_utilizator INT NOT NULL,
    rating INT CHECK (rating BETWEEN 1 AND 5),
    comentariu TEXT,
    data DATE DEFAULT CURRENT_DATE,
    FOREIGN KEY (id_carte) REFERENCES CARTE(id_carte)
        ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (id_utilizator) REFERENCES UTILIZATOR(id_utilizator)
        ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE PENALIZARE (
    id_penalizare INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
    id_utilizator INT NOT NULL,
    id_carte INT NOT NULL,
    suma DECIMAL(10,2) NOT NULL CHECK (suma >= 0),
    motiv VARCHAR(255) NOT NULL,
    status ENUM('neachitata', 'achitata') DEFAULT 'neachitata',
    FOREIGN KEY (id_utilizator) REFERENCES UTILIZATOR(id_utilizator)
        ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (id_carte) REFERENCES CARTE(id_carte)
        ON DELETE CASCADE ON UPDATE CASCADE
);

Descrierea relatiilor dintre tabele

Diagrama conceptuala

Diagrame UML