{"id":263,"date":"2025-02-03T16:01:31","date_gmt":"2025-02-03T14:01:31","guid":{"rendered":"https:\/\/eugo.ro\/?p=263"},"modified":"2025-02-15T15:27:03","modified_gmt":"2025-02-15T13:27:03","slug":"blocuri-pl-sql","status":"publish","type":"post","link":"https:\/\/eugo.ro\/?p=263","title":{"rendered":"Concepte ale bazelor de date relationale"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>O baz\u0103 de date este o colectie de informatii interrelationate gestionate ca o singur\u0103 unitate. Aceast\u0103 definitie este foarte larg\u0103, deoarece exist\u0103 mari diferente intre conceptiile diferitilor produc\u0103tori care pun la dispozitie sisteme de baze de date.<br \/>\nDe exemplu, Oracle Corporation define\u015fte o baz\u0103 de date ca fiind o colectie de fi\u015fiere fizice gestionate de o singur\u0103 instant\u0103 (copie) a produsului software pentru baze de date, \u00een timp ce Microsoft define\u015fte o baz\u0103 de date SQL Server ca fiind o colectie de date \u015fi alte obiecte.<br \/>\nUn obiect al bazei de date este o structur\u0103 de date denumit\u0103, stocat\u0103 \u00een baz\u0103 de<br \/>\ndate, cum ar fi un tabel, o vizualizare sau un index.<\/p>\n<p>Exist\u0103 mari diferente \u00eentre implement\u0103rile furnizorilor de baze de date. \u00cen majoritatea sistemelor de baze de date, datele sunt stocate \u00een mai multe fi\u015fiere fizice, dar \u00een Microsoft Access toate obiectele bazei de date, \u00eempreun\u0103 cu datele care apartin unei baze de date sunt stocate \u00eentr-un singur fi\u015fier fizic.(Un fi\u015fier este o colectie de \u00eenregistr\u0103ri \u00eenrudite stocate ca o singur\u0103 untiate de sistemul de operare al calculatorului.) Totu\u015fi, unul dintre principalele avantaje ale bazelor de date relationale este faptul c\u0103 detaliile de implementare fizic\u0103 sunt separate de definitiile logice ale obiectelor bazei de date, astfel \u00eenc\u00e2t majoritatea utilizatorilor bazei de date nu au nevoie s\u0103 \u015ftie unde (\u015fi cum) sunt stocate obiectele bazei de date \u00een sistemul de fi\u015fiere al calculatorului. De fapt, pe m\u0103sur\u0103 ce veti \u00eenv\u0103ta limbajul SQL , veti vedea c\u0103 nu este nevoie s\u0103 specificati numele unui fi\u015fier fizic \u00eentr-o instruciune SQL dec\u00e2t atunci c\u00e2nd definiti sau modificati\u00a0 obiectele bazei de date.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><strong>Sistem de gestionare a bazei de date (DBMS)<\/strong><\/p>\n<p>Un sistem de gestionare a bazei de date (DBMS database management system) este un produs software furnizat de produc\u0103torul bazei de date. Produse software precum Microsoft Access, Microsoft SQL Server, Oracle Database,Sybase,<br \/>\nDB2,INGRES, MySQL \u015fi Postgre SQL fac parte din categoria DBMS sau, mai corect, DBMS rela\u0143ionale (RDBMS).<\/p>\n<p>RDBMS-urile sunt cunoscute \u015fi sub numele de SGBD-uri. Ambele prescurt\u0103ri vor fi folosite \u00een acest\u0103 expunere.<\/p>\n<p>Sistemul DBMS pune la dispoziiet toate serviciile de baz\u0103 necesare pentru organizarea \u015fi \u00eentretinerea bazei de date, inclusiv urm\u0103toarele:<\/p>\n<ul>\n<li>Transferarea datelor \u00een \u015fi din fi\u015fierele fizice de date, \u00een functie de cerinte.<\/li>\n<li>Gestionarea accesului concurential la date al mai multor utilizatori , inclusiv<br \/>\nprevenirea conflictelor care ar putea fi cauzate de actualiz\u0103rile simultane.<\/li>\n<li>Gestionarea tranzactiilor, astfel \u00eenc\u00e2t toate modific\u0103rile f\u0103cute asupra bazei de<br \/>\ndate printr-o tranzactie s\u0103 fie executate ca o singur\u0103 unitate.Cu alte cuvinte, dac\u0103<br \/>\ntranzactia reu\u015fe\u015fte, toate modific\u0103rile efectuate de tranzactie sunt \u00eenregistrate \u00een baz\u0103<br \/>\nde date; dac\u0103 tranzactia e\u015fueaz\u0103, nici una dintre modific\u0103ri nu este \u00eenregistrat\u0103 \u00een baz\u0103<br \/>\nde date.Totu\u015fi, retineti ca unele sisteme RDBMS nu asigur\u0103 suportul pentru tranzactii.<\/li>\n<li>Accept\u0103 un limbaj de interogare, care reprezint\u0103 sistemul de comenzi folosit<br \/>\nde utilizator pentru a obtine date din baz\u0103 de date.SQL este principalul limbaj folosit<br \/>\npentru sistemele DBMS relationale \u015fi subiectul principal al acestui articol.<\/li>\n<li>Functii pentru salvarea bazei de date \u015fi pentru refacerea bazei de date \u00een urma erorilor.<\/li>\n<li>Mecanisme de securitate pentru \u00eempiedicarea accesului neautorizat la date \u015fi modificare acestora.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><strong>Baz\u0103 de date relational\u0103<\/strong><\/p>\n<p>O baz\u0103 de date relational\u0103 este o baz\u0103 de date care respect\u0103 modelul relational, dezvoltat de Dr.E.F.Codd. Modelul relational prezint\u0103 datele sub forma familiarelor tabele bidimensionale, similar cu o foaie de calcul tabelar. Spre deosebire de o foaie de calcul tabelar, nu este obligatoriu ca datele s\u0103 fie stocate \u00eentr-o form\u0103 tabelar\u0103, iar modelul permite \u015fi combinarea tabelelor (crearea uniunilor (joining), \u00een terminologia relational\u0103) pentru formarea vizualizarilor, care sunt prezentate tot ca tabele bidimensionale. Flexibilitatea extraordinar\u0103 a bazelor de date relationale este dat\u0103 de posibilitatea de a folosi tabelele independent sau \u00een combinatii, f\u0103r\u0103 nici o ierarhie sau secventa predefinita \u00een care trebuie s\u0103 se fac\u0103 accesul la date.<\/p>\n<p>Un model este o reprezentare a obiectelor \u015fi evenimentelor lumii reale \u015fi a asocierilor dintre ele. De fapt, el reprezinta o abstractie asupra aspectelor semnificative ale unei \u201e\u00eentreprinderi\u201c, ale unui sistem real, ignor\u00e2nd propriet\u0103tile accidentale. Modelul este cel pe care utilizatorii trebuie s\u0103-l cunoasc\u0103; implementarea unui model este cea pe care utilizatorii nu este necesar s\u0103 o cunoasc\u0103. Diferenta dintre model \u015fi implementare este, de fapt, un caz special \u015fi important al deosebirii uzuale dintre logic \u015fi fizic.<\/p>\n<p>Modelele se impun prin sintaxa \u015fi prin semantica lor \u015fi, din acest punct de vedere, exist\u0103 trei tipuri fundamentale de modele:<\/p>\n<ul>\n<li>modele care descriu aspectele statice ale procesului modelat<\/li>\n<li>modele care descriu aspectele dinamice ale procesului modelat<\/li>\n<li>modele care descriu aspectele functionale ale procesului modelat<\/li>\n<\/ul>\n<p>Un model de date reprezint\u0103 o colectie integrat\u0103 de concepte necesare<br \/>\ndescrierii:<\/p>\n<ul>\n<li>datelor<\/li>\n<li>relatiilor dintre ele<\/li>\n<li>constr\u00e2ngerilor existente asupra datelor sistemului real analizat<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Modelarea unei baze de date permite trecerea de la perceptia unor fapte din lumea real\u0103 la reprezentarea lor prin date. Modelul de date trebuie s\u0103 reflecte fidel fenomene ale lumii reale, s\u0103 urm\u0103reasc\u0103 evolutia acestei lumi \u015fi comunicarea dintre fenomenele lumii reale.<\/p>\n<p>Modelul trebuie s\u0103 asigure conceptele de baz\u0103 care permit proiectantului bazei de date \u015fi utilizatorilor s\u0103 comunice, f\u0103r\u0103 ambiguit\u0103ti, cuno\u015ftintele lor privind functionarea \u015fi organizarea modelului real analizat. Prin urmare, un model de date<br \/>\ntrebuie s\u0103 reprezinte datele \u015fi s\u0103 le fac\u0103 \u00eentelese.<\/p>\n<p>\u00cen esent\u0103, modelul de date are trei componente:<\/p>\n<ul>\n<li>multime de reguli conform c\u0103rora sunt construite bazele de date (partea structural\u0103);<\/li>\n<li>multime de operatii permise asupra datelor, care sunt utilizate pentru reactualizarea sau reg\u0103sirea datelor (partea de prelucrare);<\/li>\n<li>multime de reguli de integritate, care asigur\u0103 coerenta datelor.<\/li>\n<li>Abordarea general\u0103 a problemei model\u0103rii semantice a datelor se face \u00een patru etape.<\/li>\n<li>Se identific\u0103 o multime de concepte semantice care sunt utile \u00een descrierea lumii reale. Se presupune c\u0103 lumea real\u0103 (modelul real analizat) este format\u0103 din entit\u0103ti care au anumite propriet\u0103ti, c\u0103 fiecare entitate are o identitate, c\u0103 exist\u0103 leg\u0103turi, corelatii \u00eentre entit\u0103ti. Conceptul de corelatie,ca \u015fi cel de entitate, este util, \u00een mod intuitiv, la descrierea modelului.<\/li>\n<li>Se caut\u0103 o multime de obiecte formale, simbolice care sunt utilizate pentru reprezentarea conceptelor semantice anterioare.<\/li>\n<li>Se dau reguli de integritate formale \u015fi generale (constr\u00e2ngeri) care s\u0103 reflecte restrictiile la care este supus modelul<\/li>\n<li>Se define\u015fte o multime de operatori formali prin care pot fi prelucrate \u015fi analizate obiectele formale.<\/li>\n<\/ul>\n<p><em><strong>Modelul entitate-relatie<\/strong><\/em><\/p>\n<p>Diagramele E\/R constituie o tehnic\u0103 de reprezentare a structurii logice a bazei<br \/>\nde date, \u00eentr-o manier\u0103 grafic\u0103. Aceste diagrame ofer\u0103 un mijloc simplu \u015fi inteligibil<br \/>\nde comunicare a caracteristicilor importante ale designului unei anumite baze de date.<br \/>\nDiagrama E\/R este un model de date conceptual de nivel \u00eenalt, independent de<br \/>\nplatforma hardware utilizat\u0103 \u015fi de tipul SGBD-ului. Modelul este constituit din<br \/>\nconcepte care descriu structura bazei de date \u015fi tranzactiile de reg\u0103sire sau<br \/>\nreactualizare asociate.<br \/>\nBaza de date poate fi definit\u0103 ca o multime de date ce modeleaz\u0103 un sistem<br \/>\nreal. Acest sistem este format din obiecte legate \u00eentre ele. Modelul E\/R \u00eemparte<br \/>\nelementele unui sistem real \u00een dou\u0103 categorii: entitati \u015fi relatii (leg\u0103turi, asocieri)<br \/>\n\u00eentre aceste entit\u0103ti. Entitatiile \u015fi leg\u0103turile au anumite caracteristici, numite atribute.<br \/>\nNu trebuie confundat conceptul de relatie, \u00een sensul de asociere, care intervine \u00een<br \/>\ndefinirea diagramei E\/R cu conceptul de relatie care este specific modelului relational.<\/p>\n<p><strong>Entitate<\/strong><\/p>\n<p>Entitatea este un obiect sau un concept, care este semnificativ pentru modelul<br \/>\nreal analizat. O entitate poate fi dependent\u0103 (slab\u0103), existenta sa depinz\u00e2nd de alt\u0103<br \/>\nentitate sau independent\u0103 (tare), caz \u00een care ea nu depinde de existenta altei entit\u0103ti.<br \/>\nEntitatea poate fi persoan\u0103, loc, concept, activitate etc. Prin urmare, ea poate fi<br \/>\nun obiect cu existent\u0103 fizic\u0103, real\u0103 sau poate fi un obiect cu existent\u0103 conceptual\u0103,<br \/>\nabstract\u0103.<br \/>\nCheia primar\u0103 este un identificator unic \u00een cadrul entitatii, f\u0103c\u00e2nd distinctie<br \/>\nintre valori diferite ale acesteia.<\/p>\n<p><em>Cheia primar\u0103:<\/em><\/p>\n<ul>\n<li>trebuie s\u0103 fie unic\u0103 \u015fi cunoscut\u0103 la orice moment;<\/li>\n<li>trebuie s\u0103 fie controlat\u0103 de administratorul bazei;<\/li>\n<li>trebuie s\u0103 nu contin\u0103 informatii descriptive, sa fie simpla si fara ambiguitati;<\/li>\n<li>s\u0103 fie stabil\u0103;<\/li>\n<li>s\u0103 fie familiar\u0103 utilizatorului<\/li>\n<\/ul>\n<p><em>Observatii<\/em><\/p>\n<ul>\n<li>Entit\u0103tile devin tabele \u00een modelele relationale.<\/li>\n<li>In general, entitatile se scriu cu litere mari.<\/li>\n<li>Entitatile sunt substantive, dar nu orice substantiv este o entitate.<br \/>\nTrebuie ignorate substantivele nerelevante.<\/li>\n<li>Pentru fiecare entitate este obligatoriu s\u0103 se dea o descriere detaliat\u0103.<\/li>\n<\/ul>\n<p>Nu pot exista, \u00een aceea\u015fi diagram\u0103, dou\u0103 entitati cu acela\u015fi nume, sau o aceea\u015fi<br \/>\nentitate cu nume diferite.<br \/>\n&nbsp;<br \/>\n<img decoding=\"async\" src=\"https:\/\/eugo.ro\/Baze-date\/IMG\/fig1.png\" alt=\"\" \/><br \/>\n&nbsp;<br \/>\n<!-- Default Statcounter code for eugo.ro\nhttps:\/\/www.eugo.ro --><br \/>\n<script type=\"text\/javascript\">\nvar sc_project=5241295; \nvar sc_invisible=1; \nvar sc_security=\"f184e0a9\"; \n<\/script><br \/>\n<script type=\"text\/javascript\"\nsrc=\"https:\/\/www.statcounter.com\/counter\/counter.js\"\nasync><\/script><br \/>\n<noscript><\/p>\n<div class=\"statcounter\"><a title=\"Web Analytics\"\nhref=\"https:\/\/statcounter.com\/\" target=\"_blank\"><img\nclass=\"statcounter\"\nsrc=\"https:\/\/c.statcounter.com\/5241295\/0\/f184e0a9\/1\/\"\nalt=\"Web Analytics\"\nreferrerPolicy=\"no-referrer-when-downgrade\"><\/a><\/div>\n<p><\/noscript><br \/>\n<!-- End of Statcounter Code --><\/p>\n<ul>\n<li style=\"list-style-type: none;\"><em>to be continued&#8230;:)<\/em><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; O baz\u0103 de date este o colectie de informatii interrelationate gestionate ca o singur\u0103 unitate. Aceast\u0103 definitie este foarte larg\u0103, deoarece exist\u0103 mari diferente intre conceptiile diferitilor produc\u0103tori care pun la dispozitie sisteme de baze de date. De exemplu, Oracle Corporation define\u015fte o baz\u0103 de date ca fiind o colectie de fi\u015fiere fizice gestionate [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-263","post","type-post","status-publish","format-standard","hentry","category-baze-de-date"],"_links":{"self":[{"href":"https:\/\/eugo.ro\/index.php?rest_route=\/wp\/v2\/posts\/263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eugo.ro\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eugo.ro\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eugo.ro\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eugo.ro\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=263"}],"version-history":[{"count":41,"href":"https:\/\/eugo.ro\/index.php?rest_route=\/wp\/v2\/posts\/263\/revisions"}],"predecessor-version":[{"id":426,"href":"https:\/\/eugo.ro\/index.php?rest_route=\/wp\/v2\/posts\/263\/revisions\/426"}],"wp:attachment":[{"href":"https:\/\/eugo.ro\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eugo.ro\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eugo.ro\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}