You are on page 1of 11

BASES DE DATOS I

MODELO DE ENTIDADESRELACIONES EXTENDIDO


DERIVACIN del ESQUEMA RELACIONAL

curso 2008

Modelo de Entidades-Relaciones (M.E.R.)


9 Un modelo de datos proporciona una coleccin integrada de
conceptos para describir los datos, las relaciones existentes entre
los mismos y las restricciones aplicables a los datos, dentro de una
organizacin.
9 El modelo de entidades y relaciones (introducido por Chen en
1976) se ha consolidado como una de las principales tcnicas para
el diseo de bases de datos.
9 Es simple y poderoso para modelar abstracciones del mundo
real y fcilmente traducible a un esquema de Base de Datos.
9 Existen variaciones y extensiones (M.E.R.E.). No hay un enfoque
de diagramacin estndar, pero s un conjunto de construcciones
comunes.

27/08/08

Bases de Datos I
M. del Fresno

Elementos bsicos
Entidades (fuertes o dbiles)
Relaciones (de diferente grado y cardinalidad)
Atributos (identificadores y descriptores)
Ejemplo:

correlat

(0,n)

ALUMNO

(0,n)

(0,n)
cursa

#matric.
nombre

(0,n)

MATERIA

posee

(1,1)

ao

#materia

dni

(0,n)

nom_mat

CARRERA
Id_carrera

27/08/08

nombre

Bases de Datos I
M. del Fresno

Entidades (fuertes y dbiles)


Entidades fuertes tienen existencia propia
a1
a2

A ( a1, a2, )

Entidades dbiles necesitan de otra entidad para determinar la


existencia de sus instancias
a1
.

b1

A ( a1, . . . )
B ( a1, b1, . . . )
27/08/08

Bases de Datos I
M. del Fresno

Relaciones
Una relaci
relacin es una asociaci
asociacin entre instancias de una o m
ms entidades
Grado de la relaci
relacin determina cu
cuntas entidades participan de la
relaci
relacin
- binarias
- unarias (o recursivas)
- n-arias (ternarias, etc.)
Cardinalidad o conectividad de la relaci
relacin especifica el n
nmero de
posibles instancias de la relaci
relacin para cada entidad participante:
- 1:1, 1:N, N:N (en relaciones binarias)
- 1:1:1, 1:1:N, 1:N:N
1:N:N,, N:N:N (en relaciones ternarias)
Participaci
Participacin en la relaci
relacin indica si la existencia de una entidad
requiere la existencia de la entidad asociada (mandatoria o total)
o no es requerida en todos los casos (opcional o parcial)
27/08/08

Bases de Datos I
M. del Fresno

Relaciones unarias

a1
a2

a1
a2

A (a1, . . . )

A (a1, . . . , a1_R)

R-A (a1, a1_R)


renombrar el atributo

27/08/08

Bases de Datos I
M. del Fresno

Relaciones binarias

a1
a2

b1

N:1 A ( a1, . . . , b1 )
Si el vnculo es mandatorio
no puede omitirse el valor
en la referencia
( campo no nulo)

B ( b1, . . . )
1:1

A ( a1, . . . , b1 )
B ( b1, . . . , a1 )

N:N

A ( a1, . . . )

R ( a1, b1 )

B ( b1, . . . )
27/08/08

Bases de Datos I
M. del Fresno

Relaciones ternarias

a1

ABC
C
c1
A ( a1, . . . )
B ( b1, . . . )
C ( c1, . . . )

27/08/08

b1

N:N:N

R ( a1, b1, c1 )

1:N:N

R ( a1, b1, c1 )

1:1:N

R ( a1, b1, c1 )

1:1:1

R ( a1, b1, c1)

Bases de Datos I
M. del Fresno

Jerarquas: subtipos-supertipos
a1
a2

Exclusivas

< tipo_a >

(o disjuntas)

c1

b1

Compartidas
d1

TablaA ( a1, a2, ., tipo_a )


TablaB ( a1, b1 )
TablaC ( a1, c1 )
TablaD ( a1, d1 )
TablaE ( a1, e1 )
27/08/08

(o
superpuestas)

e1

al ser una jerarqua exclusiva


se debe incluir el atributo tipo
en este caso no, porque la
jerarqua es compartida
Bases de Datos I
M. del Fresno

Derivacin de Tablas: Resumen


Transformaci
Transformacin de Entidades :
Se crea una relacin por cada entidad
Todo atributo de la entidad se transforma en un atributo de la
tabla relacional
El identificador de la entidad se transforma en la clave primaria
de la tabla relacional
Transformaci
Transformacin de Relaciones :
En las interrelaciones unarias o binarias con cardinalidad 1:N se
adicionan los atributos identificatorios de la entidad del lado 1 a
la entidad del lado N
Las relaciones binarias N:N y n-arias se transforman en una
nueva tabla relacional con los atributos claves de las entidades
participantes en la relacin y los atributos propios de la relacin
(si los tiene)
27/08/08

Bases de Datos I
M. del Fresno

10

Ejemplo M.E.R.E de BD de Productos


Apellido
Nombre
Direccion

Razon Social
Contacto

CATEGORIA

Id Categoria
Nom_categ
Descripcion

pertenece

EMPRESA

<tipo_cliente>

COND_VTA

Codigo P
Nombre

PRODUCTO

PERSONA

Id Cond.
Descripcion

CLIENTE

1
posee

cond_
pedido

Cantidad

tiene

CUIT
Telefono
Fecha ult.
compra

N
PRESENTACION

27/08/08

Id Presentacion
Descripcion
Cantidad
Precio
Lim.inferior
Lim.superior

PEDIDO

Bases de Datos I
M. del Fresno

Id Pedido
Fecha
Hora

11

Ejemplo Derivacin
Categoria (Id Categoria, Nom_categ, Descripcion)
Producto (Codigo P, Nombre, Id Categoria)
Presentacion (Codigo P, Id Presentacion, Descripcion, Cantidad, Precio,
Lim_inferior, Lim_superior)
Cliente (CUIT, telefono, fecha ult_compra, tipo_cliente)
Empresa (CUIT, Razon Social, Contacto)
Persona (CUIT, Apellido, Nombre, Direccion)
Pedido (Id Pedido, Fecha, Hora, CUIT)
Cond_Vta (Id Cond, Descripcion)
Cond_Pedido (Id Pedido, Codigo P, Id Presentacion, Id Cond, Cantidad)
27/08/08

Bases de Datos I
M. del Fresno

12

SQL (Structured Query Language)


SQL lenguaje est
estndar para los DBMS
Algunas de las funciones del lenguaje son:
9 Definicin de datos
DDL

Creacin de objetos (CREATE)


Modificacin de objetos definidos (ALTER)
Eliminacin de objetos definidos (DROP)

9 Actualizacin de los datos

DML

Insercin (INSERT)
Actualizacin (UPDATE)
Eliminacin (DELETE)

9 Consulta de datos

Los objetos pueden ser:


tablas,
vistas,
ndices,
dominios,
etc.

Seleccin (SELECT)
27/08/08

Bases de Datos I
M. del Fresno

13

SQL Definicin de Datos


La definici
definicin de los datos se realiza a trav
travs de las sentencias de
DDL (Data Definition Language)
Language) del SQL.
9 Sus comandos permiten definir la semntica del esquema relacional:
qu tablas o relaciones se establecen, sus dominios, asociaciones,
restricciones, etc.
9 Los datos o informacin para el DBMS se guardan en tablas
9 Las tablas son identificadas unvocamente por sus nombres y
contienen filas y columnas
9 Las columnas contienen el nombre, el tipo de dato y restricciones
asociadas a la columna
9 Las filas contienen los registros o datos de las columnas (instancias)
27/08/08

Bases de Datos I
M. del Fresno

14

SQL Creacin de Tablas


CREATE TABLE <nombre-tabla>
( {<nom-columna> {tipo-dato | dominio} [NOT NULL] [UNIQUE]
[DEFAULT <valor-defecto>] [CHECK (condicion)], }
[ [ CONSTRAINT <nom-constraint>] PRIMARY KEY (<lista-columnas-PK>)]
[ [ CONSTRAINT <nom-constraint>] UNIQUE (<lista-columnas-UN>)]
[ [ CONSTRAINT <nom-constraint>] FOREIGN KEY (<lista-columnas-FK>)
REFERENCES <tabla-padre> [(<lista-columnas-REF>)]
[ MATCH {SIMPLE | PARTIAL | FULL} ]
[ ON UPDATE <modalidad> ] ]
[ ON DELETE <modalidad> ]
[ [ CONSTRAINT <nombre-constraint>] CHECK (condicion) ] );
<modalidad>::= NO ACTION | CASCADE | SET NULL |
SET DEFAULT | RESTRICT
27/08/08

Bases de Datos I
M. del Fresno

15

SQL Tipos de Datos Predefinidos


9 Numricos:
INTEGER - valores enteros
SMALLINT - valores enteros pequeos
NUMERIC(p,e) valores flotantes (p: nro. total de dgitos, e: decimales)

9 Caracteres:
CHAR(n) - cadenas de caracteres alfanumricos de longitud fija n
VARCHAR(n) - cadenas de caracteres alfanumricos de longitud variable
(n: longitud mxima)

9 Boolean
valores TRUE, FALSE y UNKNOWN

9 Datetime:
TIME - valores de HOUR, MINUTE and SECOND
DATE - valores de YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
TIMESTAMP - valores de YEAR, MONTH, DAY, HOUR, MINUTE,SECOND
tomados del sistema
27/08/08

