Práctica 3: El lenguaje SQL (2ª parte). (6ª sesión).

Documentos relacionados
Tema II: El modelo relacional de datos Objetivos:

Práctica 3: El lenguaje SQL (2ª parte). Definici ón de datos. Programa de prácticas: Lenguaje SQL: manipulación de datos. definición de datos

Lenguaje SQL (2ª Parte) Definición de datos

Práctica 4: Estudio del SGBD Oracle 10 Gestión de Transacciones

SINTAXIS DE SQL-92. <definición de esquema >::= CREATE SCHEMA <cláusula de nombre de esquema> [ <elemento de esquema>... ]

Ambos conjuntos son completamente distintos: propósito, acciones,... L M D. datos

Tema II: Información Derivada: Vistas (2.6)

2.5.- El lenguaje estándar SQL

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

T07 Opciones de integridad referencial

Concepto de vista. (con ciertas limitaciones). nivel físico) Una vista es una tabla virtual (no tiene una correspondencia a

Asignatura: Administración de Bases de Datos

BASES DE DATOS 2º CURSO E.U.I. / F.I. Práctica 4: Estudio del SGBD ORACLE8 1 Gestión de transacciones 22 DE MAYO DE 2000

ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1

Restricciones de Integridad

6. Integridad en Sistemas de Bases de Datos Relacionales

Integridad en sistemas de bases de datos relacionales

Práctica 3: El lenguaje SQL (1ª parte). (4ª sesión)

Tema 5. Lenguaje de Definición de Datos

Lenguaje para descripción de datos

Unidad III. Bases de Datos

Carlos A. Olarte Ligaduras de Integridad y Restricciones sobre la BD

Temario. Índices simples Árboles B Hashing

GBD Diseño físico de DDBB

Grupo Kybele, Pág. 1

Integridad Referencial. Restricciones (constraints)

Bases de Datos Relacionales y SQL: Una Introducción

Práctica 3: El lenguaje SQL (1ª parte). Programa de prácticas: (5ª sesión). Lenguaje SQL: manipulación de datos (consulta y actualización):

Tema 33. El lenguaje SQL

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

BASES DE DATO TO I VISTAS curso 2008

SQL. Orígenes y Evolución

ÍNDICE. Introducción... Capítulo 1. Novedades de Access

Diseño Lógico Estándar. Diseño Lógico Tema 12

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

A.1. Definiciones de datos en SQL

Departamento de Lenguajes y Sistemas Informáticos

SQL: Lenguaje de definición de datos (DDL) (*) DBMS: DATA BASE MANAGEMENT SYSTEM. SGBD: SISTEMAS GESTOR DE BASE DE DATOS

SQL SQL. Índice. Componentes. Objetivos

Desarrollo Web en Entorno Servidor

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo:

Vistas en InformiX Sistemas de Bases de Datos II EMT CETP A/S Leonardo Carámbula

El lenguaje SQL III: Creación de bases de datos y seguridad. Introducción

Integridad y Seguridad. Integridad y Seguridad. Restricción de Dominio. Protección. Índice. create domain. Dominios

Base de Datos LSI y PI Lic. Paola Daniela Budán Lic. Federico Rosenzvaig

Unidad. Lenguaje SQL. (Structured Query Language)

Pequeños apuntes de SQL *

FUNDAMENTOS DE BASES DE DATOS TEMA 5

ACERCA DE LOS AUTO RES... III AGRADECIMIENTOS... xi INTRODUCCION... Xl

CURSO DE SQL SERVER 2005

: COMPUTACIÓN E INFORMATICA : Ingeniería de Software Ingeniería de Redes y Comunicaciones : Administración de Bases de Datos I : T-INF127

Modelo Relacional. El modelo relacional...1 El modelo entidad relación (que vimos ayer) es un modelo conceptual que sirve

SQL como lenguaje de definición de datos (DDL) El lenguaje estándar SQL Definición del Esquema (SQL)

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

ÍNDICE PRIMERA PARTE... 17

CREACIÓN, SUPRESIÓN Y MODIFICACIÓN DE TABLAS.

LENGUAJE SQL. Bárbula, Febrero de Historia y Definición

BASES de DATOS ÁCTIVAS

Oracle Básico PL/SQL

FIREBIRD: LENGUAJE DE DEFINICIÓN DE DATOS

8 SQL SERVER 2008 RA-MA

BASE DE DATOS - CURSO 02/03 PRÁCTICA 2: SQL: Lenguaje de definición de datos (DDL)

Acceso a bases de datos MySQL con PHP

Solución Ejercicio Prac. 3b (Esquema).

RESTRICCIONES DE DOMINIOS

Sistemas Informáticos I Resumen

Bases de Datos: Structured Query Language (SQL)

Un proyecto de IBM llamado Sistem/R construye un prototipo simple llamado SQUARE que después se transformó en SQL.

GESTORES GESTORES DE BASES DE DATOS

T06 Definición y manipulación de datos

RESUMEN DEL LENGUAJE SQL

Seguridad de la Información Permisos. Sistemas de Bases de Datos II - ITS EMT - CETP

Bases de Datos I. Cursada Clase 3: Restricciones de Integridad (de tablas y generales)

1 2 3 ( /! 3 ) +, 1& 3 0))) % &! ( ) +,. / & 0)))

3. El catálogo 26. Laboratorio de Bases de Datos

PRÁCTICA B2. Definición y modificación de datos en SQL

8 MICROSOFT SQL SERVER 2008 R2. CURSO PRÁCTICO RA-MA

LEA ATENTAMENTE LAS PREGUNTAS Y RESUELVA CADA EJERCICIO COMO SE INDIQUE (EN CASO CONTRARIO EL EJERCICIO NO PUNTUARÁ) CADA EJERCICIO VALE UN PUNTO

2.4 Manipulación de datos

(LDD) VARCHAR2 (n) : alfanumérico (hasta 240) NUMBER (n,p) : números con signo y punto decimal

Introducción a las bases de datos.

[CASI v.0110] Pág. 1

BASES DE DATOS TEMA 4. SQL. UN LENGUAJE DE CONSULTA COMERCIAL PARA BASES DE DATOS RELACIONALES Contenidos generales

EL ENTORNO DE TRABAJO SQL ORACLE

Tema II: El modelo relacional de datos. (2.4)

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

Base de Datos Oracle 10g: Introducción a SQL Código: D Duración: 5 días (40 horas)

Bibliografía. Fundamentos de Sistemas de Bases de Datos (3. edición) Elmasri, Navathe Addisson Wesley 2002

Implementación de la integridad de datos

- Bases de Datos - - Diseño Físico - Luis D. García

Sistema Gestor de Bases de Datos Relacionales (SGBDR), que maneja distintos tipos de datos:

Maestría en Bioinformática. Bases de Datos y Sistemas de Información SQL: DML. Ing. Alfonso Vicente, PMP

Bases de Datos 2. Teórico

Tema 6. Restricciones a la Base de Datos: Integridad y seguridad

Bases de Datos Curso Grado en Ingeniería del Software Examen Junio. Nombre:

PROGRAMAS DE ESTUDIO FORMATO 7 INTRODUCCIÓN A SQL. Área de Formación Profesional

Haga clic para PostgreS cambiar el estilo

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 9. Reglas de Integridad

Transcripción:

Práctica 3: El lenguaje SQL (2ª parte). (6ª sesión). Programa de prácticas: Práctica 1. Introducción al uso de una BD relacional (ACCESS). Práctica 2. Representación de la realidad en el modelo relacional de datos. Práctica 3. (ORACLE) Práctica 4. Estudio del SGBD ORACLE. 1

Objetivos (2ª parte): estudio del lenguaje de definición de datos del SQL. definir una base de datos relacional en el sistema ORACLE. estudio del mecanismo de disparadores (triggers) en el sistema ORACLE. Lenguaje SQL: manipulación de datos SELECT (consulta) INSERT (inserción de tuplas) DELETE (borrado de tuplas) UPDATE (modificación de tuplas) definición de datos 2

