Usuari:Sergi/Temari/Tema 38 Modelo de datos relacional. Estructuras. Operaciones. Álgebra relacional.
De Acacha
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
- 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:
- Vegeu el tema 34
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:
- http://en.wikipedia.org/wiki/Relational_algebra
- http://en.wikipedia.org/wiki/Relation_%28mathematics%29
À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:
- http://en.wikipedia.org/wiki/Selection_%28relational_algebra%29
- http://en.wikipedia.org/wiki/Relational_algebra#Primitive_operations
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 |
| σAge = Weight(Person) | ||||||||||||||||||||||||||||||||||||
|
|
|
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) | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
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:
