Você está na página 1de 37

El Modelo EntidadRelacin Conversin a Tablas SQL

El Modelo EntidadRelacin
Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

Conversin a Tablas
Para qu? Conversin de Entidades Conversin de Relaciones

SQL
CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres
lvaro Herrera Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

Modelo EntidadRelacin

I Modelo conceptual para diseo de bases de datos I Propsito: simplicar el diseo de BDs a partir de descripciones
textuales

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

Modelo EntidadRelacin

I Modelo conceptual para diseo de bases de datos I Propsito: simplicar el diseo de BDs a partir de descripciones I Elementos del Modelo:
I Entidades I Atributos I Relaciones
textuales

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

EntidadRelacin: Elementos
Entidad objeto que existe y que es distinguible de otros Puede ser concreta o abstracta Puede ser fuerte o dbil ej: persona, factura, huracn

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

EntidadRelacin: Elementos
Entidad objeto que existe y que es distinguible de otros Puede ser concreta o abstracta Puede ser fuerte o dbil ej: persona, factura, huracn Atributo Caracterstica interesante de una entidad ej: nombre, fecha de nacimiento, capacidad

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

EntidadRelacin: Elementos
Entidad objeto que existe y que es distinguible de otros Puede ser concreta o abstracta Puede ser fuerte o dbil ej: persona, factura, huracn Atributo Caracterstica interesante de una entidad ej: nombre, fecha de nacimiento, capacidad Relaciones Asociacin entre entidades ej: profesor trabaja para institucin, factura es entregada a cliente

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

Ejemplo: Artculos cientcos

Se quiere modelar un sistema para manejar artculos cientcos. Un artculo est escrito por un autor, aunque a veces pueden ser varios. Obviamente una misma persona puede participar en ms de un artculo. Cada artculo tiene ttulo, resumen y contenido. Cada autor pertenece a alguna institucin.

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

Ejemplo: Artculos cientcos

I Entidades

I autor I artculo I institucin

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

Ejemplo: Artculos cientcos

I Entidades

I Relaciones

I autor I artculo I institucin

I artculo es escrito por uno o ms autores I autor pertenece a una institucin

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

Ejemplo: Artculos cientcos

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

Atributos
I I I I

Caracterstica interesante sobre una entidad Nos interesa almacenarlo Valores pertenecen al dominio Pueden ser opcionales u obligatorios persona nombre rut fecha de nacimiento

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

Llave Primaria
I Superllave: conjunto de atributos que permite identicar de
modo nico una entidad dentro de un conjunto Ejemplo: de personas, el nombre y el RUT

I puede haber ms de una superllave I Llaves candidatas: resultado de quitar atributos redundantes de
las superllaves

I Llave primaria: arbitrariamente escoger una de las llaves


candidatas

I Llaves sustitutas (surrogate keys): usar nmeros enteros


asignados arbitrariamente

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

Cardinalidad

I Cantidad de entidades en cada extremo de una relacin I No cuntas entidades hay en cada conjunto ... I Puede ser opcional ( 0) u obligatoria ( 1) I Puede ser uno a uno, uno a muchos, muchos a muchos
... sino cuntas entidades estn asociadas a travs de esa relacin

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Introduccin Modelo de Ejemplo Atributos y Llaves Cardinalidad

Diagrama con cardinalidades

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Para qu? Conversin de Entidades Conversin de Relaciones

Conversin a Tablas

I Este modelo es til slo conceptualmente I La implementacin real es distinta I El modelo de tablas (como en SQL) no hace diferencia entre
entidades y relaciones

I Tampoco permite implementar directamente relaciones muchos


a muchos

I Se pueden simplicar relaciones uno a uno y uno a varios

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Para qu? Conversin de Entidades Conversin de Relaciones

Reglas de Conversin de Entidades

I Cada conjunto de entidades fuerte ! una tabla; una columna I Cada conjunto de entidades dbil ! una tabla; una columna
por atributo; columnas para llave primaria de entidad fuerte de que depende por atributo

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Para qu? Conversin de Entidades Conversin de Relaciones

Conversin de Entidades Ejemplos


tabla autores (entidad fuerte) autor_id nombre nacionalidad

fecha de nacimiento

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Para qu? Conversin de Entidades Conversin de Relaciones

Conversin de Entidades Ejemplos


tabla autores (entidad fuerte) autor_id nombre nacionalidad

fecha de nacimiento

tabla lineas_facturas (entidad dbil) facturaId numLinea texto cantidad

unitario

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Para qu? Conversin de Entidades Conversin de Relaciones

Reglas de Conversin de Relaciones


I Relaciones uno a uno pueden fundirse en una sola tabla. O
bien segn regla siguiente

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Para qu? Conversin de Entidades Conversin de Relaciones

Reglas de Conversin de Relaciones


I Relaciones uno a uno pueden fundirse en una sola tabla. O
bien segn regla siguiente

I Relaciones uno a varios pueden representarse incluyendo en


la tabla del extremo varios las columnas de la llave primaria del extremo uno. O bien segn regla siguiente

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Para qu? Conversin de Entidades Conversin de Relaciones

Reglas de Conversin de Relaciones


I Relaciones uno a uno pueden fundirse en una sola tabla. O
bien segn regla siguiente

I Relaciones uno a varios pueden representarse incluyendo en


la tabla del extremo varios las columnas de la llave primaria del extremo uno. O bien segn regla siguiente

I Relacin varios a varios y relaciones entre ms de dos

conjuntos de entidades ! una tabla con columnas para las llaves primarias

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Para qu? Conversin de Entidades Conversin de Relaciones

Ejemplo 1 uno a uno


encabezadoFactura razonSocial giro rut Representamos esto agregando a la tabla facturas los atributos de la entidad encabezadoFactura factura totalBruto iva tabla facturas facturaId totalBruto iva razonSocial giro rut

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Para qu? Conversin de Entidades Conversin de Relaciones

Ejemplo 2 uno a varios

En el colegio, cada alumno pertenece a exactamente un curso. Tenemos una tabla alumnos y una tabla cursos Representamos esto agregando una columna cursoId a la tabla de alumnos. o bien segn la regla siguiente

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

Para qu? Conversin de Entidades Conversin de Relaciones

Ejemplo de conversin de relaciones uno a varios

Ejemplo 3: varios a varios En la universidad, cada alumno pertenece a varios cursos. Tenemos una tabla alumnos y una tabla cursos Representamos esto creando una tabla alumnoCurso con atributos alumnoId y cursoId

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

Qu es SQL

I Structured Query Language

I Lenguaje estructurado de consulta

I Estandarizado por ISO y ANSI I Lenguaje declarativo (no procedural)


I no hay IF, FOR, WHILE, etc I elemento bsico: conjuntos

I Interaccin con la base de datos

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

CREATE TABLE
Crea una tabla, inicialmente vaca.

CREATE TABLE autores ( autor_id SERIAL NOT NULL PRIMARY KEY, nombre TEXT NOT NULL, institucion_id INTEGER NOT NULL REFERENCES inst pais_id INTEGER NOT NULL, "fecha de nacimiento" DATE, CONSTRAINT fk (pais_id) REFERENCES paises (pais );

I I I I

Lista de columnas entre parntesis cada columna lleva un tipo, y opcionalmente restricciones se pueden agregar restricciones globales ojo con las maysculas
lvaro Herrera Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

SELECT

Permite obtener las (de una o ms tablas). SELECT * FROM autores;

I * signica todas las columnas


Puede reemplazarse por una lista de columnas, o expresiones

I Para recuperar slo algunas las se usa WHERE

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

SELECT WHERE
SELECT nombre, "fecha de nacimiento" FROM autores WHERE institucionId = 1;

SELECT ... WHERE "fecha de nacimiento" BETWEEN 1950-01-01 AND 1960-01-01

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

Qu es un JOIN

I Los JOIN permiten obtener registros de ms de una tabla I Los registros se mezclan usando un criterio de JOIN I Producto cartesiano (todos con todos) se llama CROSS JOIN

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

CROSS JOIN Ejemplo


SELECT * FROM autores, institucin; autor id 1 1 2 2 nombre Edgser Dijkstra Edgser Dijkstra Niklaus Wirth Niklaus Wirth nacionalidad Dans Dans Suizo Suizo fecha de nacimiento 1930-05-11 1930-05-11 1934-02-15 1934-02-15 institucion 2 2 1 1 institucion 2 1 2 1 nombre Universitt Leiden Xerox PARC Universitt Leiden Xerox PARC

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

Criterios de JOIN

I Agregando criterios, tenemos un INNER JOIN I Formas de especicar criterios:

I en WHERE I usando JOIN ON, JOIN USING, NATURAL JOIN

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

Criterios de JOIN WHERE

SELECT * FROM autores, instituciones WHERE autores.institucion_id = instituciones.instit autor id 1 2 nombre Edgser Dijkstra Niklaus Wirth nacionalidad Dans Suizo fecha de nacimiento 1930-05-11 1934-02-15 institucion 2 1 institucion 2 1 nombre Universitt Leiden Xerox PARC

I Los nombres de columna en WHERE estn calicados


lvaro Herrera Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

Criterios de JOIN USING


SELECT * FROM autores JOIN instituciones USING (institucion_id); institucion 2 1 autor 1 2 nombre Edgser Dijkstra Niklaus Wirth nacionalidad Dans Suizo fecha de nacimiento 1930-05-11 1934-02-15 nombre

Eindhoven Uni Xerox PARC

I La columna institucion aparece una sola vez I Las columnas no estn en el mismo orden que antes

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

Criterios de JOIN ON
SELECT a.nombre AS autor, i.nombre AS institucion, nacionalidad FROM autores AS a JOIN instituciones AS i ON (a.institucion_id = i.institucion_id); autor Edgser Dijkstra Niklaus Wirth institucion Eindhoven University Xerox PARC nacionalidad Dans Suizo

I Se usan alias para las tablas en FROM I Se denen alias para las columnas

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

INSERT
Permite agregar las a una tabla. INSERT INTO autores (institucion_id, nombre, nacionalidad, "fecha de nacimiento") VALUES (1, Edgser Dijkstra, Dans, 1930-05-11);

I La lista de columnas puede ser omitida I Cada columna puede ser omitida de la lista
lvaro Herrera Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

UPDATE

UPDATE autores SET nombre = Edsger Dijkstra, institucion_id = 3 WHERE autor_id = 1;

I Se puede modicar slo una tabla por vez I Columnas en SET no llevan calicacin I Clsula FROM (opcional) permite usar datos de otras tablas

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

El Modelo EntidadRelacin Conversin a Tablas SQL

CREATE TABLE SELECT JOIN Criterios de JOIN Los Otros Tres

DELETE

DELETE FROM instituciones WHERE institucion_id = 2;

I Clsula FROM lleva slo una tabla (aquella de donde se


eliminan registros)

I Para usar datos de otras tablas, se usan nombres calicados en


WHERE, con lo que las tablas mencionadas se incluyen automticamente

lvaro Herrera

Modelamiento Bsico de Datos con PostgreSQL

Você também pode gostar