Tema 3 Modelo relacional



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

Bases de datos relacionales y el modelo entidad-relación

Restricciones de Integridad

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

Bases de Datos. Sistemas de Gestión de Bases de Datos

Base de datos relacional

UNIVERSIDAD NACIONAL DE ASUNCION FACULTAD POLITÉCNICA CARRERA: LCIK MATERIA: Bases de Datos I Prof: Lic. Lilian Riveros Unidad 2: Modelo Relacional

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Del MER al MR. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

Lenguaje para descripción de datos

Maestría en Bioinformática. Bases de Datos y Sistemas de Información. Diseño Lógico. Ing. Alfonso Vicente, PMP alfonso.vicente@logos.com.

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

Paso del E-R a tablas

T12 Vistas y tablas temporales

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

A.1. Definiciones de datos en SQL

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

Unidad 2 Lenguaje de Definición de Datos (DDL) 2.1 Creación de base de datos. 2.2 Creación de tablas.

El modelo relacional

MySQL y Sesiones en PHP. Área de Ingeniería Telemática

Base de Datos Práctica 1.

Temario. Índices simples Árboles B Hashing

BASE DE DATOS RELACIONALES

2- Creación de tablas y manejos de datos.

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

Una vez creada la BD podemos pedirle a MySQL que nos muestre todas las BD existentes. Para eso utilizamos la siguiente instrucción:

Consultas con combinaciones

Es un lenguaje de consulta estructurado establecido claramente como lenguaje de alto nivel estándar para sistemas de base de datos relacionales.

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Trabajos de Ampliación. Bases de datos NoSQL.

SQL (Structured Query Language)

Repaso de Conceptos Básicos de Bases de Datos

EL ENTORNO DE TRABAJO SQL ORACLE

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

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

Modelo Entidad-Relación

3. Modelo relacional: Estructura e integridad.

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

Unidad II: Diseño de Bases de Datos y el modelo E-R. 2.1 El Proceso de Diseño

Restricciones (constraints) FOREIGN KEY

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

1. Introducción: Qué es un Modelo de Datos? 2. Estática del modelo de datos relacional

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

TRANSFORMACIÓN DE ESQUEMAS E/R A ESQUEMAS RELACIONALES

CONSULTAS BASICAS EN SQL SERVER

Teórico 9 Del MER al MR

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

Capítulo 1: Introducción a los Sistemas de Gestión de Bases de Datos (SGBD)

Tablas y Campos Nuevos

Introducción a las bases de datos.

select nombre from profesores where categoria='aso6';

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

INTRODUCCION A LAS BASES DE DATOS Procesamiento de Archivos vs Bases de Datos ARCHIVOS BASES DE DATOS

SQL básico. SQL básico 1. Contenido

Bases de datos y tablas

Cuando el pedido se entrega al cliente, se genera la factura correspondiente.

Registro (record): es la unidad básica de acceso y manipulación de la base de datos.

Metadatos en Plataformas ECM

TEMA 20: CONCEPTOS BÁSICOS DE SQL

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

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

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

phpmyadmin INTRODUCCION A LA CREACIÓN DE BASES DE DATOS Prof. Moisés Mañas Carbonell Dpto. Escultura. UPV moimacar@esc.upv.es

GENERACIÓN DE ANTICIPOS DE CRÉDITO

LENGUAJE DE CONSULTA ESTRUCTURADO - SQL CONTENIDO

OPERACIONES CON BASES DE DATOS OFIMÁTICAS Y CORPORATIVAS CURSO: IES GONZALO NAZARENO

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears

Diseño de bases de datos Diapositiva 1

Apuntes de la Unidad 1 de Base de Datos

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Tema 2 Modelos de Base de Datos. Profesor Luis Gmo. Zúñiga Mendoza UMCA

Este es un ejemplo muy sencillo, un esquema de empleados que trabajan en proyectos, en una relación muchos a muchos.

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

Sistema para el alquiler, control de películas y clientes en una videotienda

UNIDAD 3. MODELO RELACIONAL

Manual hosting acens

Bases de datos en Excel

Conceptos básicos Oracle 10g Introducción - Administración de Oracle - Orasite.com

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

Tema 2: Modelo Entidad-Relación(ER)

Práctica 2. Academia Bristol

INTRODUCCIÓN A LAS BASES DE DATOS

2. ESTUDIO DE INDICES

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

TEMA 8.- DISEÑO TEORICO DE BASES DE DATOS RELACIONALES. 1. TEORÍA DE LAS DEPENDENCIAS FUNCIONALES

Nota 2. Luis Sierra. Marzo del 2010

Que es normalización? Normalización de una base de datos Grados de normalización: Primera Forma Grados de normalización: Segunda Forma Grados de

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

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

PHP Perfect SQL v1.0 (SQL perfectas en PHP)

Guía para el tratamiento en Allegro de recibos para centros no pertenecientes a la Generalitat Valenciana.

Generación de código para Hibernate desde modelos UML

BASES DE DATOS TEMA 4 DISEÑO DE BASES DE DATOS RELACIONALES

El modelo relacional y el álgebra relacional

BASE DE DATOS UNIVERSIDAD DE LOS ANDES FACULTAD DE MEDICINA T.S.U. EN ESTADISTICA DE SALUD CATEDRA DE COMPUTACIÓN II. Comenzar presentación

Tema 6: Diseño de bases de datos relacionales.

Matrices equivalentes. El método de Gauss

Práctica 3. Consultas SQL

Transcripción:

Contenido: Bases de Datos y Sistemas de Información Ing. Informática GRUPO A Tema 3 Modelo relacional 3.1 Terminología del modelo relacional 3.2 Paso del modelo ER al modelo relacional 3.3 Creación de tablas en el modelo relacional (SQL) 3.1 Terminología del modelo relacional Modelo Relacional Modelos de bases de datos Creado por Codd a Principios de los 70 Modelo lógico de datos de no muy alto nivel, orientado a registro. Sólida base teórica. Implementado en muchos SGBD. El concepto principal es la relación o tabla. OJO: No hay que confundir la tabla con las relaciones del modelo ER. Aquí las relaciones valen para tipos de relaciones igual que para tipos de entidades. Algunos conceptos básicos: Entidad: Igual que en el esquema ER. También se les llama tuplas o filas de la relación. Atributo: Igual que en el esquema ER. También se le llaman columnas de la relación. El dominio de los atributos tiene que ser simple: no se admiten atributos multivalorados ni compuestos. Esquema de una relación: viene dado por el nombre de la relación y una lista de atributos. Es el tipo de entidad. Conjunto de entidades: Relación o tabla. Ej: alumnos(dni, NombreYApellidos, domicilio, teléfono, cou ) Obs.: El orden de los atributos en la lista no importa. Lo fijamos porque nos viene bien para representarlo como tabla, pero cualquier permutación es válida. Instancia de una relación: Conjuntos de entidades. Cada entidad se representa como una tupla. Cada componente de la tupla corresponde con el valor del atributo correspondiente, según el orden enunciado en el esquema de la relación. Ej: Instancia de la relación alumnos: { (01234567Z, Manuel Vázquez Prieto, Calle del Jazmín 7 4 Izq, 91-12345678, COU = SI),...} Obs.: Ahora hablamos siempre de conjuntos de entidades, nunca de multiconjuntos. Nota: En el modelo relacional no se distingue entre tipos de entidades y tipos de relaciones. Representación: En el modelo relacional no se representan diagramas del esquema de la BD. Se pueden representar instancias de una relación de la siguiente forma: 1

Ej.: Instancia de la relación alumnos DNI NombreyApellidos Domicilio Teléfono COU 01234567Z Manuel Vázquez Prieto Calle del Jazmín 7 4 Izq 91-12345678 SI 3.2 Paso del modelo ER al modelo relacional Al traspasar información de ER al modelo relacional se pierde información (participación). En cambio, algunos requisitos que no podían representarse en el modelo ER sí van a poder indicarse aquí. 3.2.1. Definición de tablas Tipos de entidades Para cada tipo de entidad que no sea débil se crea una relación con el mismo nombre y conjunto de atributos. Obs.: En este punto no se indica nada acerca de los tipos de relaciones en los que participa el tipo de entidades. Ej: En el caso de la BD de secretaría los tipos de entidades dan lugar a las relaciones: Alumnos(DNI, Apellidos y Nombre, Domicilio, teléfono, COU) Asignaturas(Código, título, núm créditos) Profesores(DNI, Apellidos y nombre, Domicilio, teléfono) Aulas(Edificio, núm.edificio) Tipos de relaciones Para cada tipo de relación R se crea una relación con atributos: Por cada tipo de entidad que participa en la relación, los atributos de la clave primaria. Los atributos de la propia relación. Nota: En ocasiones hay que renombrar atributos para evitar tener varios con el mismo nombre. Ej: En el caso de la BD de secretaría los tipos de relación dan lugar a las relaciones: Matrícula(DNI, Código, Nota) Supervisa(DNI,DNI) Imparte(DNI, Código, Edificio, NumAula) Tipos de entidades débiles - El tipo de entidad débil E se transforma en una relación que incluye los atributos del tipo de relación más los atributos necesarios para la clave de E. - Los tipos de relaciones en los que participa E deben incluir todos los atributos de la clave de E. Obs.: - El tipo de relación con el doble rombo, si es binaria, no aporta nada y se podrá eliminar. Si tiene atributos, se pasan a la relación del tipo de entidad débil. Ej: Traspasar el siguiente diagrama entidad-relación a modelo relacional: 2

compositores DNI NombreyApe Autor canciones en CD s título duración Núm.serie títulocd intérprete Solución: compositores(dni, NombreYApe) canciones(titulo, duracion,númserie) autor(dni, titulo, duración, NúmSerie) en(titulo, duración, NúmSerie) <- Se debe eliminar CDs(Num.Serie, títulocd, intérprete) Generalizaciones Se tratan igual que en el caso de las entidades débiles. La relación IsA no se transforma en relación DNI Apellidos y Nombre Domicilio Teléfono personas is a COU alumnos profesores personas(dni, ApellidosyNombre, Domicilio, teléfono). alumnos(dni, COU) profesores(dni) 3.2.2 Claves Hay dos casos: 1. La relación proviene de un tipo de entidad en el esquema ER. La clave es la clave del tipo de entidad 2. La relación proviene de un tipo de relación en el esquema ER. Relaciones binarias: R relación binaria entre E1 y E2. R relación construida a partir de R Clave de E1 : c1 Clave de E2 : c2 3

Atributos de R : Atributos de E1 + Atributos de E2 + Atributos de R a) Una a una E1 R E2 Dos superclaves: c1 y c2 b) Una a varias E1 R E2 Superclave: c2 c) Varias a varias E1 R E2 Superclave : c1 c2 Relaciones n-arias Supongamos que la relación proviene de un tipo de relación R entre tipos de entidad E1, E2,..., Ek. - Si todos participan con cardinalidad varios en R, entonces una superclave es la unión de las claves de E1, E2,..., Ek. - Si algunos tipos de entidad participan con cardinalidad una en R, entonces uno de ellos puede ser excluido de la superclave. Obs.: - Si los tipos de entidades E1, E2,...,Ek no intervienen en tipos de relación adicionales y no hay otros requerimientos, la Def.: anterior nos proporciona una clave del tipo de relación. Ej: BD secretaría Alumnos(DNI, Apellidos y Nombre, Domicilio, teléfono, COU) Asignaturas(Código, título, núm.créditos) Otra clave candidata: { título } Profesores(DNI, Apellidos y nombre, Domicilio, teléfono) Aulas(Edificio, núm.edificio) Matricula(DNI, Código, Nota) Supervisa(DNISupervisor,DNISupervisado) Imparte(DNI, Codigo, Edificio,NumAula) Ej: BD de canciones: compositores(dni, NombreYApe) canciones(título, duración, NúmSerie) autor(dni, título, duración, NúmSerie) CDs(Núm.Serie, títulocd, intérprete) 4

