Differences

This shows you the differences between two versions of the page.

Link to this comparison view

bd:laboratoare:01 [2018/10/08 20:08]
fbratiloveanu
bd:laboratoare:01 [2021/03/02 11:21] (current)
ciprian.truica [Obiective]
Line 1: Line 1:
 ===== Laborator 01 - Introducere ===== ===== Laborator 01 - Introducere =====
 +
 +==== Obiective ====
 +
 +  * SGBD și BD
 +  * Diferitelor tipuri de SGBD-uri
 +  * SGBD și produse Oracle
 +  * Algebra Relațională
 +  * Limbajul SQL
 +==== Materiale ajutătoare ====
 +
 +[[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 ===
 +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 ===
 +
 +  * 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 ===
 +
 +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 ===
 +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 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 ===
 +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 ===
 +
 +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 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 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 ===
 +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 ===
 +  - 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
 +
 +
  
  
bd/laboratoare/01.1539018490.txt.gz · Last modified: 2018/10/08 20:08 by fbratiloveanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0