














































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Tipo: Apuntes
1 / 54
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!















































Objectius d’aquest tema
Esquemes
Servidor, Catàleg i Esquema
servidor
catàleg_1 … catàleg_n
esquema_1 … esquema _n esquema d’informació
taules vistes procediments disparadors …
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 ...];
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
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 ...
restricció_columna pot ser:
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)));
CREATE TABLE emp ( nemp integer, CHECK ((SELECT COUNT(*) FROM emp) > 0)
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
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
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
persona persones (^4) 1, Joan, …. 5
2, Pere, …. 3 3, Anna, …. 4 4, Enric, …. 2 5, Maria, …. 5