Documente Academic
Documente Profesional
Documente Cultură
CATEDRA CALCULATOARE
PROIECT
la disciplina
Introducere in Baze de Date
Rent a car
Muresan Cristian Marius
si
Iuonas Ovidiu Claudiu
An academic: 2014 2015
PROIECT de SEMESTRU
Catedra de Calculatoare
Disciplina : Introducere in Baze de Date
Coordonator: s.l. ing. Cosmina IVAN
Data 13.01.2015
Cuprins
1. Introducere
Introducere, argumente, scop si obiective specifice
2. Analiza cerintelor utilizatorilor ( Specificatiile de proiect)
Normalizarea datelor
4. Detalii de implementare
1. Introducere
Acest document are in vedere prezentarea in ansamblu a proiectului `Rent a
car`, realizat in cadrul cursului de Introducere in Baze de Date, semestrul I, an
universitar 2014-2015. In acest document sunt descrisi pasii urmati in realizarea
proiectului, o descriere a versiunii finale a proiectului si o urmatoare etapa la care
poate fi dus acest proiect.
Tabela principala este Booking care are cheia primara ID si care contine
data inceperii inchirierii, si data returnarii produsului. Tot aici se gasesc cheile
straine care fac legatura cu tabela Cars si cu tabea Agency. Mai este si tabea
Extra_stuff in care sunt niste produse suplimentare ale inchrierii.
Tabela Customer stocheaza datele clientului si care are o cheie straina in
tabela Customer_address, tabela in care se stocheaza adresa clientului.
Tabela Car retine informatii despre masina precum numarul de
inmatriculare, anul fabricatiei, culoarea si contine cheie straina din tabela
Car_type care retine tipul masinii inchiriate.
Fiecare masina poate fii disponibila la o sucursala a unei agentii. Astfel in
tabela Car se gaseste o cheie straina din tabela Branch. Tabela Branch contine
numele sucursalei, iar in tabela Branch_address este stocata adresa sucursalei.
Interogari (Queries) utilizate pe baza de date:
#1. Producatorii de masini
SELECT PRODUCER
FROM car_type
ORDER BY PRODUCER ASC;
#2. Numele si producatorul masinilor fabricate dupa anul 2008 ordonate dupa
nume
SELECT NAME as 'Nume',PRODUCER as 'Producator'
FROM car_type,car
where DATE_OF_MANUFACTURING>'2008' and
car_type.ID = car.CAR_TYPE_ID
Order by NAME;
#3. Numele si producatorul masinilor al caror pret zilnic este mai mic decat 150
Select PRODUCER as 'Producator',NAME as 'Nume'
from car_type,car
where car.BASE_PRICE_PER_DAY<'150' and
car.CAR_TYPE_ID= car_type.ID;
#4. Numele si producatorul masinilor albastre
Select PRODUCER as 'Producator',NAME as 'Nume'
from car_type,car
1
Normalizarea datelor
Pentru ca datele sa poata fi relationate si utilizate corect este necesara
normalizarea bazei de date. Acest lucru presupune incadrarea in formele de
normalizare de mai jos:
1. Prima forma de normalizare (1NF)
Intr-o baza de date relationala, entitatile diferite trebuie stocate in tabele
diferite. Este recomandabil ca pentru fiecare entitate sa se creeze un tabel
separat. Foarte adesea aceasta forma de normalizare este prezentata intr-un alt
mod. In aceasta formulare se spune ca valoarea unui atribut al unei entitati
(modelat, in mod normal, in baza de date printr-o coloana) nu poate lua valori
multiple (ceea ce ar insemna utilizarea mai multor coloane de acelasi fel).
4
4. Detalii de implementare
Pentru realizarea site-ului am folosit mai multe limbaje de programare.
Site-ul a fost realizat folosind : PHP, SQL, CSS si JavaScript. Pentru crearea
tabelelor si popularea lor am scris cod SQL in MySQL Workbench si
phpMyAdmin folosind ca server XAMPP. Customizarea template-ului a fost
realizata folosind CSS. Mai jos sunt prezentate cateva detalii despre fiecare in
parte:
5
3.Inserare rezervare
DELIMITER //
DROP PROCEDURE IF EXISTS INSERT_BOOKING//
CREATE PROCEDURE `INSERT_BOOKING`(IN
`BOOKING_NUMBER` INT(11) UNSIGNED, IN `BOOKING_DATE`
DATE, IN `RETURN_DATE` DATE, IN `CAR_ID` INT(11), IN
`AGENCY_ID` INT(11), IN `CUSTOMER_ID` INT(11))
BEGIN
INSERT INTO
BOOKING(BOOKING_DATE,RETURN_DATE,CAR_ID,AGENCY_ID,CUS
TOMER_ID) VALUES
(BOOKING_DATE,RETURN_DATE,CAR_ID,AGENCY_ID,CUSTOMER_I
D);
END//
DELIMITER;
4.Stergere rezervare
DELIMITER //
DROP PROCEDURE IF EXISTS DELETE_BOOKING//
CREATE PROCEDURE `DELETE_BOOKING`(NUMBER INT(11))
BEGIN
DELETE FROM BOOKING WHERE
BOOKING_NUMBER=NUMBER;
END// DELIMITER;
10
11
12
13
14