Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Components lògics d’una base de dades, Apuntes de Programación de Bases de Datos

Tipo: Apuntes

2020/2021

Subido el 11/05/2021

franblancos89
franblancos89 🇪🇸

4.3

(181)

69 documentos

1 / 54

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
FIB: Bases de Dades (BD)
4. Components Lògics 128
4. Components lògics
d’una base de dades
Objectius
Components Lògics de Dades
Esquemes
Dominis i Taules
Assercions
Vistes
Components Lògics de Control
Privilegis
Procediments (laboratori)
Disparadors (laboratori)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36

Vista previa parcial del texto

¡Descarga Components lògics d’una base de dades y más Apuntes en PDF de Programación de Bases de Datos solo en Docsity!

FIB: Bases de Dades (BD)

4. Components lògics

d’una base de dades

 Objectius

 Components Lògics de Dades

Esquemes

Dominis i Taules

Assercions

Vistes

 Components Lògics de Control

Privilegis

Procediments (laboratori)

Disparadors (laboratori)

FIB: Bases de Dades (BD)

Objectius d’aquest tema

 Completar els components lògics d’una base de dades

que s’estudien a les sessions de laboratori

 Conèixer les sentències que ofereix el llenguatge

estàndard SQL

FIB: Bases de Dades (BD)

Esquemes

 Des d’aquest punt de vista, el component esquema és una eina especifica

de l’SGBD que serveix com a unitat administrativa per agrupar un conjunt

d’altres components.

 Aquesta és la utilitat principal del component esquema: ens permet

centralitzar tasques administratives que d’altra manera hauríem de repetir

individualment. Podem engegar, aturar, o atorgar privilegis d’un conjunt de

components lògics a un usuari.

 Hi ha diversos criteris per a decidir quins components formaran part d’un

esquema. Per exemple:

  • Per aplicacions
  • Per usuaris finals

FIB: Bases de Dades (BD)

Servidor, Catàleg i Esquema

servidor

catàleg_1 … catàleg_n

esquema_1 … esquema _n esquema d’informació

taules vistes procediments disparadors …

 Un catàleg (catalog) és un grup d’esquemes, un dels quals es anomenat

esquema d’informació (information schema)

 L’esquema d’informació és un conjunt de vistes que conté la descripció de

totes les dades SQL que pertanyen al catàleg corresponent

 Un servidor (cluster) pot contenir zero o més catàlegs

FIB: Bases de Dades (BD)

Connexions, Sessions i Transaccions

 Una connexió es pot definir com l’associació que es crea entre un client SQL i un servidor SQL quan el client manifesta que té la intenció de treballar amb la BD sol·licitant una connexió.

Sentència per establir una connexió:

CONNECT TO nom_servidor [ AS nom_connexio] [ USER ident_usuari]; SET SCHEMA nom_esq;

I que es destrueix quan acaba:

DISCONNECT nom_connexio | DEFAULT | CURRENT | ALL ;

 Les sentències SQL que s’executen metre hi ha una connexió activa a un servidor formen una sessió. Per tant una sessió és el context en el que un usuari o aplicació executa una seqüència de sentències SQL mitjançant una connexió:

Sentència per establir les característiques de les transaccions que s’executen en una sessió:

SET SESSION CHARACTERISTICS AS mode_transac [, mode_transac ...];

FIB: Bases de Dades (BD)

Connexions, Sessions i Transaccions  Una transacció és un conjunt de sentències SQL de consulta i actualització de la BD que s’executen com una unitat. Les seves característiques es poden definir prèviament amb:

SET TRANSACTION mode_transac [, mode_transac ...]; on mode_transac pot ser: mode_d’accés | nivell d’aïllament on mode_d’accés pot ser: READ ONLY | READ WRITE on nivell d’aïllament pot ser: READ UNCOMMITTED | READ COMMITTED | REPETEABLE READ | SERIALIZABLE (*)

És pot fer explícit l’inici d’una transacció amb: START TRANSACTION mode_transac [, mode_transac ...];

 Una transacció finalitza confirmant o cancel·lant els canvis que s’hi han fet. Sentència que confirma tots els canvis de la transacció: COMMIT [WORK] [AND [NO] CHAIN]; Sentència que desfà tots els canvis de la transacció, deixant la BD com abans de començar l’execució de la transacció: ROLLBACK [WORK] [AND [NO] CHAIN];

(*) Els nivells d'aïllament de les transaccions s’estudiaran al tema 8 del curs

FIB: Bases de Dades (BD)

Taules  El component lògic principal d’una base de dades és la taula

CREATE TABLE nom_taula (definició_columna [, definició_columna ... ][, restriccions_taula]);

 Definició de columna definició_columna pot ser: nom_columna tipus_dades [def_defecte] [ restricció_columna]

on tipus_dades pot ser: DATE, TIME, TIMESTAMP, INTERVAL, BINARY LARGE OBJECT(BLOB), DECIMAL (NUMERIC), FLOAT, DOUBLE PRECISION, REAL, INTEGER (INT), SMALLINT, CHARACTER (CHAR), CHARACTER LARGE OBJECT(CLOB), VARCHAR, BOOLEAN

on def_defecte (definicions per defecte) pot ser: DEFAULT literal | funció | NULL

on funció pot ser: funcions de valors de temps: CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, ... funcions de valors d’usuaris: CURRENT_USER, SESSION_USER, SYSTEM_USER ...

FIB: Bases de Dades (BD)

Taules: Restriccions de columna

restricció_columna pot ser:

 NOT NULL

  • La columna no pot tenir valors nuls  UNIQUE
  • La columna no pot tenir valor repetits.  PRIMARY KEY
  • La columna és clau primària de la taula.  REFERENCES taula [(nom_columna)] [ ON DELETE NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT ] [ ON UPDATE NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT ]
  • La columna és clau forana que referència la taula especificada (amb clau primària nom_columna).  [CONSTRAINT nom_restricció ] CHECK (condicions)
  • La columna ha de complir les condicions especificades.
  • Són típicament de rang del domini, encara que permeten posar qualsevol expressió.
  • És opcional el donar nom a aquestes restriccions.

FIB: Bases de Dades (BD)

Taules: Restriccions

 En el cas que una restricció faci referència a un únic atribut, podem escollir si la definim com a restricció de taula o de columna.  En el cas que una restricció faci referència a més d’una columna, s’ha de definir com a restricció de taula.

 Exemples de definició de restriccions: CREATE TABLE persona ( Dni char(8) PRIMARY KEY, Nom varchar(30) NOT NULL, Data_naixement date NOT NULL CONSTRAINT data_naix CHECK (data_naixement>='01/01/1900'), Data_defuncio date, Ciutat_naixement varchar(30) NOT NULL , Ciutat_residencia varchar(30) NOT NULL , Estudis char(1) DEFAULT '1' CONSTRAINT estudis CHECK (estudis BETWEEN '1' and '5'), Telefon decimal(9) UNIQUE , CONSTRAINT dates CHECK ((data_naixement<data_defuncio) OR (data_defuncio is NULL)));

FIB: Bases de Dades (BD)

Taules: Problemes en la definició de restriccions

  • 1er Problema (Ramakrishnan & Gehrke)

CREATE TABLE emp ( nemp integer, CHECK ((SELECT COUNT(*) FROM emp) > 0)

  • 2on Problema (Garcia-Molina, Ullman & Widom)

CREATE TABLE emp ( nemp integer, dept char(10) CHECK ( dept IN SELECT dept FROM dept))

INSERT, UPDATE empleat OK DELETE, UPDATE dept NO

 Una restricció no es viola mai si la taula està buida

 Una restricció només es comprova quan s’actualitza la taula on està definida

FIB: Bases de Dades (BD)

Vistes

Esquemes Externs

Arquitectura ANSI/SPARC

Esquema Conceptual

Esquema Intern

I. L. D

I. F. D

Usuaris programes

Vista

Arquitectura Relacional

Taules, ...

I. L. D

I. F. D

Usuaris programes

Fitxers, índex ... (^) No estàndard

Visió general

FIB: Bases de Dades (BD)

Vistes

Una vista és una relació derivada: el seu esquema i contingut es deriven d’altres relacions (bàsiques o derivades) a partir d’una consulta relacional

Es pot consultar i actualitzar amb SQL La seva extensió no existeix físicament Potència SQL per definir vistes, excepte ORDER BY

CREATE VIEW nom_vista [(nom_columna, …)] AS sentència_select [ WITH CHECK OPTION ];

Exemple : persona (dni, nom, data_naixement, data_defuncio, ciutat_naixement, ciutat_residencia, estudis, telefon )

CREATE VIEW persones4 AS SELECT dni, nom, estudis FROM persona WHERE estudis >= 4

FIB: Bases de Dades (BD)

Vistes: Actualitzacions

  • Les vistes són actualizables amb SQL. De fet, de cara al usuari final és transparent el fet que la relació que actualitzi sigui una vista

persona persones (^4) 1, Joan, …. 5

2, Pere, …. 3 3, Anna, …. 4 4, Enric, …. 2 5, Maria, …. 5

  1. UPDATE persones4 SET nom=’Anna Maria' WHERE dni=5;
  2. SELECT * FROM persones4;
  3. UPDATE persones4 SET estudis=2 WHERE dni = 5;
  4. SELECT * FROM persones4;

FIB: Bases de Dades (BD)

Vistes: With Check Option

CREATE VIEW persones4 AS SELECT dni, nom, estudis

FROM persona

WHERE estudis >= 4

WITH CHECK OPTION;

1. UPDATE persones4 SET nom=’Anna Maria' WHERE dni=5;

2. SELECT * FROM persones4;

3. UPDATE persones4 SET estudis=2 WHERE dni = 5;

“ERROR: new row violates check option for view "persones4"