This shows you the differences between two versions of the page.
bd:laboratoare:01 [2018/10/08 20:20] fbratiloveanu |
bd:laboratoare:01 [2021/03/02 11:21] (current) ciprian.truica [Obiective] |
||
---|---|---|---|
Line 3: | Line 3: | ||
==== Obiective ==== | ==== Obiective ==== | ||
+ | * SGBD și BD | ||
+ | * Diferitelor tipuri de SGBD-uri | ||
+ | * SGBD și produse Oracle | ||
+ | * Algebra Relațională | ||
+ | * Limbajul SQL | ||
==== Materiale ajutătoare ==== | ==== Materiale ajutătoare ==== | ||
- | ==== Desfășurarea Laboratorului ==== | + | [[bd:resurse:tables|Resurse BD]] |
+ | |||
+ | {{:bd:laboratoare:laborator01.pdf|Laborator 1}} | ||
+ | |||
+ | |||
+ | ==== Noțiuni teoretice ==== | ||
=== Baze de Date și sisteme de gestionare a bazelor de date === | === Baze de Date și sisteme de gestionare a bazelor de date === | ||
+ | O **bază de date** (BD, eng. database - DB) este un ansamblu structurat de date care permite stocarea informațiilor și prelucrarea eficientă a acestora de mai mulți utilizatori într-un mod concurent. | ||
+ | |||
+ | Un **sistem de gestiune a bazelor de date** (SGBD, eng. Data Base Management System - DBMS) este un produs software care asigură interacţiunea cu o bază de date, permiţând definirea, consultarea şi actualizarea datelor din baza de date. Toate cererile de acces la baza de date sunt tratate şi controlate de către SGBD. | ||
+ | |||
=== Baze de date relaționale === | === Baze de date relaționale === | ||
+ | |||
+ | * Conceptul de baze de date relaționale a fost introdus de E.F. Codd în anii ’70 și modelează bazele de date sub formă de tabele și relații între acestea. | ||
+ | * IBM a fost prima companie care a preluat și dezvoltat acest concept (SEQUEL - Structured English QUEry Language), punând la punct limbajul SQL (SEQUEL2) în anul 1976, ulterior dezvoltând DB2 și SQL/DS. | ||
+ | * Oracle Corporation lanseză în 1979 primul produs SQL, cunoscut ca limbajul standard de interogare a unei baze de dare, care a fost standardizat de Institutul Național American de Standarde(ANSI), iar ulterior de Organizația Internațională de Standarde(ISO). | ||
+ | * Standardul curent de SQL este SQL:2011 | ||
+ | |||
+ | |||
+ | |||
=== Oracle SGBD === | === Oracle SGBD === | ||
+ | |||
+ | Există mai multe tipuri de SGBD-uri: | ||
+ | - Relaționale, cele mai cunoscute și utilizate fiind: Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL | ||
+ | - NoSQL: | ||
+ | * Orientate document(Document-oriented Database): MongoDB, Apache CouchDB | ||
+ | * Graf(Graph Database): Neo4J | ||
+ | * Cheie-valoare (Key-Value Database): Riak, Redis | ||
+ | * Orientate obiect(Object database): Caché, ObjectDB | ||
+ | * Orientate coloana(Column-oriented Database): Apache HBase, Cassandra | ||
+ | * etc. | ||
+ | Oracle este cel mai utilizat SGBD-uri din lume (http://db-engines.com/en/ranking). | ||
+ | Primele versiuni de Oracle au fost dezvoltate pentru sistemul VAX/VMX, produs de firma Digital; ulterior au apărut versiuni pentru UNIX (rescris în C), Windows(începând cu versiunea 8) și Linux. | ||
+ | Începând cu versiunea 8i pentru a dezvolta SGBD-ul s-a folosit limbajul de programare Java. | ||
+ | Începând cu versiunea 8i au permis dezvoltarea aplicațiilor care accesează baza de date prin intermediul Internetului. | ||
+ | Pentru a interoga și prelucra informația stocată într-o bază de date, în Oracle se pot folosi următoarele limbaje de programare: | ||
+ | * SQL : este un limbajul de programare dezvoltat special cu scopul de a procesa informația păstrată într-o bază de date (set-oriented language). | ||
+ | * PL/SQL: este un limbaj procedural, construit ca extensie a limbajului SQL, care, pe lângă interogările SQL, folosește structuri de control (if...then, if...then...else, if...then...elsif...else, case ) și bucle (loop, while, for). | ||
+ | Produsele Oracle s-au impus pe piață datorită instrumentelor de dezvoltare oferite, siguranței în exploatarea bazelor de date, gestionarea unui volum mare de date și mai ales datorită nivelurilor de securitate. | ||
+ | |||
+ | |||
+ | |||
=== Alte produse Oracle === | === Alte produse Oracle === | ||
+ | Pentru dezvoltarea de aplicații complexe pot fi folosite și alte produse Oracle, cum ar fi: | ||
+ | * Forms Builder – pentru generarea de interfețe utilizator | ||
+ | * Reports Builder – pentru generarea de rapoarte | ||
+ | * Schema Builder – pentru definirea de tabele și relații între tabele | ||
+ | * Procedure Builder – pentru dezvoltarea și testarea procedurilor | ||
+ | * SQL Developer – IDE pentru dezvoltarea interogărilor SQL și programelor PL/SQL | ||
+ | |||
=== SQL*Plus === | === SQL*Plus === | ||
+ | * SQL*Plus este un interpretor în linie de comandă (CLI – command line interpreter) care este utilizat pentru scrierea și lansarea către motorul bazei de date Oracle a interogărilor SQL și programelor PL/SQL; | ||
+ | * Acesta poate fi folosit pentru manipularea datelor și crearea obiectelor într-o bază de date; | ||
+ | * De asemenea, se poate folosi pentru dezvoltarea și testarea interogărilor și procedurilor înainte de a fi integrate în aplicații și pentru crearea rapidă de rapoarte complexe. | ||
+ | |||
+ | |||
=== Modelarea algebrei relaționale folosind Oracle Database === | === Modelarea algebrei relaționale folosind Oracle Database === | ||
+ | Inspirat din Algebra Relațională, modelul bazelor de date relaționale poate fi considerat drept o colecție de tabele bidimensionale, definite de următoarele concepte: | ||
+ | * O entitate din algebra relațională devine un tabel într-o bază de date; | ||
+ | * Un tabel este format din coloane și linii, iar câmpul este o valoare care se află la intersecția dintre o coloană și o linie; | ||
+ | * O relaţie de asociere este o legătură între două sau mai multe entităţi. Existenţa unei relaţii este subordonată existenţei entităţilor pe care le leagă; | ||
+ | * Un atribut este o proprietate descriptivă a unei entități sau a unei relații. Pentru o enitate tipul atributului devine coloană, reprezentat printr-un nume, iar valoarea efectivă a acestuia, pentru o înregistrare, devine un câmp în tabel. | ||
+ | {{ :bd:laboratoare:modelare_alg_rel_oracle.png?nolink&500 |}} | ||
+ | |||
=== Operatorii algebrei relaționale === | === Operatorii algebrei relaționale === | ||
+ | |||
+ | Modificarea datelor este realizată prin operațiile relaționale efectuate pe tabele, iar operatorii acționează asupra tabelelor pentru a produce noi relații. | ||
+ | Operatorii relaționali pot fi definiți astfel: | ||
+ | * Proiecția (π) este operația care afișează selectiv anumite coloane din una sau mai multe tabele (submulțime verticală); | ||
+ | * Selecția sau restricția (σ) este o operație care preia și afișează toate liniile, din una sau mai multe tabele, sau numai liniile care îndeplinesc una sau mai multe condiții(submulțime orizontală); | ||
+ | * Produsul (x) este rezultatul obținut prin concatenarea liniilor a două mulțimi de date conform condițiilor specificate; | ||
+ | * Reniunea (U) este rezultatul obținut prin afișarea liniilor comune și neconume dintre două sau mai multe tabele; | ||
+ | * Intersecția (∩) este rezultatul obținut prin afișarea liniilor comune dintre două sau mai multe tabele. | ||
+ | * Diferența (-) este rezultatul obținut prin afișarea liniilor care aparțin numai unei singure tabele conform condițiilor specificate; | ||
+ | * Joinul sau compunerea (⋈)este rezultatul obținut prin concatenarea coloanelor din una sau mai multe tabele conform condițiilor specificare; | ||
+ | * Compunere naturală (natural join ⋈) combină liniile din două relaţii, cu condiţia ca atributele comune să aibă valori identice; | ||
+ | * Semi-compunere (semi-join ⋉ ⋊) – selectează liniile ce aparţin unei singure relaţii, care sunt corelate cu liniile din cea de a doua relaţie; | ||
+ | * Θ-compunere (Θ-join) – combină liniile din două relaţii (nu neaparat corelate), cu condiţia ca valorile atributelor specificate să satisfacă o anumită condiţie; | ||
+ | * Compunere externă (outer join) – combină liniile din două tabele, astfel încât condiţiile de corelare să fie satisfăcute. Liniile din orice relaţie care nu satisfac aceste condiţii sunt completate cu valori null. | ||
+ | |||
+ | |||
+ | |||
=== Controlul asupra bazelor de date === | === Controlul asupra bazelor de date === | ||
+ | Controlul asupra bazelor de date este gestionat de SGBD și resptectă anumite reguli: | ||
+ | * O bază de date relațională apare ca o colecție de tabele definite de către utilizator; | ||
+ | * Utilizatorii nu controlează felul cum este organizată fizic informația; | ||
+ | * Controlul fișierelor de date este gestionat exclusiv de catre sistem; | ||
+ | * Utilizatorul poate defini anumiti parametri de sistem pentru optimizarea aplicațiilor sau pentru diferite setări; | ||
+ | * Accesul la baza de date este gestionat exclusiv de sistem prin executarea de comenzi specifice; | ||
+ | * Rularea aplicațiilor, atât pe server cât și pe mașina client, este gestionată exclusiv de catre sistem. | ||
+ | |||
+ | |||
=== Structura unui tabel === | === Structura unui tabel === | ||
+ | Structura unui tabel trebuie să respecte anumite reguli: | ||
+ | * Să nu existe duplicare de linii și coloane; | ||
+ | * Liniile și coloanele pot să nu respecte o anumită ordine; | ||
+ | * Tipul coloanelor trebuie definit în concordanță cu tipurile de date; | ||
+ | * Relațiile între tabele se fac pe coloane de același tip; | ||
+ | * Valorile sunt atomice. | ||
+ | |||
+ | |||
=== Structura unui baze de date === | === Structura unui baze de date === | ||
+ | O bază de date este formată din următoarele componente: | ||
+ | * O/S block – reprezintă cea mai mică unitate fizică de organizare a datelor într-o bază de date; | ||
+ | * Data files – sunt fișierele de date organizate fizic în limita spațiului alocat; Fișierele de date stochează fizic datele în baza de date; | ||
+ | * Data block – reprezintă cea mai mică unitatre logică de intrare/ieșirea și poate conține unul sau mai multe blocuri fizice; | ||
+ | * Extent – reprezintă o extensie logică a bazei de date reprezentată printr-un număr continuu de blocuri; | ||
+ | * Segment – reprezintă spațiul logic într-un tablespace, acesta poate fi de mai multe tipuri(segmente de index, segmente temporare, segmente de rollback). | ||
+ | * Tablespace – este spațiul logic în care se creează obiectele (tabele, view-uri). O bază de date poate avea mai multe tablespace-uri, iar un tablespace poate avea alocat fizic mai multe fișiere de date(data-files). | ||
+ | {{ :bd:laboratoare:structura_bd.png?nolink&200 |}} | ||
+ | |||
+ | |||
=== Limbajul SQL === | === Limbajul SQL === | ||
+ | - SQL este un limbaj orientat pe seturi (set-oriented language); | ||
+ | - Într-un limbaj procedural sau orientat obiect, un programator procesează informația linie cu linie, însă folosind SQL, un dezvoltator poate să proceseze grupuri de linii. | ||
+ | - Limbajul SQL are următoarele comenzi, grupate în 4 categorii: | ||
+ | * Data Manipulation Language (DML): SELECT, INSERT, UPDATE, DELETE, MERGE | ||
+ | * Data Definition Language (DDL): CREATE, ALTER, DROP, RENAME, TRUNCATE, COMMENT | ||
+ | * Data Control Language (DCL): GRANT, REVOKE | ||
+ | * Transaction Control Language (TCL): COMMIT, ROLLBACK, SAVEPOINT | ||
+ | |||