🎵 Proiect PHP: Casă de Producție Muzicală

Acest document prezintă soluția tehnică propusă pentru implementarea unui sistem de management al unei Case de Productie Muzicala / Case de Discuri folosind PHP și MySQL.

Intră în Pagina Principala (Home)

I. Descrierea Aplicației Web


1. Obiectiv și Funcționalități

Aplicația este un sistem centralizat de tip CRUD (Create, Read, Update, Delete) care gestionează operațiunile interne ale unei case de producție. Se adresează exclusiv rolurilor de Administrator și Vizitator (Guest).

Interfețele Aplicației

2. Rolurile Simplificate ale Utilizatorilor

Rol (Tabelul *users*) Acces și Responsabilități
Administrator Acces complet (CRUD) la toate entitățile. Responsabil de crearea pieselor și alocarea Producătorilor.
Vizitator / Guest Acces public, vizualizare (Read-Only) a informațiilor lansate (Artiști, Albume, Piese).

II. Descrierea Arhitecturii Aplicației


1. Procesele specifice aplicației

Procesele descriu modul în care datele circulă și sunt modificate în sistem, concentrându-se pe rolul Administratorului.

Proces Utilizator Descriere
Autentificare Administrator Controllerul preia datele, Modelul verifică hash-ul parolei din users. Dacă e valid, creează sesiunea ($_SESSION).
Gestiunea Resurselor Administrator Proces CRUD simplu pe entitățile artists, producers, studios (inserții/actualizări într-un singur tabel).
Adăugare Piesă Administrator Controllerul primește date, Modelul execută: 1) INSERT în tracks, 2) Preia track_id (cheia primară), 3) Execută multiple INSERT-uri în track_artists și track_producers.
Vizualizare Catalog Administrator / Vizitator Controllerul cere Modelului date. Modelul folosește interogări JOIN complexe (pe 4-5 tabele) pentru a afișa lista pieselor împreună cu toți Artiștii și Producătorii asociați.

2. Entități Principale

Entitate Descriere
Utilizatori Izolată (doar pentru login Administrator)
Utilizatori (Administrator) Acesta este rolul cu cele mai înalte privilegii și reprezintă utilizatorul principal al aplicației
Utilizatori (Vizitator) Acesta este orice utilizator care accesează aplicația fără a fi autentificat. Poate vedea artistii si muzica scoasa de acestia
Artisti Datele despre artiștii semnați de casa de producție
Producatori Datele despre producătorii afiliați, echipa tehnică responsabilă de înregistrare, mixaj și masterizare
Albume Colectii de piese publicate de catre artisti
Piese Datele despre piesele inregistrate de artisti
Studiouri Datele despre studiourile la care artistii inregristreaza piese
Artisti_Piesa Face legătura între o piesă și toți artiștii implicați. Permite modelarea colaborărilor (featuring-urilor).
Producatori_Piesa Face legătura între o piesă și toți producătorii care au lucrat la ea. Permite ca o piesă să aibă mai mulți producători și ca un producător să lucreze la mai multe piese.

3. Schema Bazei de Date (MySQL)

Schema relațională esențială:

Tabel (Entitate) Câmpuri Cheie
Utilizatori id_utilizator (PK), username, email, parola, data_inregistrare
Artisti id_artist (PK), nume, gen, tara, biografie, data_semnarii
Producatori id_producator (PK), nume, tara, data_semnarii
Albume id_album (PK), titlu, id_artist (FK), data_lansare, durata
Piese id_piesa (PK), titlu, durata, id_album (FK), studio_id (FK)
Studiouri id_studio (PK), nume, adresa
Artisti_Piesa id_artist (FK), id_piesa (FK)
Producatori_Piesa id_producator (FK), id_piesa (FK)

III. Soluția de Implementare Propusă


1. Componentele Principale (Arhitectura MVC)

Aplicația este structurată pe modelul Model-View-Controller (MVC):

2. Mediul de Implementare

Aspect Metoda Descriere
Backend PHP Permite demonstrarea cunoștințelor fundamentale de PHP fără dependența de un framework.
Baza de Date MySQL Bază de date relațională robustă
Securitate Parole Funcția password_hash() Stocarea parolelor Adminului sub formă de hash-uri sigure (nu text simplu).
Vizualizare Catalog Administrator / Vizitator Controllerul cere Modelului date. Modelul folosește interogări JOIN complexe (pe 4-5 tabele) pentru a afișa lista pieselor împreună cu toți Artiștii și Producătorii asociați.

2. Diagrama ERD

Aceasta ilustrează relațiile dintre entitati si datele din acestea:

3. Use Case Diagram - UML

Aceasta ilustrează interactiunea Utilizatorilor cu aplicatia: