Está en la página 1de 12

RELACIONES TERNARIAS

Son las relaciones en las que intervienen OBLIGATORIAMENTE 3 o mas entidades.

3 ENTIDADES -> TERNARIAS


>3 ENTIDADES -> N-ARIAS

TIPOS DE RELACIONES TERNARIAS

RELACIONES TERNARIAS SIMPLES


Son aquellas en las que cada entidad interviene con 1 sola ocurrencia.

EJEMPLOS:

1 Bibliotecario presta a 1 estudiante 1 solo libro.


1 Medico opera a 1 paciente en 1 quirofano con la ayuda de 1 enfermera.

Las relaciones ternarias SIMPLES se modelan con 1 sola tabla intermedia y las
entidades intervinientes tendran su clave foranea correspondiente
en la tabla intermedia.

EJERCICIOS
Muchos bibliotecarios prestan a muchos estudiantes muchos libros, se debe
identificar que:

En cada prestamo se va registrar la cedula del bibliotecario que presta, el id del


estudiante al que se le presta , el codigo del libro prestado.

BIBLIOTECARIOS=(CED_BIB, NOM_BIB, APE_BIB, SUE_BIB)


ESTUDIANTES=(CED_EST, NOM_EST, APE_EST, COR_EST)
LIBROS(COD_LIB, NOM_LIB, CANT_PAGS_LIB)
PRESTAMOS(NUM_PRE, FEC_PRE, FEC_DEV, CED_BIB_PRE, ID_EST_PRE, COD_LIB_PRE)

CONNECT SYSTEM
CREATE USER BIBLIO3TI IDENTIFIED BY JOEL1;
GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO BIBLIO3TI;

DISCONNECT;

CONNECT BIBLIO3TI;

CREATE TABLE BIBLIOTECARIOS


(CED_BIB VARCHAR(10) PRIMARY KEY,
NOM_BIB VARCHAR(10) NOT NULL,
APE_BIB VARCHAR(10),
SUE_BIB NUMBER);

INSERT INTO BIBLIOTECARIOS VALUES('2001','CARLOS','PEREZ',1500);


INSERT INTO BIBLIOTECARIOS VALUES('2002','MARIA','SOLIS',1500);

CREATE TABLE ESTUDIANTES


(CED_EST VARCHAR(10) PRIMARY KEY,
NOM_EST VARCHAR(10) NOT NULL,
APE_EST VARCHAR(10) NOT NULL,
COR_EST VARCHAR(10) NOT NULL);

INSERT INTO ESTUDIANTES VALUES('1801','ANA','RIOS','AR@UTA.ES');


INSERT INTO ESTUDIANTES VALUES('1802','JOSE','MERA','JM@UTA.ES');

CREATE TABLE LIBROS


(COD_LIB VARCHAR(10) PRIMARY KEY,
NOM_LIB VARCHAR(20) NOT NULL,
CAN_PAG_LIB NUMBER);

INSERT INTO LIBROS VALUES('L01','BD',200);


INSERT INTO LIBROS VALUES('L02','C++',210);
INSERT INTO LIBROS VALUES('L03','JAVA',230);

CREATE TABLE PRESTAMOS


(NUM_PRE NUMBER PRIMARY KEY,
FEC_PRE DATE NOT NULL,
FEC_DEV DATE,
CED_BIB_PRE NOT NULL REFERENCES BIBLIOTECARIOS(CED_BIB),
CED_EST_PRE NOT NULL REFERENCES ESTUDIANTES(CED_EST),
COD_LIB_PRE NOT NULL REFERENCES LIBROS(COD_LIB));

INSERT INTO PRESTAMOS VALUES(1, NOW(), NULL,'2001','1801','L01');--> MODELO ANSI

INSERT INTO PRESTAMOS VALUES(1, SYSDATE, NULL,'2001','1801','L01'); --> MODELO


ORACLE

===================================================================================
====================================
EN LA BIBLIOTECA SE TIENE UN NUEVO REQUERIMIENTO SE DEBE PODER PRESTAR VARIOS
LIBROS EN EL MISMO PRESTAMO.

ESTO SE SOLUCIONA CON RELACIONES TERNARIAS COMPUESTAS.

*****RELACIONES TERNARIAS COMPUESTAS


Son aquellas en las que una de las entidades participa más de una vez.

EJEMPLO:
1 BIBLIOTECARIOS PRESTA A 1 ESTUDIANTE VARIOS LIBROS.

En este caso la relacion ya no se modela con 1 sola tabla intermedia, sino con la
tecnica MAESTRO/DETALLE.

REGLAS:

LAS ENTIDADES QUE INTERVIENEN 1 SOLA VEZ SE REGISTRAN EN LA TABLA MAESTRO.


(BIBLIOTECARIO/ESTUDIANTE)

LA ENTIDAD QUE INTERVIENE VARIAS VECES(libros) SE REGISTRARA EN OTRA TABLA LLAMADA


DETALLE CON LA RELACION 1 MAESTRO TIENE MUCHOS DETALLES.

BIBLIOTECARIOS=(CED_BIB, NOM_BIB, APE_BIB, SUE_BIB)


ESTUDIANTES=(CED_EST,
NOM_EST, APE_EST, COR_EST)

MAESTRO_PRESTAMO(NUM_PRE, FEC_PRE, CED_BIB_PRE, ID_EST_PRE)


DETALLE_PRESTAMO(COD_LIB_PRE, FEC_DEV, NUM_PRE_PER)

LIBROS(COD_LIB, NOM_LIB, CANT_PAGS_LIB)

CONNECT SYSTEM
CREATE USER BIBLIO3TI_M IDENTIFIED BY JENNY;
GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO BIBLIO3TI_M;

DISCONNECT;

CONNECT BIBLIO3TI_M;

CREATE TABLE BIBLIOTECARIOS


(CED_BIB VARCHAR(10) PRIMARY KEY,
NOM_BIB VARCHAR(10) NOT NULL,
APE_BIB VARCHAR(10),
SUE_BIB NUMBER);

INSERT INTO BIBLIOTECARIOS VALUES('2001','CARLOS','PEREZ',1500);


INSERT INTO BIBLIOTECARIOS VALUES('2002','MARIA','SOLIS',1500);

CREATE TABLE ESTUDIANTES


(CED_EST VARCHAR(10) PRIMARY KEY,
NOM_EST VARCHAR(10) NOT NULL,
APE_EST VARCHAR(10) NOT NULL,
COR_EST VARCHAR(10) NOT NULL);

INSERT INTO ESTUDIANTES VALUES('1801','ANA','RIOS','AR@UTA.ES');


INSERT INTO ESTUDIANTES VALUES('1802','JOSE','MERA','JM@UTA.ES');

CREATE TABLE LIBROS


(COD_LIB VARCHAR(10) PRIMARY KEY,
NOM_LIB VARCHAR(20) NOT NULL,
CAN_PAG_LIB NUMBER);

INSERT INTO LIBROS VALUES('L01','BD',200);


INSERT INTO LIBROS VALUES('L02','C++',210);
INSERT INTO LIBROS VALUES('L03','JAVA',230);

CREATE TABLE MAESTRO_PRESTAMO


(NUM_PRE NUMBER PRIMARY KEY,
FEC_PRE DATE NOT NULL,
CED_EST_PRE NOT NULL REFERENCES ESTUDIANTES(CED_EST),
CED_BIB_PRE NOT NULL REFERENCES BIBLIOTECARIOS(CED_BIB));

INSERT INTO MAESTRO_PRESTAMO VALUES(1, SYSDATE,'1801','2001');

INSERT INTO MAESTRO_PRESTAMO VALUES(2, SYSDATE,'1802','2001');

CREATE TABLE DETALLE_PRESTAMO


(COD_LIB_PRE NOT NULL REFERENCES LIBROS(COD_LIB),
FEC_DEV_LIB DATE,
NUM_PRE_PER NOT NULL REFERENCES MAESTRO_PRESTAMO(NUM_PRE));
INSERT INTO DETALLE_PRESTAMO VALUES('L01','12/12/2022',1);
INSERT INTO DETALLE_PRESTAMO VALUES('L02', NULL,1);
INSERT INTO DETALLE_PRESTAMO VALUES('L03','12/12/2022',1);
INSERT INTO DETALLE_PRESTAMO VALUES('L01',NULL,2);

EJERCICIOS

SE DESEA CREAR UNA BD PARA CONTROLAR LAS OPERACIONES QUE SE REALIZAN EN UNA
CLINICA.

SE CONOCE QUE:
SUPUESTO DISEÑO1:
EN 1 QUIROFANO, 1 MEDICO, OPERA A 1 PACIENTE, CON LA AYUDA DE 1 ENFERMERA.

MEDICOS(ID_MED, NOM_MED, APE_MED)


PACIENTES(ID_PAC, NOM_PAC, APE_PAC, TIP_SAN)
QUIROFANOS(ID_QUI, NOM_QUI, PIS_UBI)
ENFERMERAS(CED_ENF, NOM_ENF, APE_ENF, SUE_ENF)

OPERACIONES(NUM_OPE, FEC_OPE, MOT_OPE, COS_OPE, OBS_OPE, ID_MED_O, ID_PAC_O,


ID_QUI_O, CED_ENF_O,)

CREATE TABLE PACIENTES


(
ID_PAC VARCHAR(10) PRIMARY KEY,
NOM_PAC VARCHAR(10) NOT NULL,
APE_APC VARCHAR(10) NOT NULL,
TIP_SAN_PAC VARCHAR(10) NOT NULL
);

CREATE TABLE MEDICOS


(
ID_MED VARCHAR(10) PRIMARY KEY,
NOM_MED VARCHAR(10) NOT NULL,
APE_MED VARCHAR(10) NOT NULL
);

CREATE TABLE QUIROFANOS


(
ID_QUI VARCHAR(10) PRIMARY KEY,
NOM_QUI VARCHAR(10) NOT NULL,
PIS_QUI VARCHAR(10) NOT NULL
);

CREATE TABLE ENFERMERAS


(
CED_ENF VARCHAR(10) PRIMARY KEY,
NOM_ENF VARCHAR(10) NOT NULL,
APE_ENF VARCHAR(10) NOT NULL,
SUE_ENF NUMBER
);

CREATE TABLE OPERACIONES


(
NUM_OPE VARCHAR(10) PRIMARY KEY,
FEC_OPE DATE NOT NULL,
MOT_OPE VARCHAR(10) NOT NULL,
COS_OPE VARCHAR(10) NOT NULL,
OBS_OPE VARCHAR(10) NOT NULL,
ID_MED_OPE VARCHAR(10) REFERENCES MEDICOS(ID_MED),
ID_PAC_OPE VARCHAR(10) REFERENCES PACIENTES(ID_PAC),
ID_QUI_OPE VARCHAR(10) REFERENCES QUIROFANOS(ID_QUI),
CED_ENF_OPE VARCHAR(10) REFERENCES ENFERMERAS(CED_ENF));

============================================================
DEBER
SE CAMBIA EL REQUERIMEINTO PARA QUE
1 PACIENTE SE HA OPERADO EN UN QUIROFANO PERO POR UN GRUPO DE MEDICOS CADA MEDICO
CON DIFERENTE FUNCION ) Y UNA ENFERMERA DE APOYO EN LA OPERACION __ DETALLE DE
MEDICOS

DEBER2
SE CAMBIA NUEVAMNETE EL REQUERIMEINTO PARA QUE
1 PACIENTE SE HA OPERADO EN UN QUIROFANO PERO POR UN GRUPO DE MEDICOS CADA MEDICO
CON DIFERENTE FUNCION ) Y POR UN GRUPO DE ENFERMErmerasDE APOYO EN LA
OPERACION(CADA ENFERMERA CON DIFERENTE FUNCION)
-- DETALLE MEDICOS DETALLE ENFERMERAS

3 DATOS EN CADA TABLA.

===================================================================================
===================================================================================
===============================

EJERCICIO
SE DESEA CREAR UNA BD PARA CONTROLAR EL USO DE LOS LABORATORIOS POR PARTE DE ELOS
ESTUDIANTES DE LA FISEI .

CREATE TABLE LABORATORIOS


(
COD_LAB VARCHAR(10) PRIMARY KEY,
NOM_LAB VARCHAR(20) NOT NULL,
CAN_EQUI NUMBER,
PIS_UBI NUMBER
);

CREATE TABLE DOCENTES


(
ID_DOC VARCHAR(10) PRIMARY KEY,
NOM_DOC VARCHAR(20),
APE_DOC VARCHAR(20),
TIT_ACA_DOC VARCHAR(20)
);

CREATE TABLE MATERIAS


(
ID_MAT VARCHAR(10) PRIMARY KEY,
NOM_MAT VARCHAR(10),
DES_MAT VARCHAR(10),
CAN_HOR_SEM NUMBER
);

CREATE TABLE AUXILIARES


(
ID_AUX VARCHAR(10) PRIMARY KEY,
NOM_AUX VARCHAR(10),
APE_AUX VARCHAR(10)
);

CREATE TABLE NIVELES


(
COD_NIV VARCHAR(10) PRIMARY KEY,
NOM_NIV VARCHAR(10),
DES_NIV VARCHAR(10)
);

CREATE TABLE PRACTICA


(
NUM_PRA NUMBER PRIMARY KEY,
FEC_HOR_ING DATE,
FEC_HOR_SAL DATE,
PER_ACA VARCHAR(10),
TEMA VARCHAR(10),
COD_LAB_PRA VARCHAR(10) REFERENCES LABORATORIOS(COD_LAB),
ID_DOC_PRA VARCHAR(10)REFERENCES DOCENTES(ID_DOC),
ID_MAT_PRA VARCHAR(10) REFERENCES MATERIAS(ID_MAT),
ID_AUX_RES VARCHAR(10)REFERENCES AUXILIARES(ID_AUX),
COD_NIV_PRA VARCHAR(10) REFERENCES NIVELES(COD_NIV)

);

CREATE TABLE COMPUTADORAS


(
NUM_COM VARCHAR(10) PRIMARY KEY,
MAR_COM VARCHAR(10),
PRE_REF_COM NUMBER
);

CREATE TABLE DETALLE_PRACTICA


(
ID_DET NUMBER PRIMARY KEY,
NUM_COM_USA VARCHAR(10) REFERENCES COMPUTADORAS(NUM_COM),
OBSERVACION VARCHAR(10),
NUM_PAR_PER NUMBER REFERENCES PRACTICA(NUM_PRA)
);

CREATE TABLE DETALLE_EST_PRA


(
CED_EST_PRA VARCHAR(10) REFERENCES ESTUDIANTES(CED_EST),
ID_DET_PER NUMBER REFERENCES DETALLE_PRACTICA(ID_DET)
);

CREATE TABLE ESTUDIANTES(


CED_EST VARCHAR(10) PRIMARY KEY,
NOM_EST VARCHAR(10),
APE_EST VARCHAR(10),
COR_EST VARCHAR(10)
);

DEBER

INGRESAR 10 DATOS EN CADA TABLA POR MEDIO DEL FORMULARIO

Y SQL 10 DATOS MAS

TOTAL 20 SQL Y FORMULARIO

===================================================================================
===============================================
NORMALIZACION
==============

ESTUDIANTES=(CED_EST, NOM_EST, APE_EST, NOTA_EST, CIU_ORI,


PRO_ORI) //2FN
1801 , JUAN , MERA , 8 , AMBATO , TUNGURAHUA
1802 , LUIS , MERA , 8 , AMBATO , TUNGURAHUA
1803 , JUAN , PEREZ , 8.5 , AMBATO , TUNGURAHUA
1804 , JOSE , PEREZ , 8 , QUITO , PICHINCHA
---------------------------------------------------------------------------------

ESTUDIANTES=(CED_EST, NOM_EST, APE_EST, NOTA_EST, ID_CIU_PER) //3FN


1801 , JUAN , MERA , 8 , A01
1802 , LUIS , MERA , 8 , A01
1803 , JUAN , PEREZ , 8.5 , Q01
1804 , JOSE , PEREZ , 8 , Q01

CIUDADES=(ID_CIU, NOM_CIU, NOM_PRO)


A01 , AMBATO , TUNGURAHUA
Q01 , QUITO , PICHINCHA
--------------------------------------------------------------------------

DEPENDECNCIA FUNCIONAL -----

Una columna_B (NOM_EST)de una tabla T (ESTUDIANTES) DEPENDE FUNCIONALMENTE de una


columna_A (CED_EST) de la misma tabla T (ESTUDIANTES) si y solo si al conocer el
valor de la columna_A
(CED_EST) se puede conocer el valor de la columna_B (NOM_EST) PERO NO AL REVES.

NOM_EST DEPENDE FUNCIONALMENTE DE LA CED_EST // CED_EST DETERMINA FUNCIONALMENTE AL


NOM_EST
APE_EST DEPENDE FUNCIONALMENTE DE LA CED_EST // CED_EST DETERMINA FUNCIONALMENTE AL
APE_EST
NOTA_EST DEPENDE FUNCIONALMENTE DE LA CED_EST // CED_EST DETERMINA FUNCIONALMENTE
AL NOTA_EST

REGLA_N
TODA COLUMNA NO CLAVE DEBE DEPENDER FUNCIONALMENTE DE LA CLAVE PRIMARIA NO DE OTRA
COLUMNA NO CLAVE.

===================================
DIAGRAMA DE DEPENDENCIAS FUNCIONALES
====================================

===================================
REGLAS DE LA NORMALIZACION
================================

PRIMERA FORMA NORMAL (1FN)


Para que una tabla se encuentre en 1FN se debe cumplir 1 regla:

Que todos los atributos de la tabla sean indivisibles.


Se elimina los encabezados multiples (Nombres y Apellidos) (Notas)
(Comisiones)
JUAN CARLOS MERA LOPEZ 8, 6, 5 20, 25
, 60

SEGUNDA FORMA NORMAL (2FN)

Para que una tabla se encuentre en 2FN se deben cumplir 2 reglas:


1. Pasar a 1FN
2. Que todos los campos no clave dependan funcionalmente de la clave primaria. Es
en esta forma normal que se divide en tablas relacionadas tomando en cuenta la
dependencia funcional de la clave primaria.

TERCERA FORMA NORMAL (3FN)

Para que una tabla se encuentre en 3FN se debe cumplir 2 reglas:

1. Pasar la 2FN
2. En caso de existir dependencias transitivas se deben eliminar, mediante la
creacion de nuevas tablas relacionadas.

Transitividad
Se da cuando de puede conocer

===================================================================================
===========================
EJERCICIO HERRAMIENTAS
========================

Crear Tablas
-----------------------------------------------------------------------------------
----------------------

CREATE TABLE CATEGORIAS(


DOC_CAT VARCHAR(10) PRIMARY KEY,
NOM_CAT VARCHAR(15) NOT NULL,
USO_REC_CAT VARCHAR(50) NOT NULL);

P, PERCUSION, PARA AGUJEROS EN MATERIALES SUAVES

CREATE TABLE HERRAMIENTAS(


COD_HERR VARCHAR(10) PRIMARY KEY,
NOM_HERR VARCHAR(15) NOT NULL,
MAR_HERR VARCHAR(15) NOT NULL,
EST_HERR VARCHAR(20) NOT NULL,
FUN_HERR VARCHAR(20) NOT NULL,
VOLT_HERR NUMBER NOT NULL,
COD_CAT_PER VARCHAR(10) REFERENCES CATEGORIAS(COD_CAT));

T01, TALADRO, BOSCH, NUEVO, FUNCIONANDO, 110, P

CREATE TABLE BODEGUEROS(


COD_BOD VARCHAR(10) PRIMARY KEY,
NOM_BOD VARCHAR(10) NOT NULL,
APE_BOD VARCHAR(10) NOT NULL,
TEL_BOD VARCHAR(10) NOT NULL,
DIR_BOD VARCHAR(20) NOT NULL
HORARIO_BOD VARCHAR(20) NOT NULL);

1701, MARCELO, ANDRADEE, PRADERA, MATUTINO

CREATE TABLE OBREROS(


CED_OBR VARCHAR(10) PRIMARY KEY,
NOM_OBR VARCHAR(10) NOT NULL,
APE_OBR VARCHAR(10) NOT NULL,
TEL_OBR VARCHAR(10) NOT NULL,
TIP_OBR VARCHAR(20) NOT NULL);

1801, JOSE, AMORES, P

TIPO_OBREROS=(ID_TIP, DES_TIP)
P , OBRERO DE PLANTA
M, OBRERO DE MANTENIMIENTO

CREATE TABLE PRESTAMOS(


NUM_PRE NUMBER PRIMARY KEY,
FEC_HOR_PRE DATE NOT NULL,
COD_HERR_PRE VARCHAR(10) NOT NULL REFERENCES HERRAMIENTAS(COD_HERR),
COD_BOD_PRE VARCHAR(10) NOT NULL REFERENCES BODEGUEROS(COD_BOD),
CED_OBR_PRE VARCHAR(10) NOT NULL REFERENCES OBREROS(CED_OBR),
ESTADO_PRE VARCHAR(10) NOT NULL,
FUN_PRE VARCHAR(10) NOT NULL,
FEC_HOR_DEV DATE,
COD_BOD_REC VARCHAR(10) REFERENCES BODEGUEROS(COD_BOD),
OBS_DEV VARCHAR(20));

1, 09/01/2009 07:00:00, T01, 1701, 1801, NUEVO, FUNCIONANDO, 09/01/2009 17:00:00,


1704, QUEMADO

DEBER

SE DESEA MODIFICAR EL DISEÑO ANTERIOR PARA QUE EN UN MISMO PRESTAMO SE PUEDAN


ENTREGAR VARIAS HERRAMIENTAS, LAS MISMAS QUE PUEDAN DEVOLVERSE EN DIFERENTES
FECHAS.

MAESTRO
DETALLE

****** CREACIÓN DE TABLAS *******

CREATE TABLE CATEGORIAS


(COD_CAT VARCHAR(5) PRIMARY KEY,
NOM_CAT VARCHAR(30) NOT NULL,
USO_REC_CAT VARCHAR(10) NOT NULL,
TIP_MAT_USO VARCHAR(10) NOT NULL);

CREATE TABLE HERRAMIENTAS


(COD_HER VARCHAR(5) PRIMARY KEY,
TIP_HER VARCHAR(15) NOT NULL,
MAR_HER VARCHAR(15) NOT NULL,
VOL_HER VARCHAR(5) NOT NULL,
COD_CAT_HER VARCHAR(5) NOT NULL REFERENCES CATEGORIAS(COD_CAT));

CREATE TABLE BODEGUEROS


(COD_BOD VARCHAR(5) PRIMARY KEY,
NOM_BOD VARCHAR(15) NOT NULL,
APE_BOD VARCHAR(15) NOT NULL,
TLF_BOD VARCHAR(10) NOT NULL,
DIR_BOD VARCHAR(30) NOT NULL,
HOR_BOD VARCHAR(10) NOT NULL);

CREATE TABLE TIPO_OBREROS


(COD_TIP VARCHAR(5) PRIMARY KEY,
DES_TIP VARCHAR(20) NOT NULL);

CREATE TABLE OBREROS


(COD_OBR VARCHAR(5) PRIMARY KEY,
NOM_OBR VARCHAR(15) NOT NULL,
APE_OBR VARCHAR(15) NOT NULL,
TLF_OBR VARCHAR(10) NOT NULL,
TIP_OBR VARCHAR(5) NOT NULL REFERENCES TIPO_OBREROS(COD_TIP));

CREATE TABLE MAESTRO_PRESTAMOS


(COD_MAE_PRE NUMBER PRIMARY KEY,
FEC_HOR_PRE DATE NOT NULL,
COD_OBR_PRE VARCHAR(5) NOT NULL REFERENCES OBREROS(COD_OBR),
COD_BOD_PRE VARCHAR(5) NOT NULL REFERENCES BODEGUEROS(COD_BOD));

CREATE TABLE DETALLE_PRESTAMOS


(COD_DET_PRE NUMBER PRIMARY KEY,
COD_HER_PRE VARCHAR(5) NOT NULL REFERENCES HERRAMIENTAS(COD_HER),
OBS_HER_PRE VARCHAR(15) NOT NULL,
EST_HER_PRE VARCHAR(15) NOT NULL,
FEC_HOR_DEV DATE,
BOD_REC_HER VARCHAR(5) REFERENCES BODEGUEROS(COD_BOD),
COD_PRE_PER NUMBER NOT NULL REFERENCES MAESTRO_PRESTAMOS(COD_MAE_PRE));

CREATE TABLE DETALLE_OBSERVACIONES


(COD_DET_PER NUMBER NOT NULL REFERENCES DETALLE_PRESTAMOS(COD_DET_PRE),
OBS_HER_PRE VARCHAR(15) NOT NULL);

===================================================================================
====================================================

INTEGRIDAD REFERENCIAL(IR)

Es un conjunto de reglas que garantizan la consistencia y la integridad de la BD.


Esas reglas buscan que la BD pases siempre desde un estado consistente hacia otro
estado consistente.
La integridad referencial protege a la BD de las siguientes alomalias

existen las ALOMALIAS de:

INSERCION: Se da cuando se intenta insertar un registro con una clave foranea que
no exista en la clave primaria a la que se hace referencia.(Por ejemplo: asignar a
un estudiante a un curso que no exista )

ACTUALIZACION: Se da cuando se intenta actualizar un registro con un dato que no


exista en la clave primaria a la que se hace referencia.(Por ejmplo actualizar un
empleado para asiganrle a un
departamento que no existe).

ELIMINACION: Se da cuando se intenta eliminar un registro que tiene referencias


hiajs en otras tablas.(Por ejmplo tratar de eliminar a un curso que tiene
estudiantes)
PROPAGACION:Eliminar el registro padre y todos los registros hijos.(no
recomendado)
RESTRICCION: No permite eliminar e registro padre si existen registros hijos
relacionadas. (rec)

CLAVE PRIMARIA: Se da cuando se intenta insertar/actualizar un registro con la


misma clave primaria de otro registro existente.

NULOS: Se da cuando se intenta insertar/actualizar con un valor NULL a un campo


requerido NOT NULL.

-----------------------------------------------------------------------------------
------------------------------------------------------------

SENTENCIA UPDATE
Permite actualizar uno o varios campos de una tabla.

SINTAXIS

UPDATE nombre_Tabla
SET columna1=muevo_valor , columna2=muevo_valor, ..., columnaN=muevo_valor
WHERE condicion;

EJEMPLO:

ACTUALIZAR A LA NUEVA DIRECCION RIOBAMBA, AL NUEVO CARGO INGENIERO, AL NUEVO SUELDO


1800, AL MECANICO CON CEDULA 1803.

UPDATE MECANICOS
SET DIR_EMP='RIOBAMBA' , TIT_MEC='INGENIERO' , SUE_MEC=1800
WHERE ID_MEC='1803';

ANOMALIA DE ACTUALIZACION
ASIGNARLE AL MECANICO 1803 A TALLER TAL04

UPDATE MECANICOS
SET ID_TAL_PER='TAL04'
WHERE ID_MEC='1803';
-----------------------------------------------------------------------------------
-------------------------------------------------------------

SENTENCIA DELETE
Elimina la filas que cumplan una condicion.

SINTAXIS

DELET [FROM] nombre_Tabla


wHERE condicion(es);

EJEMPLO:
DELET FROM REPARACIONES
WHERE NUM_REP=6;

-----------------------------------------------------------------------------------
-----------------------------------------------------------------
ALOMALIA DE BORRADO

DELETE FROM MECANICOS


WHERE ID_MEC='1801';
-----------------------------------------------------------------------------------
--------------------------------------------------------------
ojito:
------
SI SE OMITE EL WHERE ENTONES SE ELIMINAN TODAS LAS FILAS DE LA TABLA.

DELETE FROM REPARACIONES;


-----------------------------------------------------------------------------------
----------------------------------------------------------
SI SE OMITE EL WHERE EN EL UPDATE, ENTONCES SE ACTUALIZAN TODAS LAS FILAS.

UPDATE MECANICOS
SET SUE_MEC=2000;
-----------------------------------------------------------------------------------
--------------------------------------------------------
ROLLBACK DESHACE TODAS LAS SENTENCIAS DML(INSERT, UPDATE, DELETE) HASTA LLEGAR
HASTA EL ULTIMO COMMIT;

ROOLBACK;
-----------------------------------------------------------------------------------
---------------------------------------------------------

También podría gustarte