Clave primaria Profesor cod_pro nombre teléfono categoría cod_dep Departamento cod_dep nombre director teléfono Docencia cod_pro cod_asg gteo gprac Clave Ajena Asignatura cod_asg nombre semestre teo prac cod_dep Departamento (cod_dep: tira(5), nombre: tira(100), director tira(50), teléfono : tira(11)) CP={cod_dep}, VNN={nombre} Asignatura (cod_asg: tira(5), nombre: tira(100), semestre: tira(2), teo: real, prac: real, cod_dep: tira(5)) CP={cod_asg}, VNN={nombre, teo, prac, semestre} CAj={cod_dep} Departamento f(cod_dep)=cod_dep Profesor (cod_pro : tira(5), nombre: tira(50), teléfono: tira(11), categoría: tira(3), cod_dep: tira(5) ) CP={cod_pro}, VNN={nombre, categoría} CAj={cod_dep} Departamento f(cod_dep)=cod_dep Docencia ( cod_asg: tira(3), cod_pro: tira(3), gteo: entero, gprac: entero) CP={cod_pro, cod_asg}, VNN={gteo, gprac} CAj={cod_asg} Asignatura f(cod_asg)=cod_asg CAj={cod_pro} Profesor f(cod_pro)=cod_pro 3

Definición de un esquema relacional en SQL. definiciones de dominios CREATE DOMAIN... definiciones de relaciones: esquema y restricciones. CREATE TABLE... definiciones de restricciones de integridad generales CREATE ASSERTION... definiciones de vistas CREATE VIEW... definiciones de autorizaciones de acceso GRANT... esquema lógico esquema externo seguridad Lenguaje de definición de datos en SQL esquema ::= CREATE SCHEMA AUTHORIZATION usuario lista_elemento_esquema elemento_esquema ::= definición_dominio definición-relación-básica definición-restricción definición-vista definición-operación-grant 4

Definición de dominios definición_dominio ::= CREATE DOMAIN nom_dominio [AS] tipo_dato [DEFAULT {NULL valor}] [lista_restricción_dominio] restricción_dominio ::= [CONSTRAINT nombre_restricción] CHECK (condición_búsqueda) [cuando_comprobar] cuando_comprobar::= [NOT] DEFERRABLE Definición de relación básica definición_relación_básica ::= CREATE TABLE nom_relación (lista_elemento_relación_básica ) elemento-relación-básica ::= definición-atributo restricción_relación definición_atributo ::= nom_atributo { tipo _datos nom_dominio } [DEFAULT {valor NULL}] [lista_restricción_atributo] 5

Restricciones sobre atributos restricción_atributo ::= [CONSTRAINT nombre_restricción] {NOT NULL UNIQUE PRIMARY KEY REFERENCES nom_relación [(nom_atributo)] [tipo_integridad_referencial] [directriz_borrado] [directriz_actualización] CHECK (condición_búsqueda) } [cuándo_comprobar] Restricciones sobre relaciones restricción_relación ::= [CONSTRAINT nombre-restricción] { UNIQUE (comalista-nom-atributo) PRIMARY KEY (comalista-nom-atributo) FOREIGN KEY (comalista-nom-atributo) REFERENCES nom-relación [(comalista-nom-atributo)] [tipo-integridad-referencial] [directriz-borrado] [directriz-actualización] CHECK (condición-búsqueda)} [cuando-comprobar] 6

tipo_integridad_referencial ::= MATCH {FULL PARTIAL} directriz_borrado ::= ON DELETE {CASCADE SET NULL SET DEFAULT NO ACTION} directriz_actualización ::= ON UPDATE {CASCADE SET NULL SET DEFAULT NO ACTION} Restricciones sobre la base de datos definición_restricción ::= CREATE ASSERTION nombre-restricción CHECK (condición-búsqueda) [cuando-comprobar] 7

cuando_comprobar:= [[NOT] DEFERRABLE] [INITIALLY {IMMEDIATE DEFERRED}] Nota: La semántica de cada una de las versiones de la cláusula cuando_comprobar es la siguiente: - si no se utiliza esta cláusula la restricción se define como no diferible y con modo inmediato. - la versión DEFERRABLE INITIALLY IMMEDIATE (resp. DEFERRED) define una restricción como diferible y con modo por defecto inmediato (resp. diferido). - la versión NOT DEFERRABLE INITIALLY IMMEDIATE coincide con los valores por defecto. - la versión NOT DEFERRABLE INITIALLY DEFERRED está prohibida. - la versión DEFERRABLE (resp. NOT DEFERABLE) define una restricción como diferible (resp. no diferible) y con modo por defecto inmediato. - la versión INITIALLY IMMEDIATE define una restricción como no diferible y con modo inmediato. - la versión INITIALLY DEFERRED define una restricción como diferible y con modo por defecto diferido. La instrucción SQL que permite cambiar, localmente en una transacción, el modo de una restricción definida como diferible, es: SET CONSTRAINT {comalista_nombre_restricción ALL} {IMMEDIATE DEFERRED}. Cada restricción especificada en la lista debe ser diferible y la opción ALL hace referencia a todas las restricciones diferibles del esquema de la base de datos. El alcance del cambio producido por la instrucción SET CONSTRAINT es la transacción en la que se incluye o el fragmento de transacción hasta la siguiente aparición de la misma instrucción. Si se incluye la instrucción en medio de la transacción con la opción IMMEDIATE, las restricciones afectadas por la instrucción son comprobadas cuando se ejecuta ésta, si alguna de estas restricciones falla, la instrucción SET falla y el modo de las restricciones permanece sin modificar. 8

Modificación de relaciones modificación_relación::= ALTER TABLE nombre_relación {ADD (definición_atributo) ALTER [COLUMN ] (nombre_atributo) {DROP DEFAULT SET DEFAULT {literal funcion_sistema NULL} } DROP [COLUMN ] nombre_atributo {RESTRICT CASCADE} } borrado_relación::= DROP TABLE nombre_relación {RESTRICT CASCADE} Definición de un esquema externo en SQL. Definición de vistas definición_vista::= CREATE VIEW nombre_vista [(comalista_nombre_atributo)] AS sentencia_select [WITH CHECK OPTION] borrado_vista::= DROP VIEW nombre_vista {RESTRICT CASCADE} 9

Definición de privilegios de acceso en SQL definición_privilegio::= GRANT {ALL SELECT INSERT [comalista_columna ] DELETE UPDATE [comalista_columna ]} ON objeto TO {PUBLIC comalista_usuario} [WITH GRANT OPTION] eliminación_privilegio::= REVOKE [GRANT OPTION FOR ] {ALL SELECT INSERT [comalista_columna ] DELETE UPDATE [comalista_columna ]} ON objeto TO {PUBLIC comalista_usuario} {RESTRICT CASCADE} Objeto es una relación o una vista del esquema. clave primaria Profesor cod_pro nombre teléfono categoría cod_dep Departamento cod_dep nombre director teléfono Docencia cod_pro cod_asg gteo gprac Clave ajena Asignatura cod_asg nombre semestre teo prac cod_dep 10

CREATE SCHEMA Docencia-UPV VERSIÓN 1 CREATE TABLE Departamento ( cod_dep CHAR(5), nombre VARCHAR(100) NOT NULL, director VARCHAR(50), teléfono CHAR(11), CONSTRAINT CP_dpto PRIMARY KEY (cod_dep) ) CREATE TABLE Profesor ( cod_pro CHAR(5), nombre VARCHAR(50) NOT NULL, teléfono CHAR(11), categoría CHAR(3) NOT NULL cod_dep CHAR(5), CONSTRAINT CP_prof PRIMARY KEY (cod_pro), CONSTRAINT CAj_prof_dpto FOREIGN KEY (cod_dep) REFERENCES Departamento (cod_dep) ) CREATE TABLE Asignatura ( cod_asg CHAR(5), nombre VARCHAR(100) NOT NULL, semestre CHAR(2) NOT NULL, teo NUMBER(3,1) NOT NULL, prac NUMBER(3,1) NOT NULL, cod_dep CHAR(5), CONSTRAINT CP_asg PRIMARY KEY (cod_asg), CONSTRAINT CAj_asg_dpto FOREIGN KEY (cod_dep) REFERENCES Departamento (cod_dep) ) CREATE TABLE Docencia ( cod_pro CHAR(5), cod_asg CHAR(5), gteo INTEGER NOT NULL, gprac INTEGER NOT NULL, CONSTRAINT CP_doc PRIMARY KEY (cod_pro, cod_asg), CONSTRAINT CAj_doc_prof FOREIGN KEY (cod_pro) REFERENCES Profesor (cod_pro), CONSTRAINT CAj_doc_asg FOREIGN KEY (cod_asg) REFERENCES Asignatura (cod_asg) ); 11