3.2.3 Cuestiones de diseño En ocasiones es posible combinar 2 o más tablas en una sola: Ej: Nombre Apell. Personas Nacida Países DNI Esquema de la BD: Personas(DNI, Apell.) Países(Nombre) Nacida(DNI, Nombre) Nuevo Esquema: Personas(DNI,Apell, PaisNac) Países(Nombre) Ej: Esquema de BD: personas(dni, ApellidosyNombre, Domicilio, teléfono). alumnos(dni, COU) profesores(dni) Esquema modificado: personas(dni, ApellidosyNombre, Domicilio, teléfono,alumnoprofe, COU). Obs.: - Se admite la existencia de una valor nulo (NULL) en todo dominio de un atributo. - Los atributos que forman parte de una clave no pueden tomar el valor nulo en ninguna instancia válida de la BD. 3.3 Creación de tablas en el modelo relacional. Objetivo: Representar por medio de tablas relacionales en SQL la información representada en un diagrama ER y sus restricciones asociadas de forma que el SGBD verifique las restricciones de integridad que garantizan la coherencia de la base de datos de forma automática. Nota: Aunque las instrucciones que se describen en este apartado existen con una u otra variante en todos los sistemas SQL utilizaremos la sintaxis de MySQL para aspectos particulares, aunque mencionaremos otros sistemas como ORACLE. 3.3.1 Sintaxis simplificada para la creación/modificación/borrado de tablas en SQL CREATE TABLE nombredetabla(atributo1 tipo1,, atributon tipon CREATE TABLE empleados (nombre VARCHAR(20), apellidos VARCHAR(20), fechanacimiento DATE, edad INT 5

Observación: Las instrucciones SQL no distinguen entre mayúsculas y minúsculas Borrar una tabla: drop table nombredetabla; Modificar una tabla: - Añadir atributos: alter table r add A D - Eliminar atributos: alter table r drop A r : nombre de la tabla, A: nombre del atributo, D: tipo (dominio) del atributo. 3.3.2 Tipos o dominios de atributos Se llama dominio de un atributo al rango de valores que puede tomar inicialmente (sin considerar otras restricciones), valor que se conoce en programación habitualmente como atributo. En MySQL: - Numéricos: bit (0,1), tinyint (-128,127), bool o Boolean (true=1, false=0), smallint (-32768 to 32767), mediumint (-8388608 to 8388607), int (-2147483648 to 2147483647), bigint (- 9223372036854775808 to 9223372036854775807), float, Decimal(m,d) (m el número total de dígitos, d el número total de decimales), Además todos los tipos excepto bit y bool admiten la palabra clave unsigned como prefijo. Create table personal(., edad unsigned tinyint,.) - Cadenas de caracteres: Char(n) (n el número de caracteres), Varchar(n) (n el número de caracteres) y Text (cadena sin limite de caracteres) Create table cuento( nombreautor varchar(20), titulo varchar(50), elcuento text La diferencia entre varchar y char es lo que ocupan en el almacenamiento físico: char siempre lo mismo, varchar dependiendo de la longitud concreta del valor almacenado. Se prefiere varchar excepto si el tiempo de acceso es crítico en cuyo caso se elige char. - Fechas y horas: Date, Time, DateTime, TimeStamp (tiempo desde el 1 de enero de 1970) y YEAR (sólo el año). - Otros tipos: ENUM('value1','value2',...), SET('value1','value2',...). Además otros SQL como ORACLE y PostgreSQL permiten la creación de nuevos dominios como en este ejemplo: CREATE DOMAIN onoff AS VARCHAR CHECK VALUE IN ('on', 'off') Sin embargo esto no es válido en MySQL. Por el contrario los tipos MySQL enum y set no son admitidos por la mayor parte de los sistemas basados en SQL. 6

3.3.3 Añadiendo restricciones de integridad - Default: Permite dar valores por defecto a alguna(s) columnas mediante la palabra clave DEFAULT: CREATE TABLE PolizaSeguros ( DNI varchar(10), NombreYApellidos varchar(255), TipoPoliza varchar(20) DEFAULT 'Seguro Vida' Se pueden usar funciones del sistema. Por ejemplo si getdate() devuelve la fecha actual: CREATE TABLE PolizaSeguros ( DNI varchar(10), NombreYApellidos varchar(255), TipoPoliza varchar(20)default 'Seguro Vida', Fecha DATE DEFAULT getdate() - Not null: indica que los valores de una columna no pueden estar vacíos create table persona (DNI varchar(10) not null, - Claves primarias: Se crean añadiendo una restricción Primary key(atrib1,,atribn), donde (atrib1,,atribn) son los atributos que forman la clave primaria: CREATE TABLE personal ( nombre varchar(20) not null, apellidos VARCHAR(60) not null, domicilio varchar(80), PRIMARY KEY (nombre, apellidos) Se requiere que todas las columnas que participan en la clave primaria estén declaradas not null. La mayoría de los sistemas fuerzan la restricción not null automáticamente sin exigir que se escriba de forma explícita. Sin embargo se recomienda indicarlo explícitamente por claridad. En caso de que la clave primaria esté formada por una única columna se admite una sintaxis alternativa consistente en escribir las palabras Primary Key al final de la declaración del atributo que forma la clave. CREATE TABLE personal ( DNI varchar(10) not null primary key, apellidos VARCHAR(60) not null, domicilio varchar(80) 7

- Claves candidatas : Se transforman en restricciones UNIQUE. CREATE TABLE localidades ( Codigo int NOT NULL, nombre varchar(100) NOT NULL, comunidad varchar(100), poblacion int, primary key(codigo), CONSTRAINT unalocporcm UNIQUE (nombre,comunidad) ) La sintaxis anterior es válida en MySQL / SQL Server / Oracle / Access El nombre de la restricción (unalocporcm) es útil para referirse posteriormente a ella. Por ejemplo para eliminar la restricción de la tabla posteriormente: Oracle/Access/SQL server: ALTER TABLE localidades DROP CONSTRAINT unalocporcm MySQL: ALTER TABLE localidades DROP INDEX unalocporcm - Claves ajenas: obligan a que una o más columnas de las tablas existan previamente en otra tabla. Se usa sobre todo al pasar al diagrama relacional relaciones de un diagrama ER: las claves prestadas por la relación serán claves ajenas con respecto a la tabla correspondiente. Se representan con la sintaxis donde: FOREIGN KEY (atr1,,atrn) REFERENCES t(atr1,,atm ) - (atr1,,atrn) son atributos de la tabla actual - (atr1,,atrn ) son atributos que forman la clave primaria de la tabla t, que ya existe. - El dominio de los atributos (atr1,atr1 ),,(atrn,atrn ) son compatibles. Personas Nacida R País Se refleja en las tablas SQL como (nos inventamos los atributos, no vienen en el diagrama): CREATE TABLE personas ( nombre varchar(10) not null, apellidos varchar(100) not null, direccion varchar(200), edad int, primary key(nombre,apellidos) CREATE TABLE Paises( Nombre varchar(50) not null primary key, Poblacion int 8

CREATE TABLE Nacida( nombrepersona varchar(10) not null, apellidospersona varchar(100) not null, nombrepais varchar(50) not null, fecha DATE, primary key(nombrepersona,apellidospersona), foreign key(nombrepersona,apellidospersona) references personas(nombre,apellidos), foreign key(nombrepais) references paises(nombre) Problema: ahora cada tupla/fila de Nacida (la llamaremos tupla hija) depende de una tupla en personas y otra en países. Son sus tuplas padre (o madre). Qué ocurriría si borrásemos una tupla padre dejando su correspondiente tupla en Nacida? que se incumpliría la restricción! Por el ellos SGBD no nos va a permitir dejar tuplas huérfanas : si queremos borrar una tupla en Pais, por ejemplo, primero debemos borrar todas la tuplas hijas en Nacida. El esquema es: - Primero borrar tuplas hijas - Después borrar la tupla padre. La situación es similar en el caso de la modificación de una tupla padre, el SGBD no lo permite para no dejar tuplas huérfanas. Pero lo que hay que hacer para lograr la modificación es aún más complejo, no basta con modificar primero las tuplas hijas. Veamos un ejemplo: En países tenemos un país llamado Crujidistan. Hemos metido ya varios nacidos en ese país en Nacida, es decir la tupla para Crujidistan tiene varias tuplas hijas. Sin embargo comprobamos que el nombre del país es Krujidistan. Como hemos dicho no podemos cambiarlo sin más, entonces: - Primero añadimos una nueva tupla en países con nombre Krujidistan - Ahora modificamos los nombres de país de las tuplas hijas a Krujidistan. - Finalmente borramos la tupla para Crujidistan, que ya no tiene tuplas hijas. Los SGBD avanzados como Oracle disponen de medios para automatizar, si se desea este proceso. Al declarar la tabla que contendrá tuplas hijas podemos decir qué deseamos que ocurra con ellas al borrar/modificar la tupla padre. Las posibilidades, que se añaden como sufijos a la declaración de la restricción foreign key correspondiente son: - ON DELETE CASCADE: Al borrar una tupla padre borrar automáticamente sus hijas - ON DELETE SET NULL: Al borrar una tupla padre poner a null los campos del padre referenciados en sus hijas, si es posible. - ON DELETE DEFAULT: Al borrar una tupla padre los campos del padre referenciados en sus hijas tomarán el valor que sigue a default. Las mismas 3 opciones existen cambiando ON DELETE por ON UPDATE. Además se pueden combinar ambas posibilidades. CREATE TABLE Nacida( nombrepersona varchar(10) not null, 9

apellidospersona varchar(100) not null, nombrepais varchar(50) not null DEFAULT apátrida, fecha DATE, primary key(nombrepersona,apellidospersona), foreign key(nombrepersona,apellidospersona) references personas(nombre,apellidos) ON DELETE CASCADE ON UPDATE CASCADE, foreign key(nombrepais) references paises(nombre) ON DELETE DEFAULT ON UPDATE CASCADE Atención: estas posibilidades son muy potentes, pero deben usarse con cuidado y documentarse adecuadamente. Hay que tener en cuenta que la creación de claves ajenas también afecta a la hora de borrar tablas completas con DROP Table: se deben borrar primero las tablas que contienen referencias externas: Drop table nacida; Drop table paises; Drop table personas; - check : Se aseguran de que los valores que se van a almacenar verifican cierta propiedad P. Sintaxis: check(p), donde P es la propiedad. Se puede poner al lado de la columna o al final (sólo de esta última forma si la propiedad implica a más de una columna). Create table ventaalcohol( DNI varchar(10) not null primary key, nombreyapellidos varchar(100), edad int, Check (edad>17) 3.3.4 Conclusiones - Las restricciones expresadas en los requerimientos verbales iniciales deben quedar reflejadas en el esquema de base de datos final. - No todas las restricciones quedan recogidas en el diagrama ER, así que deben apuntarse aparte y tenerse en cuenta en la generación del esquema. - Un buen diseño de esquema de bases de datos, sin información redundante y con restricciones de integridad debidamente fijadas nos asegura una BD coherente y fácil de mantener. - Para las restricciones de integridad que no pueden asegurarse con los mecanismos anteriores existen en algunos SGBD como Oracle aún otros mecanismos más complejos, como los trigger, que veremos más adelante. 10