INTRODUCERE:
O bază de date (database) este o colecţie de date creată şi menţinută computerizat, care permite operaţii de
introducere, ştergere, actualizare şi interogare a datelor.
În general, se consideră că etapa de proiectare a unei baze de date se pot diviza, la rândul ei, în mai multe
faze:
a. Proiectarea conceptuală a bazei de date.
b. Alegerea unui SGBD.
c. Proiectarea logică a bazei de date.
d. Proiectarea fizică a bazei de date.
În mod tipic, dezvoltarea unei baze de date constă din desfăşurarea a două categorii de activităţi paralele,
aşa cum se poate vedea în figura de mai jos:
Faza
Faza 1:
1: Cerinţele de Cerinţele de
date prelucrare
Colectarea
Colectarea şi
şi
analiza
analiza
cerinţelor
cerinţelor
Faza
Faza 2:
2: Proiectarea
Proiectarea Proiectarea
Proiectarea
schemei
schemei tranzacţiilor
tranzacţiilor
Proiectare
Proiectare conceptuale
conceptuale şi
şi aa (independente
(independente de de
conceptuală
conceptuală schemelor
schemelor externe
externe SGBD)
SGBD)
(independente
(independente dede
Faza 3: SGBD)
SGBD)
Alegerea unui
SGBD
Faza 4: Proiectarea
Proiectarea schemei
schemei
conceptual
conceptual si
si aa
Proiectare schemelor
schemelor
logica externe(dependente
externe(dependente de de
SGBD)
SGBD)
Faza 5: Proiectarea schemei
interne
Proiectare
fizica (dependent de SGBD)
Instructiuni
Instructiuni de
de Implemantarea
Faza 6:
descriere
descriere aa datelor
datelor tranzactiilor
Implementare (LDD)
(LDD)
(dependente de
(dependete
(dependete de
de SGBD)
SGBD) SGBD)
Prima categorie de activităţi se referă la proiectarea structurii şi a conţinutului bazei de date, iar cea
de-a doua categorie se referă la proiectarea modului de prelucrare a datelor.
Aceste două categorii de activităţi sunt strâns corelate: toate prelucrările care se efectuează în
tranzacţii depind de structura datelor memorate, iar proiectarea fizică a bazei de date depinde de prelucrările
necesare în tranzacţii.
Cele şase faze de proiectare şi implementare enumerate mai sus nu se desfăşoară strict într-o singură
secvenţă.În multe cazuri este necesară modificarea proiectului dintr-o fază iniţială într-una din fazele
ulterioare, pentru a se obţine rezultatele dorite. Aceste bucle de reacţie între faze (sau în interiorul unei faze)
sunt, în general frecvente în cursul proiectării unei baze de date, dar nu au mai fost reprezentate în figura de
mai sus, pentru a nu complica diagrama respectivă.
Fazele cele mai importanate de proiectare a unei baze de date sunt fazele 2,4 si 5. Faza 1 in care se
colectează informatiile despre cerintele de utilizare a bazei de date si faza 6,de implementare a datelor si a
tranzactiilor pot sa nu fie considerate ca parte a procesului de proiectere a bazei de date, ci ca parte de a ciclui
de viata a sistemului din care face parte baza de date.Faza 3 de alegere a sistemului de gestiune a bazei de date
este mai putin o faza de proiectare ci mai curand o faza de decizie,in care factorii economici au pondere la fel
de importanta ca si factorii tehnici.
II. Colectarea si analiza cerintelor
Inainte de a se proiecta efectiv o bază de date, este necesar să se cunoască ce rezultate se aşteaptă
utilizatorii potenţiali să obţină de la baza de date respectivă şi ce informaţii primare sunt disponibile pentru
aceasta.
De asemenea, este necesar să se cunoască ce aplicaţii se vor efectua (aplicaţii de gestiune a stocurilor,
aplicaţii contabile, aplicaţii de urmărire a consumurilor, aplicaţii de salarizare, etc.).
Toate aceste activităţi oferă informaţii slab structurate, în general în limbaj natural, pe baza cărora se pot
construi diagrame, tabele, grafice, etc., manual sau folosind diferite instrumente software de proiectare.
Această fază este puternic consumatoare de timp, dar este crucială pentru succesul sistemului informatic.
Pentru proiectarea schemei conceptuale se identifică elementele esenţiale ale acesteia: tipurile de entităţi şi
atributele lor precum şi asocierile dintre aceste tipuri. Se pot defini, dacă este necesar, subtipuri, prin specializări ale
tipurilor de bază, sau supertipuri, prin generalizări ale tipurilor deja definite. Acest proiect conceptual de nivel înalt este
realizat pe baza cerinţelor definite în prima etapă de proiectare şi se reprezintă, în general printr-o diagramă Entitate-
Asociere (extinsă).
Fiind dat un set de cerinţe, pentru un singur utilizator sau pentru mai mulţi utilizatori ai bazei de date,
proiectarea schemei conceptuale care să satisfacă aceste cerinţe se poate aborda într-o varietate de strategii,
dintre care cele mai relevante sunt proiectarea ascendentă (bottom-up) şi proiectarea descendentă (top-down).
Aşadar, în această fază de proiectare se obţine schema conceptuală de nivel înalt a bazei de date, care
este independentă de orice model de date specific (ierarhic, reţea, relaţional, etc.), şi de orice sistem de
gestiune care poate fi folosit pentru realizarea bazei de date.
3.SCHEMA CONCEPTUALA DE NIVEL ÎNALT A BAZEI DE DATE
Entităţi
Tipurile de entităţi puternice (normale) care se pot defini pentru modelarea activitătii unei agentii sunt:
ANGAJAT(Nume,Prenume,Parola,Ghiseu)
PERSOANE(Nume,Prenume,Serie_buletin,Numar_Buletin,CNP)
RUTA(Nr_Km,Nr_bilete_rezervate,Clasa)
TRONSON_Aerian(Data_plecare,Ora_Plecare,Data_sosire,Ora_sosire,Locuri_ramase,Sursa,Destinatie,Vehicul)
TRONSON_Tren(Data_plecare,Ora_Plecare,Data_sosire,Ora_sosire,Locuri_ramase,Sursa,Destinatie,Vehicul)
TRONSON_Autocar(Data_plecare,Ora_Plecare,Data_sosire,Ora_sosire,Locuri_ramase,Sursa,Destinatie,Vehicul)
Aeroporturi(Oras,Aeroporturi)
Gari(Oras,Gari)
Autogari(Oras,Autogari)
Vehicul(Vehicul,Nr_locuri)
Tara(Tari)
Asocieri
Asocierile dintre mulţimile de entităţi se stabilesc în funcţie de modul în care se desfăşoară activitatea modelată.
De exemplu, dacă agentia respectivă activitatea este organizată pe mai multe birouri(ghisee) şi fiecare angajat
lucrează într-unul (şi numai unul) din birouri,si se ocupa de cate o rezervare la un anumit moment(nu realizeaza
mai multe rezervari concomitent) atunci între mulţimile de entităţi ANGAJAT-REZERVARI există o asociere
1:N.
Asocierea PERSOANE-REZERVARI este o asociere M:N dacă se consideră că opersoana poate sa faca mai
multe rezervari si o rezervare poate sa contina mai multe persoane .
O ruta este compusa din mai multe tronsoane şi fiecare tronson poate fi inclus în mai multe, rute; deci asocierea
RUTA-TRONSON este este M:N.
O mulţime de entităţi slabe se află, de regulă, în asociere N:1 cu mulţimea de entităţi puternice de care depinde.
In exemplul dat, între mulţimea AEROPORTURI şi mulţimea de entităţi ORAS există o asociere N:1.
Astfel de atribute (pentru definirea cheilor străine) nu există în modelul E-A şi ele trebuie să fie adăugate
în modelul relaţional pentru definirea asocierii N:1, aşa cum în modelul ierarhic pentru o astfel de asociere se
adaugă link-uri (pointeri) între noduri. Asocierea binară N:1 poate apare şi ca asociere între o relaţie
corespunzătoare unei mulţimi de entităţi slabe şi relaţia corespunzătoare mulţimii de entităţi puternice de care
aceasta depinde, aşa cum a fost prezentată mai sus.
3.2 Asocierea binară M:N
Asocierea binară M:N dintre două mulţimi de entităţi din diagrama E-A se realizează în modelul
relaţional prin intermediul unei noi relaţii, numită relaţie de asociere. Această nouă relaţie se află în asociere
M:1, respectiv N:1 cu fiecare din cele două relaţii date prin intermediul a două chei străine care referă cheile
primare (sau cheile candidate) din relaţiile date.
O relaţie de asociere poate să conţină şi alte atribute în afara cheilor străine, atribute care caracterizează
asocierea dintre relaţiile date. Cheia primară a unei relaţii de asociere binară poate fi o cheie artificială sau poate
fi compusă din cheile străine, eventual împreună cu alte atribute ale relaţiei.
Schema conceptuală a unei baze de date relaţionale poate fi dezvoltată independent de un anumit SGBD,
urmând ca ulterior să se adauge diferite trăsături specifice SGBD-ului folosit. De obicei însă, fiecare SGBD
pune la dispoziţie un număr de instrumente mai mult sau mai puţin „prietenoase” de proiectare a relaţiilor şi a
asocierilor, astfel încât în mod frecvent, proiectul conceptual se dezvoltă de la început în cadrul sistemului
SGBD în care se va realiza baza de date.
De exemplu, Microsoft Access oferă o interfaţă vizuală de proiectare a relaţiilor şi a asocierilor deosebit
de uşor de utilizat. La fel, sistemele SQL Server sau Oracle 10g oferă instrumente grafice pentru proiectarea
vizuală a relaţiilor.
Pentru dezvoltarea ulterioara in bune conditii a proiectului unui sitem de baze de date,atat proiectarea
schemei conceptual
După implementarea sistemului de baze de date vor mai fi identificate şi implementate noi tranzacţii.
Totuşi, cele mai importante tranzacţii sunt cel mai adesea cunoscute înainte de implementarea sistemului.
Dacă operaţiile de acces la baza de date ale unei tranzacţii sunt numai operaţii de citire, acea tranzacţie
se numeşte tranzacţie de citire (read-only transaction) şi controlul concurenţei unor astfel de tranzacţii este
mult mai simplu.
În figura de mai jos este reprezentată diagrama de stare a unei tranzacţii folosind limbajul UML, unde fiecare
stare are o denumire şi fiecare operaţie provoacă o anumită tranziţie între stări.
În starea ACTIVA se ajunge ca urmare a lansării unei tranzacţii prin operaţia begin, iar execuţia corectă
a operaţiilor read sau write nu modifică această stare. Atunci când o tranzacţie se termină, ea trece în starea
PARTIAL VALIDATA în care se efectuează operaţii de verificare impuse de tehnicile (protocoalele) de control
al concurenţei şi de refacere.
Dacă ambele verificări sunt îndeplinite cu succes, atunci tranzacţia este validată (prin execuţia unei
operaţii commit) şi trecută în starea VALIDATA; dacă una sau ambele condiţii nu sunt îndeplinite, tranzacţia
este trecută în starea ABANDONATĂ prin execuţia operaţiei abort.
Starea TERMINATĂ este consecinţa imediată a atingerii uneia din stările VALIDATĂ sau
ABANDONATĂ şi nu necesită nici o altă operaţie pentru efectuarea acestei tranziţii.În cursul stării ACTIVĂ,
orice tranzacţie poate fi abandonată (şi trecută în starea ABANDONATĂ prin execuţia unei operaţii abort),
dacă diferite verificări efectuate nu sunt îndeplinite.
Pentru refacerea bazei de date în condiţiile în care unele tranzacţii sunt abandonate sau în care pot
apărea defecte de funcţionare, sistemul SGBD menţine un fişier jurnal, în care memorează operaţiile efectuate
de tranzacţii. Fişierul jurnal este memorat pe disc şi nu este afectat de diferite erori de execuţie, cu excepţia unei
defectări catastrofice a discului. În plus, fişierul jurnal este salvat periodic pe un suport auxiliar (bandă
magnetică), ca o măsură de prevedere pentru astfel de defecte catastrofice.
În fişierul jurnal (log file) se înregistrează operaţiile efectuate de fiecare tranzacţie, identificată printr-un
identificator unic (T) generat de sistem.
La fiecare operaţie write(X) executată de o tranzacţie T, în fişierul jurnal se memorează o înregistrare de tipul
[write,T,X,vechea_valoare,noua_valoare], dacă pentru refacerea datelor se folosesc operaţii undo, sau o
înregistrare de tipul [write,T,X,noua_ valoare], dacă se folosesc operaţii redo.
Sistemele care nu evită abandonarea în cascadă a tranzacţiilor înregistrează în fişierul jurnal şi operaţiile
de citire read(X), printr-o înregistrare de tipul [read,T,X,valoare].
Pentru fiecare tranzacţie T, în fişierul jurnal se mai memorează starea de terminare: validată (printr-o
înregistrare [commit,T] ) sau anulată (printr-o înregistrare[rollback,T]). După executarea validării şi
înregistrarea ei în fişierul jurnal, efectul tranzacţiei este permanent memorat în baza de date.
Dacă sistemul se defectează, la reluarea execuţiei după îndepărtarea defectului, sistemul SGBD va aduce
baza de date într-o stare consistentă prin examinarea fişierului jurnal.
Dat fiind că fişierul jurnal conţine o înregistrare pentru fiecare operaţie de scriere care a modificat valoarea unui
articol al bazei de date, este posibil de a anula efectul tuturor operaţiilor de scriere efectuate de o tranzacţie care
a fost lansată dar nu a fost validată, parcurgând înapoi fişierul jurnal şi înlocuind valoarea existentă a articolului
modificat cu vechea valoare, memorată în fişierul jurnal.
În cazul abandonării în cascadă, trebuie să fie abandonate şi tranzacţiile care au citit valori modificate de
tranzacţiile abandonate.
V. Prezentare Mysql WorkBench
1. Mysql WorkBench
1.1.Introducere
Acest capitol introductiv scoate in evidenta facilitatile oferite de Mysql WorkBench si de produsele sale
punandu-le in contextul instrumentelor si tehnologiilor.Acest capitol explica de asemenea principiile de baza ale
bazelor de date relationale.
Mysql WorkBench este o versiune free acelui mai capabil soft de dezvoltare de baze de date relationale.
Mysql WorkBench este usor de instalat si usor de folosit.
Aplicatiile Mysql WorkBench trebuie rulate pe acelasi computer la fel ca si Serverul Mysql.
Alternativ,aplicatiile si utilitarele utilizate de ele pot sa fie rulate pe un sistem local pentru utilizator (sistemul
'client'),in timp ce Mysql DBMS ruleaza pe un altul (sistemul 'server').
In acest mediu 'client-server',un numar mare de resurse de calcul pot fi rulate.
De exemplu,o aplicatie ' Mysql Forms' poate rula pe un computer personal client,in timp ce accesarea datelor
este condusa conventional de un Server Mysql pe un computer central.
3.ABORDAREA RELATIONALA
3.1 Abordarea relationala
Principiile modelului relational au fost pentru prima data expuse de Dr. E. F.Codd,care in iunie 1970 a
publicat un articol numit 'Un model relational de date pentru marile banci de date'.In acest articol Dr. Codd a
propus modelul 'relational' pentru sistemele de baze de date.
Baza de date relationala este perceputa de utilizatorii sai ca o colectie de tabele bidimensionale care sunt
usor de inteles.Sunt doar patru concepte de inteles:
tabele
coloane
randuri
campuri
Modelul relational imita procesele unei ramuri a algebrei cunoscute sub numele de 'Algebra relationala'.
Aceste procese implica:
o colectie de obiecte cunoscute sub numele de RELATII
o multime de operatori ce actioneza asupra relatiilor pentru a produce noi relatii.
O relatie poate fi inteleasa ca o Tabela.Modificarea datelor este realizata prin operatiile relationale
aplicate asupre tabelelor.
Exemplu:
CREATE TABLE DEPT
(DEPTNO NUMBER(2),
DNAME VARCHAR2(12),
LOC VARCHAR2(12));
OPTIUNEA DEFAULT
Unei coloane ii poate fi data o valoare implicita prin optiunea DEFAULT. Aceasta previne aparitia de
null-uri (sau erori, daca NOT NULL este specificata) daca o linie este inserata fara o valoare din
coloana.Valorile implicite pot fi literali, o expresie, dar nu numele altei coloane. Functii ca SYSDATE si USER
sunt valide.
a. Constrangeri de tabela
Acestea pot referi una sau mai multe coloane si sunt definite SEPARAT de definitiile coloanelor din tabela.
b. Constrangeri de coloana
Acestea refera o singura coloana si sunt definite INAUNTRUL specificatiei pentru coloana posesoare.
Constrangerile pot fi adaugate unei tabele dupa crearea ei si deasemenea temporar dezactivate .Toate detaliile
despre constrangeri sunt stocate in Dictionarul de Date. Fiecarei constrangeri ii este repartizat un nume. Iti este
mai usor sa suplimentezi una tu singur, astfel ca poate fi mai usor referita mai tarziu,dar daca nu, atunci un
nume este generat automat pe forma: SYS_Cn
unde n este un numar unic. Cuvantul cheie CONSTRAINT iti permite sa numesti o noua constrangere tu insuti.
LOC VARCHAR2(10),
Aceeasi combinatie de coloane nu poate fi folosita si pentru o cheie primara si pentru una unica. Urmatorul
exemplu defineste DEPTNO ca o cheie primara folosind o constrangere de coloana:
CREATE TABLE DEPT
Sintaxa:
ALTER TABLE nume-tabela
[ ADD ](specificator coloana[constrangere de coloana])[ENABLE clauza ]
[MODIFY ] [DISABLE clauza]
[DROP optiuni]
Clauza ADD
Folositi cuvantul cheie ADD pentru a adauga o coloana si/sau constrangeri pentru o tabela.
Clauza MODIFY
Folositi cuvantul cheie MODIFY pentru a modifica definitia unei coloane existente.
Pentru a modifica alte constrangeri trebuie sa se elimine si apoi sa se adauge specificand modificarile.
Clauza DROP
Se foloseste clauza DROP pentru a muta o constrangere din alta tabela.
Sintaxa:
ALTER TABLE nume tabela
DROP[CONSTRAINT nume constrangere ] [CASCADE]
[PRIMARY KEY]
[UNIQUE (coloana, coloana, ...)]
Clauza ENABLE/DISABLE
Aceasta clauza a comenzii ALTER TABLE permite constrangerilor sa fie facute posibile sau
dezactivate fara a le elimina sau recrea.
Sintaxa:
[DISABLE] [ UNIQUE (coloana, coloana, ...) ] [CASCADE]
[ENABLE ] [ PRIMARY KEY ]
[ CONSTRAINT nume constrangere ]
Ca si la clauza DROP, adaugarea cuvantului cheie CASCADE semnifica ca constrangerile dependente sunt
deasemenea afectate.
Comanda COMMENT
Se foloseste comanda COMMENT pentru a insera un comentariu pana la 255 de caractere, despre o
tabela sau coloana, in dictionarul de date. Pentru a sterge un comentariu, emiteti comanda COMMENT fara un
comentariu:
COMMENT ON COLUMN EMP.EMPNO IS '';
,/pre>
Pentru a vedea comentariul, selectati coloana COMMENTS din una din vederile dictionarului:
ALL_COL_COMMENTS sau USER_COL_COMMENTS.
Comanda RENAME
Comanda RENAME este folosita de creatorul lui TABLES, VIEWS si SYNONYMS pentru a schimba
numele obiectului bazei de date. Pentru a redenumi un obiect al bazei de date sintaxa este:
RENAME vechi TO nou;
Este important de notat ca orice aplicatii/programe/rapoarte care se refera la obiecte ce au fost
redenumite, trebuie amendate.
Este posibila inserarea unei noi linii cu valori in fiecare coloana, in care caz lista de coloane nu este
ceruta. Este recomandat ca COLUMN LIST sa fie intotdeauna specificata. Daca lista nu este specificata,
software-ul va cere modificari oriunde definitia tabelei este modificata.Valorile CHARACTER si DATE trebuie
puse in ghilimele simple.
Aceasta forma a declaratiei INSERT permite sa se insereze cateva linii intr-o tabela unde valorile sunt
derivate din continutul tabelelor existente in baza de date.
Daca clauza WHERE este omisa, toate liniile din tabela vor fi actualizate. Este posibil sa folositi subcereri inlantuite si
subcereri corelate in declaratia UPDATE.
Schimbarile listate in tabela COMMISSION pot fi aplicate tabelei EMP, folosind o subcerere corelata si o
subcerere inlantuita, ca mai jos:
1.Tabelul Persoane
Dupa cum se poate vedea acest tabel contine o cheie primara IdPersoane prin care se face legatura de 1
la N cu tabelul rezervari(o persoana poate face mai multe rezervari) si prin care acesta este unic
identificabil.Pelanga acest camp tabelul mai contine urmatoarele coloane:
Nume - variabila de tip varchar(45),care identifica numele persoanei care a facut rezervarea
Prenume – variabila de tip varchar(45),care identifica prenumele personei care a facut rezervarea
Serie Buletin – reprezinta seria buletinului celui care a facut rezervarea;identifica unui o persoana
Numar bulletin- variabila de tip INT care identifica unuic o persoana
CNP- reprezinta cnp-ul persoanei care a facut rezervarea
Script:
create table Persoane(
IdPersoane primary key not null,
Nume varchar(45),
Prenume varchar(45),
SerieBuletin varchar(45),
NumarBuletin int,
Cnp int,);
2.Tabelul Bilete
Acest tabel contine o cheie primara IdBilete prin care se realizeaza identificarea unuica,si o cheie straina
idRezervari prin care se face legatura cu tabelul Rezervari.Legatura este de tipul N la 1(mai multe bilete la o
rezervare).
Serie – variabia de tip INT care identifica unic un bilet
Data - variabila de tip DATETIME care identifica data la care are loc calatoria
Pozitie - variabila de tip varchar(20),care reprezinta pozitia posesorului biletului in mijlocul de
transport
Ora – indica ora la care are loc plecarea
Bagaje – indica daca posesorul biletului are bagaje sau nu(este de tip boolean)
Clasa- indica clasa la care a fost achizitionat biletul(ex.clasa I sau clasa II)
Script:
Create table Bilete(
IdBilete primary key not null,
Serie int,
Data DATETIME,
Pozitie varchar(20),
Ora TIME,
Bagaje Boolean,
Clasa varchar(20),
IdRezervari foreign key references Rezervari(IdRezervari),
);
3.Tabelul Rezervari
Acest tabel este unul care contine numai chei.Acesta face legatura intre diferite elemente.Are o cheie primara IdRezervari
care este referita de cheia secundara din bilete.
IdPesoane – cheie secundara care face legatura cu tabelul Persoane
IdPersonal - cheie secundara care realizeaza legatura cu tabelul Angajati
IdVehicul- cheie secundara care face legatura cu tabelul Vehicul
Script:
Create table Rezervari (
IdRezervari primary key not null,
IdPersoane foreign key references Persoane(IdPersoane),
IdPersonal foreign key references Angajati(IdPersonal),
IdVehicul foreign key references Vehicul(IdVehicul),
);
4.Tabelul Angajati
In acest tabel se stocheaza informatii privind ghiseul de la care se face rezervarea si tot el face trimitere care
tabelul Identitate care ca informatii despre angajatul are face rezervarea(este o detaliere).
IdPersonal- parte din cheia primara referita de cheia secundara IdPersonal din tabelul Rezervari
Ghiseu – variabila de tip INT care da detalii despre numarul ghiseului de la care se face rezervarea
IdIdentitate- parte din cheia primara a tabelului prin care se realizeaza o relatie de 1 la 1
Script:
Create Table Angajati (
IdPersonal primary key not null,
Ghiseu int,
IdIdentitate primary key not null,
);
5.Tabelul Identitate
Acest tabel ofera informatii despre angajatul care face rezervarea.
IdIdentitate- cheie primara prin care se realizeza relatia de 1 la 1 cu tabelul Angajati
Nume- variabila de tip varchar(20) care da numele angajatului
Prenume- variabila de tip varchar(20) care da prenumele angajatului
Salariu- variabila de tip INT in care se afla informatii despre salariul angajatului.
Script:
Create table Identitate(
IdIdentitate primary key not null,
Nume varchar(20),
Prenume varchar(20),
Salariu int,
);
6.Tabelul Vehicul
Acest tabel da informatii despre vehiculul cu care se face calatoria si face legatura cu tabelul Ruta.
IdVehicul – cheie primara care este referita de cheia secundara IdVehicul din tabelul Rezervari si prin care se
realizeaza legatura
Denumire_vehicul – variabila de tip VarChar(20) prin care se specifica tipul de vehicul cu care se face
calatoria(Tren,Avion,Autocar)
IdRuta – cheie straina prin care se face legatura cu tabelul Ruta
Script:
Create table Vehicul(
IdVehicul primary key not null,
Denumire_Vehicul varchar(20),
IdRuta foreign key references Ruta(IdRuta),
);
7.Tabelul Ruta
Acest tabel furnizeaza date despre rut ape care se face transportul,despre durata calatoriei,numarul total de bilete alocate
rutei respective si numarul de bilete ramase nerezervate.
IdRuta – cheie primara referita de cheia secundare IdRuta din tabelul vehicule
Nr_KM- variabila de tip intreg care precizeaza numarul de Km al traseului
Durata_medie- precizeaza durata calatoriei in conditii favorabile
Numar bilete total – precizeaza numarul de bilete de pe o anumita cursa
Numar_bilete_ramase – precizeaza cate bilete mai sunt nerezervate
Script:
Create table Ruta(
IdRuta primary key not null,
Nr_Km int,
Durata_medie int,
Numar bilete total int,
Numar bilete ramase int,
);
8.Tabelele Ruta2,Ruta3,Ruta4
Aceste table contin doar chei,si servesc la realizarea unor legaturi N la M.O sa dau scripturile de creare doar
pentru un singur tabel,pentru restul fiind similare.
Script:
Create table Ruta2(
IdRuta2 primary key not null,
IdTronson foreign key references Tronson_Aerian(Cursa Avion),
IdRuta foreign key references Ruta(IdRuta),
);
9.Tabelul Tronson_Aerian
Acest tabel specifica faptul ca transportul de calatori se face cu avionul .
Cursa avion- cheie primara referita de cheia straina IdTronson din Ruta2
Sursa- cheie straina care refera cheia primara din Aeroporturi
Destinatie- cheie straina care refera cheia primara din Aeroporturi
Script:
Create table Tronson_Aerian(
Cursa avion primary key nor null,
Sursa foreign key references Aeroporturi(IdAeroporturi)
Destinatie foreign key references Aeroporturi(IdAeroporturi)
);
10.Tabelul Tronson_Tren
Acest tabel specifica faptul ca transportul de calatori se face cu trenul .
Cursa tren- cheie primara referita de cheia straina IdTronson din Ruta3
Sursa- cheie straina care refera cheia primara din Gari
Destinatie- cheie straina care refera cheia primara din Gari
Script:
Create table Tronson_Tren(
Cursa tren primary key not null,
Sursa foreign key references Gari(IdGari)
Destinatie foreign key references Gari(IdGari)
);
Script:
Create table Tronson_Autocar(
Cursa autocar primary key not null,
Sursa foreign key references Autogari(IdAutogari),
Destinatie foreign key references Autogari(IdAutogari),
);
12.Tabelul Aeroporturi
Acest tabel face legatura cu tabelul Orase pentru a putea alege dintre orase ca sursa si ca destinatie.
IdAeroporturi-cheie primara care identifica unic tabelul
Aeroporturi-variabila care indica numele aeroportului
IdOras – cheie straina care refera cheia primara IdOras din tabelul Oras
Script:
Create table Aeroporturi(
IdAeroporturi primary key not null,
Aeroporturi varchar(45),
IdOras foreign key references Oras(IdOras),
);
13.Tabel Gari
Acest tabel face legatura cu tabelul Orase pentru a putea alege dintre orase ca sursa si ca destinatie.
IdGari-cheie primara care identifica unic tabelul
Gari- variabila care indica numele garii
IdOras – cheie straina care refera cheia primara IdOras din tabelul Oras
Script:
Create table(
IdGari primary key not null,
Gari varchar(20),
IdOras foreign key references Oras(IdOras)
);
14.Tabel Autogari
Acest tabel face legatura cu tabelul Orase pentru a putea alege dintre orase ca sursa si ca destinatie.
IdAutogari-cheie primara care identifica unic tabelul
Autogari- variabila care indica numele autogarii
IdOras – cheie straina care refera cheia primara IdOras din tabelul Oras
Script:
Create table(
IdAutogari primary key not null
IdOras foreign key references Oras(IdOras),
Autogari varchar(20)
);
15.Tabelul Oras
Acest tabel contine numele tuturor oraselor in care se afla aeroporturi,gari si autogari.
IdOras-cheie primara care identifica unic tabelul
Orase – variabila de tip Varchar(20) care contine numele oraselor
Tara_IdTara- cheie staina care refera tabelul Tara care specifica numele tarii
Script:
Create table(
IdOras primary key not null,
Orase varchar(20),
Tara_IdTara foreign key references Tara(idTara)
);
16.Tabelul Tara
Acest table specifica numele tarii in caz ca transpotul se face international.
IdTara-cheie primara care identifica unic tabelul
Tari – variabila in care se afla numele tarilor.
Script:
Create table(
IdTara primary key not null,
Tari varchar(20)
);
Dupa definirea tabelelor si a legaturilor dintre ele baza de date arata astfel:
VII.Concluzii
Adaptarea la noile cerinte ale tehnologiei informatiei si comunicatiilor impune eforturi sustinute din
partea proiectantilor si programatorilor de aplicatii, pentru asimilarea noutatilor si integrarea lor în produsele
softw
are rezultate.
Tehnologia MySQL este una de mare actualitate în dezvoltarea aplicatiilor cu baze de date de tip
Internet. Aceasta, deoarece avantajele majore aduse de stocarea si prelucrarea informatiei din bazele de date
sau multiplicat prin facilitatile de comunicatie si facilitatile orientate obiect.
Aplicatiile cu baze de date de tip Internet îsi anunta înca din denumire natura dubla, ca urmare a
coexistentei celor doua elemente(bazele de date si comunicatiile).