Restricciones de integridad (adicionales): los créditos deben ser valores reales positivos los grupos de clase deben ser enteros positivos las categorías de un profesor son: TEU, TU, CEU y CU un profesor con categoría TEU no puede dar mas de 33 créditos y un profesor con categoría TU no puede dar mas de 22 créditos. todo profesor debe estar adscrito a un departamento toda asignatura debe estar adscrita a un departamento el director de un departamento debe ser un profesor y sólo se puede ser director de un departamento las directrices de mantenimiento de la integridad referencial son: clave ajena director en Departamento: borrado a nulos, actualización en cascada clave ajena cod_dep en Profesor: borrado restrictivo, actualización en cascada clave ajena cod_dep en Asignatura: borrado restrictivo, actualización en cascada clave ajena cod_pro en Docencia: borrado en cascada, actualización en cascada clave ajena cod_asg en Docencia: borrado restrictivo, actualización en cascada 12

CREATE SCHEMA Docencia-UPV VERSIÓN 2 CREATE DOMAIN créditos AS NUMBER(1,1) CHECK (value>=0) CREATE DOMAIN grupos AS INTEGER CHECK (value>=0) CREATE TABLE Departamento ( cod_dep CHAR(5), nombre VARCHAR(100) NOT NULL, director CHAR(5) UNIQUE REFERENCES Profesor (cod_pro) ON UPDATE CASCADE ON DELETE SET NULL, teléfono CHAR(11), CONSTRAINT CP_dpto PRIMARY KEY (cod_dep) ) CREATE TABLE Profesor ( cod_pro CHAR(5), nombre VARCHAR(50) NOT NULL, teléfono CHAR(11), categoría CHAR(3) NOT NULL CHECK categoría IN ( TEU, TU, CEU, CU ) cod_dep CHAR(5) NOT NULL, CONSTRAINT CP_prof PRIMARY KEY (cod_pro), CONSTRAINT CAj_prof_dpto FOREIGN KEY (cod_dep) REFERENCES Departamento (cod_dep) ON UPDATE CASCADE ) 13

CREATE TABLE Asignatura ( cod_asg CHAR(5), nombre VARCHAR(100) NOT NULL, semestre CHAR(2) NOT NULL, teo créditos NOT NULL, prac créditos NOT NULL, cod_dep CHAR(5) NOT NULL, CONSTRAINT CP_asg PRIMARY KEY (cod_asg), CONSTRAINT CAj_asg_dpto FOREIGN KEY (cod_dep) REFERENCES Departamento (cod_dep) ON UPDATE CASCADE ) CREATE TABLE Docencia ( cod_pro CHAR(5), cod_asg CHAR(5), gteo grupos NOT NULL, gprac grupos NOT NULL, CONSTRAINT CP_doc PRIMARY KEY (cod_pro, cod_asg), CONSTRAINT CAj_doc_prof FOREIGN KEY (cod_pro) REFERENCES Profesor (cod_pro) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT CAj_doc_asg FOREIGN KEY (cod_asg) REFERENCES Asignatura (cod_asg) ON UPDATE CASCADE) 14

CREATE ASSERTION RI_docencia CHECK (NOT EXISTS ( SELECT * FROM PROFESOR P WHERE (P.categoría= TEU AND (SELECT SUM (gteo*teo + gprac*prac) FROM Docencia NATURAL JOIN Asignatura WHERE cod_pro = P.cod_pro) >33) OR (P.categoría= TU AND (SELECT SUM (gteo*teo + gprac*prac) FROM Docencia NATURAL JOIN Asignatura WHERE cod_pro=p.cod_pro) >22 ) ) ) Definición de un esquema externo en SQL (vistas). Profesor cod_pro o nombre dirección teléfono o categoría cod_dep Relación básica Prof_DSIC cod_pro o nombre dirección teléfono o categoría Relación derivada (vista) CREATE VIEW Prof_DSIC AS SELECT cod_pro, nombre, dirección, teléfono, categoría FROM Profesor WHERE cod_dep= DSIC 15

El lenguaje de definición de datos de ORACLE: Las principales diferencias respecto al estándar SQL son: no contempla el concepto de esquema de base de datos no permite la definición de dominios sólo contempla el tipo de integridad referencial débil sólo admite directrices de restauración de la integridad referencial frente a la operación de borrado (ON DELETE) las restricciones de integridad generales que se pueden definir con la cláusula CHECK son muy limitadas (no se pueden usar subconsultas, ni funciones agregadas,...) no admite la sentencia CREATE ASSERTION. 16