Usuari:Sergi/Temari/Tema 38 Modelo de datos relacional. Estructuras. Operaciones. Álgebra relacional.

De Acacha

Dreceres ràpides: navegació, cerca

Contingut

Història del model de dades relacional. Model de Codd

L'any 1970 Codd va introduir un nou model de base de dades anomenat relacional que es va crear amb l'objectiu de millorar els inconvenients dels models de bases de dades d'aquella època (jeràrquic i xarxa). El model va ser introduït al 1970 però no va ser fins a finals d'aquesta dècada, que gràcies a l'aportació de l' algebra relacional.

El principal avantatge del model relacional respecte al jeràrquic o en xarxa és que no necessita d'estructures extres (grafs o arbres) per a representar les dades. Les pròpies dades defineixen les relacions entre objectes de la base de dades.

Els objectius del model relacional són:

  • Independència física: el mode en que s'emmagatzemen les dades físicament no afecta a la seva manipulació lògica
  • Independència lògica: la manipulació de dades (operacions de DML com afegir. modificar i eliminar) no afecten al codi del programes que utilitzen la base de dades.
  • Flexibilitat: poder presentar als usuaris les dades en la forma que ell prefereixi (mitjançant p. ex. consultes i vistes)
  • Uniformitat: les estructures lògiques presenten una interfície uniforme fet que facilita la seva comprensió i manipulació per part dels usuaris
  • Senzillesa

El concepte més important del model relacional és la relació - taula - com a estructura bàsica del model.

Un altre part important de les bases de dades relacionals és la teoria de la normalització que veurem més endavant en aquest tema.

Les dotze regles de Codd

Estructura d'una base de dades relacional

Terminologia relacional i equivalències en taules

Figura 1.0: Trabajo (Código, Nombre, Posición, Salario), donde Código es la Clave Primaria
  • Relació = taula o arxiu
  • Tupla = registre o fila
  • Atribut = camp de la base de dades o columna
  • Clau: codi d'identificació d'una fila o tupla (realització concreta d'una relació)
  • Clau candidata: és una clau que no és la primària però que distingeix de forma unívoca les tuples d'una relació
  • Clau primària: clau candidata escollida
  • Clau forània: clau que apunta a la clau primària d'una altra relació.

Recursos:

Relació (taula) i tupla (fila o registre)

La relació és l'element bàsic de model relacional i pot ser representat per una taula.

Per a cada relació podem observar un conjunt de columnes denominades atributs que representen les propietats de la relació i que estan caracteritzades per un nom. L'altre component important són els registres o tuples que són les ocurrències de la relació.

Una relació sempre té un nom que la caracteritza i esta composta per dos parts:

  • Una capçalera (o esquema de relació o intensió) que defineix l'estructura de la taula (la seva part estàtica). Aquí es guarden les metadades de a relació
  • Un cos o extensió format per un conjunt de tuples (la seva part dinàmica). Aquí s'emmagatzemen les dades.

Hi han dos indicadors importants d'una taula/relació:

  • Cardinalitat: és el número de tuples d'una relació
  • grau: número d'atributs d'una relació

Establint una comparació entre la programació orientada a objectes i el model relacionat podem establir que:

  • Classes: aproximadament, cada classe representa una relació
  • Objectes: registres ("tuples", files) d'una taula (implementacions dinàmiques d'una classe)
  • variables Membres: atributs d'una taula.
IMPORTANT: No s'ha de confondre les relacions segons el model relacional amb les relacions entre taules normalment establertes mitjançant claus 
foranies

Cal indicar però, que al model relacional "pur" hi ha una sèrie de diferències entre una taula i una relació:

  • Una relació no permet tuples repetides. Una taula si
  • L'ordre de les files és irrelevant en una relació
  • La taula és plana, no hi ha atributs multivalor (en una relació normalitzada poder haver-hi multivalors).

També és important indicar que la majoria de sistemes gestors de bases de dades suporten taules en comptes de "relacions pures".

Domini (tipus de dades) i atributs (columnes)

Un domini és un conjunt d'elements als quals se'ls associa un nom i un tipus de dades. Els tipus de dades poden ser definits pels SGBDR o poder ser definits pels usuaris per derivació dels dominis bàsics del SGBDR.

Exemple:

Domini sexe: dos valors dona/home.

En resum, els dominis normalment contenen:

  • Nom del domini
  • Tipus de dades del domini
  • Restriccions (màscares, restriccions de mida, etc.)

Els dominis es poden reutilitzar per diferents columnes però cada columna ha de tenir un nom que l'identifiqui d'altres columnes (no poden haver-hi dos atributs amb el mateix nom)

Recursos:

Intensió i extensió

