Combinarea sistemelor de obiecte și relaționale fiind discutate în mod activ în presă - gama de opinii este extrem de Shiro, pornind de la ideea de modele de date aproape identice, care necesită doar o ușoară extindere a uneia dintre ele, la opoziția evidentă, ceea ce duce la concluzia despre imposibilitatea unirii lor. Criticile într-un fel sau altul sunt supuse ambelor modele.
Infrastructura IT pentru întreprinderea dvs.
Combinarea sistemelor de obiecte și relaționale fiind discutate în mod activ în presă - gama de opinii este extrem de Shiro, pornind de la ideea de modele de date aproape identice, care necesită doar o ușoară extindere a uneia dintre ele, la opoziția evidentă, ceea ce duce la concluzia despre imposibilitatea unirii lor. Criticile într-un fel sau altul sunt supuse ambelor modele.
Fără a intra în detalii, se poate spune că deficiențele fiecărui model sunt legate în mod inextricabil de avantajele lor și se opun, de fapt, reciproc. Sisteme relationale (R-sisteme) sunt criticate pentru lipsa de flexibilitate, care este rezultatul (O-sistem) formale (și, prin urmare, gravitatea și stabilitate) și a obiectului - pentru absența de formalitate, care este o consecință a flexibilității. [1,6,7,8, 19,21,22,23]
Această lucrare se bazează pe completitudinea practică a conceptelor relaționale și a obiectului. Scopul acestui articol este de a arăta că aceste concepte absolut nu se contrazic reciproc și nu necesită modificări pentru a fi utilizate într-un sistem comun care posedă toate proprietățile sistemelor obiectuale și relaționale.
Această idee se bazează pe următoarele afirmații:
- Același set de date poate fi descris simultan de mai multe modele diferite
- Modelele relaționale și obiect sunt modele diferite.
- Structura oricărei complexități poate fi normalizată.
Să luăm în considerare aceste afirmații în detaliu
Același set de date poate fi descris simultan prin diferite modele
Ce poate fi înțeles în cadrul diferitelor modele de date? Se poate considera acest lucru din punctul de vedere al clasificării modelelor de date. În prezent, se disting trei niveluri de modelare a zonei aplicate: conceptuale, logice și fizice [18,20]. În acest exemplu, puteți selecta modele de nivel conceptual (modelul obiect C ++) și stratul fizic (modelul RAM). Astfel, se poate presupune că diferite modele sunt legate de nivele diferite. Cu toate acestea, o astfel de definiție este foarte arbitrară.
Diferitele modele de date pot fi numite modele ortogonale. Definiția modelelor ortogonale este foarte netrivială. În acest articol interesant este consecința ortogonalitatea (bazată pe faptul că modelul de date poate fi definit ca setul de posibile tipuri de date [2]): orice tip de date definite în modelul M * este perpendiculară pe modelul M poate fi considerat în modelul M doar ca un scalar (de bază) [6,8,10,12,13,15]. În exemplul de mai sus, aceste tipuri scalare utilizate în modelul de obiect C ++ sunt tipurile de bază int, char și așa mai departe. Descrierea eventualelor tipuri de elemente de stocare a datelor, adică definite în modelul RAM. Astfel, putem spune că același set de date poate fi descris simultan de mai multe modele ortogonale.
Modele relaționale și obiect - diferite modele
Modelele relaționale și obiect se referă la diferite nivele de modelare a domeniului de aplicație. Modelul relațional se referă la nivelul logic al modelării, modelul obiect este conceptual. Pentru a determina mai clar diferența dintre aceste modele, luați în considerare sistemele bazate pe acestea.
Un sistem poate fi numit un set de regularități care determină existența și interacțiunea elementelor acestui sistem. Pentru a descrie un anumit sistem, introducem următoarele operații.
- Operația ADR (X) (unde X este un element al sistemului) este necesară și suficientă pentru identificarea fără echivoc a elementului X al sistemului, adică ADR (Xi) 1 = ADR (Xj) (pentru Xi = Xj) și ADR (Xi) = ADR (Xj) (pentru Xi = Xj). Returnează valoarea necesară pentru identificarea fără echivoc a elementului X.
- Operațiunea IS (X) returnează tipul elementului X. Deoarece tipul poate fi definit ca un set de nume de atribute, atunci putem spune că în sistem există un anumit set este unirea tuturor seturilor de nume de atribute de toate tipurile, care vor fi în continuare numit spațiul definirea tipurilor. Astfel, operația IS (X) proiectează elementul X în spațiul de definire a tipului.
Trebuie remarcat faptul că în cazul general, spațiul de definire a tipurilor sistemului O este complex și multidimensional, care rezultă din varietatea căilor de tipificare în acest sistem [5,18]. Una dintre aceste metode este moștenirea. Această metodă este inerentă numai în sistemele O și ne permite să utilizăm tipurile existente, mai generale în sens, de bază atunci când definim noi tipuri. Datorită moștenirii în sistemele O, același atribut poate fi definit în diferite tipuri. În ilustrație, clasa B este moștenitorul clasei A și, prin urmare, atributul definit în clasa A este de asemenea definit în succesorul clasei B. [1,5,16]
Fig. 1. Cea mai simplă implementare a sistemului O
Pentru a descrie sistemul R-spațiu trebuie să ne amintim conceptul klyuche.Eto este o cheie pentru R-sisteme și este definită după cum urmează: relația cheie este un subset în cadrul setului de relații nume de atribute care Tuples relație poate fi identificate în mod unic valorile atributelor corespunzătoare ale acestui subseturi. Astfel, cheia constă dintr-un set de valori care identifică în mod unic orice rând din tabel. O anumită valoare a câmpului cheie (sau câmpuri) care aparțin înregistrarea unui tabel, ne permite să găsim această intrare în tabel. [1,4]
Pentru identificarea unică a tuplei X a unei relații R, operația ADR (X) ar trebui să returneze o expresie a formulei (R, K), care sună ca și tasta K a tuplei X a relației R unde R = IS (X). Această definiție se bazează pe conceptul unei chei străine, care poate fi numită analogul R al referințelor și indicilor sistemelor O. O definiție de acest tip ne permite să introducem mecanismul de susținere a integrității referențiale în sistemul R (figura 2), care nu permite alocarea unei valori de referință (cheie externă) la valoarea care iese din intervalul valorii cheie cheie a relației corespunzătoare.
Dacă comparăm spațiile sistemelor R și O, putem observa două diferențe:
2. În spațiul de definire a tipului: Fig.1 ilustrează moștenirea - unul dintre conceptele-cheie ale sistemelor O. În figură, clasa B este moștenitorul clasei A.
Proprietățile de bază ale sistemului care combină sistemele R și O ar trebui să fie compuse din proprietățile inerente fiecăruia dintre aceste sisteme separat. prin urmare
- toate datele disponibile într-un astfel de sistem ar trebui reprezentate ca obiecte ale unei structuri permisive.
- toate datele disponibile într-un astfel de sistem ar trebui reprezentate sub forma unor variabile relaționale [9]
Aceste argumente ne conduc la introducerea în sistemul R a conceptului de identificator RecID, care permite determinarea unică a oricărei tuple a sistemului. Trebuie notat faptul că câmpul care conține RecID este cheia pentru orice tabel, deși nu poate fi definită explicit ca o cheie.
Introducerea RecID nu este deosebit de dificilă. Înțelesul, totuși, nu este în RecID în sine. Este important să utilizați valoarea sa pentru a iniția referințe (sau pointeri) care permit altor părți ale sistemului să acceseze această tuplă. Putem considera două cazuri:
Aplicarea moștenirii la relații
Să ne uităm din nou la figura (1) care descrie spațiul sistemului O. Clasa B este o subclasă de A. Astfel, pentru operația IS (Bi) (în cazul în care Bi - obiect de clasă B) sunt două opțiuni pentru răspunsul corect - clasa A și clasa B. Se poate spune că este (Bi) = IS (Aj) este în timpul ca IS (Ai)! = IS (Bj). Acest model este o consecință a flexibilității sistemelor O în capacitatea lor de a determina noi tipuri.
Cu toate acestea, deoarece diferite modele pot fi folosite simultan pentru a descrie același set de date, se poate presupune că modelele relaționale și obiect pot fi utilizate pentru aceasta. Pentru a face acest lucru, aceste modele ar trebui considerate drept ortogonale. Și pentru a corela aceste modele, amintim asta
Structura oricărei complexități poate fi normalizată
Pentru a înțelege ce vrem să spunem, să ne întoarcem la exemplul programului salvează datele în memoria RAM. Putem spune că orice informație (cel puțin până acum a fost posibilă) pot fi stocate în memoria RAM. informații despre Corespunzător un obiect fasonată (aici presupunem că orice program într-un fel sau altul este o metodă de modelare un anumit domeniu) este un anumit set de elemente de memorie. Ceea ce este important este faptul că acest lucru este valabil pentru orice program, indiferent dacă este scris în C, Fortran sau de asamblare (toate limbile folosesc diferite paradigme de programare și nu obiect) - în orice caz, puteți pune un obiect modelat asociat cu un anumit set de elemente de memorie, stocarea datelor despre acest obiect. Avantajul sistemelor obiect este faptul că acestea permit doar pus în mod explicit în obiectul corespunde zonei simulate identificabile și semnificativ (sau, pe de altă parte, având o structură specifică), un set de elemente de memorie, care, de asemenea, (în ceea ce privește G-sisteme) se numește un obiect.
Un raționament similar este valabil și pentru un obiect a cărui date trebuie să fie stocate într-o bază de date relațională. Din faptul că obiectul unei structuri interne arbitrare de informații pot fi stocate într-un sistem relațional, este necesar să se facă următoarea concluzie: orice obiect poate fi asociat cu un set identificabil și semnificativ de tupluri.
Să considerăm această dispoziție în parte:
1) obiectul este un set identificabil de tupluri. Un set de tupluri care conțin date despre un obiect poate fi asociat cu un identificator unic, care este de fapt un identificator de obiect (OID), prin care se poate face trimitere la un anumit set de tupluri;
2) obiectul este un set semnificativ de tuple. Obiectul este descris de un tip, la fiecare atribut al căruia am plasat o anumită valoare semantică în corespondență. Această valoare semantică determină semnificația tuplului în obiect și, în plus, îl determină să se refere la acest tuplu ca atribut al obiectului.
Este foarte important să înțelegem că punctul aici este despre sensul care este inerent în corteg ca atribut al obiectului. Faptul este că orice tuplă poate avea propriul ei înțeles, iar acest înțeles este determinat de relația în care intră acest corteg. Tuplul în sine este un set de date semantic semnificativ. Și acest set de date semnificativ este de asemenea semnificativ în contextul obiectului, al cărui atribut este. Nu există nici o contradicție în acest sens. Luați în considerare următorul exemplu.
În exemplul nostru, avem de-a face cu clasele (modelul obiect) și cu relațiile (modelul relațional). Deoarece obiectul și modelele relaționale pot fi considerate drept ortogonale, acest exemplu poate fi ilustrat după cum urmează (Figura 4)
Fig. 4. Sistemul R * O