Bases de Datos I
M. del Fresno

16

SQL Creacin de Tablas


Ejemplos:
Ejemplos:

CATEGORIA (Id Categoria, Nom_categ, Descripcion)

CREATE TABLE CATEGORIA


( Id_Categoria INTEGER,
Nom_categ
CHAR(30) NOT NULL,
Descripcion
VARCHAR(50)
PRIMARY KEY (Id_Categoria) ) ;
PRODUCTO (Codigo P, Nombre, Id_Categoria)
CREATE TABLE PRODUCTO
( CodigoP
INTEGER,
Nombre
CHAR(30),
Id_Categoria INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (CodigoP),
CONSTRAINT FK_Categ FOREIGN KEY (Id_Categoria)
REFERENCES CATEGORIA
ON DELETE NO ACTION
ON UPDATE CASCADE ) ;
27/08/08

Bases de Datos I
M. del Fresno

17

SQL Modificacin de Tablas


Se proveen 6 opciones:

Agregar una nueva columna


Eliminar una columna
Agregar una nueva restriccin a la tabla
Eliminar una restriccin
Asignar un valor predeterminado a una columna
Eliminar el valor predeterminado a una columna

ALTER TABLE <nom-tabla>


[ ADD [ COLUMN] <nom-columna> {tipo-dato|dominio} [NOT NULL]
[UNIQUE] [DEFAULT <valor-defecto>][CHECK (condicion)] ]
[ DROP [COLUMN] <nom-columna> [RESTRICT | CASCADE ] ]
[ ADD [ CONSTRAINT <nombre-constraint>] <definicin-restriccin> ]
[ DROP CONSTRAINT <nombre-constraint>] [RESTRICT | CASCADE ] ]
[ ALTER [COLUMN] SET DEFAULT <valor-defecto> ]
[ ALTER [COLUMN] DROP DEFAULT ]
27/08/08

Bases de Datos I
M. del Fresno

18

SQL Modificacin de Tablas


Ejemplos:
Ejemplos:
ALTER TABLE CATEGORIA
ADD COLUMN Porc_IVA NUMBER(4,2) DEFAULT 21 ;
ALTER TABLE EMPRESA
DROP COLUMN Contacto ;

//opcin por defecto: RESTRICT

ALTER TABLE PRODUCTO


ADD CONSTRAINT U_nom UNIQUE (Nombre) ;
ALTER TABLE CATEGORIA
ALTER Descripcion SET DEFAULT No asignada;
ALTER TABLE PRODUCTO
DROP CONSTRAINT FK_Categ ;
27/08/08

Bases de Datos I
M. del Fresno

19

SQL Eliminacin de Tablas


DROP TABLE <nom-tabla> [CASCADE | RESTRICT]

Se elimina la definicin de la tabla y todas las filas que contiene.


Si es CASCADE, la operacin se lleva a cabo y se eliminan todos
los objetos dependientes de la tabla (tambin los objetos que
dependan a su vez de ellos).
Si es RESTRICT, se rechaza si hay objetos definidos a partir de la
tabla (Es la opcin por defecto).
Ejemplos:
DROP TABLE Cond_Pedido ;
DROP TABLE Categoria CASCADE ; La eliminacin se
propagara tambin sobre otras tablas!!
Nota: Se debe tener (mucha) precaucin en el uso de la opcin CASCADE
27/08/08

Bases de Datos I
M. del Fresno

20

10

SQL Actualizaciones de Datos


Sentencias del DML para agregar, modificar y eliminar datos de
tablas:
INSERT

INSERT INTO <nom-tabla> [ ( <lista-columnas> ) ]


VALUES (lista-valores) | SELECT . ;

DELETE

DELETE FROM <nom-tabla>


[ WHERE <condition> ] ;

UPDATE

UPDATE <nom-tabla>
SET <nom-col1> = <valor1> [,<nom-col2> = <valor2> ]
[ WHERE <condicin> ] ;

27/08/08

Bases de Datos I
M. del Fresno

21

SQL Actualizaciones de Datos


Ejemplos:
INSERT INTO Categoria (Id_Categoria, Nom_categ)
VALUES ( 208, Monitores );
Descripcin puede ser nulo y Porc_IVA
tomara su valor por defecto (21)

INSERT INTO Producto VALUES ( 1234, Samsung SyncMaster 550s, 208 );


UPDATE Presentacion SET Precio = Precio*2 ; Duplica el precio de todos
los productos de la BD

UPDATE Categoria SET Nom_categ = Monitores L17,


Descripcion= Monitor Tec. LCD 17 pulg WHERE Id_Categoria = 215;
DELETE FROM Cond_Pedido; Elimina todas las tuplas de Cond_Pedido
DELETE FROM Presentacion WHERE Cantidad = 0;
27/08/08

Bases de Datos I
M. del Fresno

22

11

You might also like