Com ja hem comentat una relació de 2 parts:

  • Una capçalera (o esquema de relació o intensió) que defineix l'estructura de la taula (la seva part estàtica). Aquí es guarden les metadades de a relació
  • Un cos o extensió format per un conjunt de tuples (la seva part dinàmica). Aquí s'emmagatzemen les dades.

D'aquesta divisió entre part estàtica i part dinàmica de la relació sorgeixen els diferents subconjunts del llenguatge Standard Query Language (SQL) el llenguatge DML (Data Manipulation Language) que permet modificar les dades de les relacions i el DDL (Data definition Language) que permet modificar i establir la estructura de les relacions.

Restriccions

Integritat

Concepte de clau

Arquitectura ANSI/X3/SPARC i el model relacional

Recursos:

Operacions en el model relacional

Operacions i model matemàtic

Un dels punts forts del model de base de dades relacionals (respecte a altres models com el jeràrquic o el de xarxa) és que tenen al seu darrere tota una estructura matemàtica de suport creada per Codd al 1970 quan va definir el model relacional (precisament com una alternativa als models existents, jeràrquic i en xarxa).

Tota aquesta estructura matemàtica no és que s'utilitzi directament ni que faci més fàcil les operacions amb bases de dades des de el punt de vista dels usuaris de la base de dades. Tanmateix, si que és la base de la optimització dels SGBDR comercials, a partir de la qual han pogut optimitzar el rendiment d'aquestes sistemes.

Un dels avantatges del model relacional és que la manipulació de les dades es pot realitzar a partir de les seves relacions lògiques fet que va donar llum a llenguatges no procedimentals (també anomenats sovint declaratius) com SQL. Aquests llenguatges també se'ls anomena llenguatges relacionals. Cal comentar però, que el mateix Codd va lluitar per denunciar les "desviacions" del model relacional més purista que van esdevenir amb el llenguatge SQL i els SGBDR relacionats. Aquestes desviacions han estat provocades i justificades pels diferents fabricants de programari per raons comercials i d'extensibilitat i adaptació de les capacitat dels seus sistemes a les necessitats de cada moment.

Els llenguatges proposats per Codd són:


Àlgebra relacional

L'àlgebra relacional va ser proposada per Codd al 1970 i és un subespecialitat de la teoria de conjunts que permet establir operacions entre una o més relacions per tal de manipular aquestes relacions. Hi ha 2 tipus d'operacions:

  • Operacions unàries: Afecten a una relació.
  • Operacions binaries: Afecten a dos relacions.

Les operacions és classifiquen en:

  • Operacions primitives: Són les operacions base de l'àlgebra relacional
  • Operacions derivades: Són operacions complexes construïdes a partir d'operacions primitives.

Algunes operacions ja existien en la teoria de conjunts:

  • Unió: representa la unió de dos relacions (conjunts). Amb SQL es pot utilitzar la clàusula UNION per unir p. ex., dues consultes (SELECT).
  • Diferència: representa la diferència entre dues relacions (conjunts). Amb SQL es pot utilitzar la clàusula MINUS.
  • Producte cartesià

i altres són pròpies de l'àlgebra relacional i les veiem en els següents apartat:

Recursos:

Operació de selecció. Predicats de selecció

La selecció o restricció és una operació que obté una sèrie de tuples d'una relació segons un criteri especificat (un subconjunt de la relació).

L'equivalent amb SQL és un statement SELECT, UPTADE, DELETE amb una clàusula WHERE amb restriccions com AND, OR, o NOT.

Person \sigma_{Age \ge 34}( Person ) σAge = Weight(Person)
Name Age Weight
Harry 34 80
Sally 28 64
George 29 70
Helena 54 54
Peter 34 80
Name Age Weight
Harry 34 80
Helena 54 54
Peter 34 80
Name Age Weight
Helena 54 54


Recursos:

Operació de projecció

La operació de projecció és simplement una operació de selecció durant la qual les tuples duplicades s'eliminen del resultat.

En SQL tenim les clàusules GROUP BY i la paraula clau DISTINCT per a eliminar/agrupar tuples.

Person πAge,Weight(Person)
Name Age Weight
Harry 34 80
Sally 28 64
George 29 70
Helena 54 54
Peter 34 80
Age Weight
34 80
28 64
29 70
54 54

Recursos:

Operacions JOIN

Aquesta operació uneix dos relacions mitjançant els seus atributs comuns. A SQL utilitzem l'operador JOIN i les seves variacions. L'operació JOIN més utilitzada és l'operació natural: INNER JOIN

Recursos:

Producte cartesià

El producte cartesià de dues relacions no es res més que una operació JOIN sense cap restricció ni criteri per fer la unió i per tant cada registre de la primera relació s'uneix amb cada registre de la segona relació. Amb SQL s'utilitza l'operador CROSS JOIN.

Recursos:

Disseny relacional

Consulteu:

Eines de l'usuari