Diseño de base de datos moo

51
Por: Ing. Edwin Calle Terrazas Versión 1.1

Transcript of Diseño de base de datos moo

Por: Ing. Edwin Calle Terrazas

Versión 1.1

El diseño de una base de datos se descompone en diseño conceptual, diseño lógico y diseño físico.

Diseño Conceptual

Diseño Lógico

Diseño Físico

Mapeo

Normalización

ANALISIS

DISEÑO

Análisis de los requisitos

Ing. Edwin Calle Terrazas 2

DIAGRAMA DE CLASES Un diagrama de clases presenta un conjunto de clases, interfaces, colabo- raciones y las asociaciones entre ellas. Los diagrama de clases son los mas utilizados en el modelado de sistemas orientados a objetos. Los diagramas de clases se utilizan para describir la vista de diseño estática de un sistema.

Un diagrama de clases está compuesto por los siguientes elementos: • Clase: atributos y métodos. • Relaciones: Asociación, Herencia, Composición y Agregación

OBJETO Es cualquier cosa del mundo real que tiene existencia física o conceptual posee características y comportamiento.

CLASE Conjunto de objetos que comparten los mismos atributos, métodos relaciones y comportamiento. Todo objeto es una instancia de una clase que tiene las mismas características.

El diagrama de clases de UML representa el modelo orientado a objetos como herramienta de Modelado Conceptual de datos en la fase de diseño de una base de datos.

MODELO ORIENTADO A OBJETOS

3

<Nombre Clase>

<Atributos>

<Métodos>

Un alumno posee como características: código, nombres, paterno, materno teléfono y dirección. Muestran su comportamiento a través de los métodos: modificarAlumno() y BuscarAlumno()

4

class Diagram

Alumno

- codigo

- nombres

- paterno

- materno

- telefono

- direccion

+ modificarAlumno(int)

+ buscarAlumno(int)

ASOCIACIONES ENTRE CLASES

Adorno Semántica

0..1 Cero ó 1

1 Exactamente 1

0..* Cero ó más

* Cero ó más

1..* Uno ó mas

1..6 Uno a Seis

1..3, 7..10, 20..* 1 a 3 ó 7 a 10 ó 20 a muchos

n Número fijo

Ing. Edwin Calle Terrazas 5

class Diagram

Persona

- ci

- nombres

- paterno

- materno

- telefono

- direccion

CertificadoNacimiento

- id_certificado

- fechaRegistro

- nombrePadre

- nombreMadre

- fechaNacimiento

- lugarNacimiento

1

Tiene

1

Significa que a cada objeto de la clase Persona, puede pertenecer un objeto de la clase CertificadoNacimiento y a cada objeto de la clase CertificadoNacimiento le pertenece un objeto de la clase Persona.

class Diagram

Recibo

- nro_recibo

- fecha

- monto

Factura

- nro_factura

- fecha

- NIT

- Monto

1

Tiene

0..1

Asociaciones de Uno a uno Significa que a cada objeto de la clase Recibo, puede o no pertenecer un objeto de la clase Factura y a cada objeto de la clase Factura le pertenece un objeto de la clase recibo.

6

Cada objeto de la clase Cliente se puede relacionar con uno o muchos objetos de la clase NotaVenta, y cada objeto de la clase NotaVenta puede estar relacionado con un objeto de la clase Cliente. El otro ejemplo vemos que a cada objeto de la clase UnidadMedida le corresponde uno o más objetos de la clase Producto, pero a cada objeto de la clase Producto le corresponde un objeto de la clase UnidadMedida.

Asociaciones de Muchos a muchos cada objeto de la clase Alumno se puede relacionar con uno o muchos objetos de la clase Matero, y cada objeto de la clase Materia puede estar relacionado con uno o muchos objetos de la clase Alumno. class diagram

Alumno

- codigo

- nombre

- paterno

- materno

Materia

- sigla

- nombre1..*

pasa

1..*

Asociaciones de Uno a muchos

class Diagram

Cliente

- id_cliente

- nombre

- telefono

- direccion

NotaVenta

- id

- fecha

- monto

1

pide

1..*

class Diagram

UnidadMedida

- id_unidad

- nombre

- abreviatura

Producto

- codigo

- descripcion

- precio

1

pertenece

1..*

7

RELACIÓN DE COMPOSICIÓN Es un tipo de relación todo-parte, en la que el todo se puede componer de muchas partes. Se llama relación estática, donde el tiempo de vida del objeto Incluido «parte» es dependiente del que lo Incluye «todo». Las partes son miembros de un único compuesto . Dicho de otra forma: cada parte tiene dependencia de existencia del todo.

8

En este ejemplo el «todo» es PlanPago que se compone de la «parte» Cuota. Decimos que cada objeto de la clase Cuota no puede existir sin un PlanPlago. También podemos decir que esta relación es «indivisible» donde cada Cuota no se puede separar de un PlanPago. Según la multiplicidad, un PlanPago tiene muchas Cuotas, pero cada Cuota debe pertenecer a un solo PlanPago.

class Diagram

PlanPago

- id_plan

- fecha

- montoTotal

- plazo

Cuota

- id_cuota

- fecha

- monto

1..*

1

Ing. Edwin Calle Terrazas

9

class Diagram

NotaVenta

- id_venta

- fecha

- monto

DetalleVenta

- id_detalle

- precioVenta

- cantidad

1..*

1

class Diagram

Gestion

- id_gestion

- nombre

- fecha_inicio

- fecha_fin

Periodo

- id_periodo

- nombre

- fecha_inicio

- fecha_fin

1..*

1

En este otro ejemplo vemos que el «todo» es NotaVenta que se compone de la «parte» DetalleVenta. Cada objeto de la clase DetalleVenta está obligado a pertenecer a una NotaVenta, (es decir que cada detalleVenta no puede existir sino esta asociada a una NotaVenta)

De la misma forma el último ejemplo. El «todo» es Gestión que se compone de la «parte» Periodo. Cada objeto de la clase Periodo no puede existir sino esta asociada a una Gestión.

RELACIÓN DE AGREGACIÓN Es un tipo de relación dinámica, en donde el tiempo de vida del objeto Incluido (parte) es independiente del que lo Incluye (todo). Es decir que cada parte no tiene existencia de dependencia del todo (las partes pueden separarse del todo). Es una relación normal entre objetos, donde se usa para indicar las partes que corresponden a un todo.

class Diagram

Mueble

- id

- nombre

- tipo

Casa

- nro

- zona

- uv

- ubicacion

1..*0..1

10

En el ejemplo vemos que el «todo» es Casa que se compone de la «parte» Mueble. Cada objeto de la clase Mueble puede existir sino esta asociada a una Casa. Dicho de otra forma: El Mueble se puede separar (divisible) de una Casa. En el otro ejemplo vemos que los Periféricos son partes de una Computadora, pero estos periféricos pueden existir o no para el funciona- miento del Computador. Donde también decimos que hay Periféricos que Que ni siquiera saben que son parte de una computadora.

class Diagram

Computadora

- id_pc

- procesador

- memoria

- discoDuro

- tarjetaMadre

Perifericos

- codigo

- nombre0..*0..1

RELACIÓN DE GENERALIZACIÓN / ESPECIALIZACIÓN Es la actividad de identificar elementos comunes (del mismo tipo) entre los conceptos y definir las relaciones de superclase (concepto general) y subclase (concepto especializado).

Indica que una subclase hereda los métodos y atributos especificados por una superclase. Las subclases además de poseer sus propios atributos y métodos, poseerá también las características y atributos visibles de la superclase. Las subclases se ajustan a las reglas ES UN tipo de la superclase.

Ing. Edwin Calle Terrazas 11

(superclase)

(subclases)

class Diagram

Vehiculo

- placa

- marca

- modelo

- color

Camion

- nroEjes

- capacidad

Auto

- nroPasajeros

Camión ES UN tipo de Vehículo

y de la misma forma Auto.

TIPOS DE ESPECIALIZACIÓN

DISJUNTA.- Los objetos de las superclases pertenecen a una subclase. SOLAPAMIENTO.- Los objetos de las superclases pertenecen a una o ambas

Subclases.

PARTICIPACIÓN COMPLETA E INCOMPLETA

Si un objeto de la superclases está obligado en cualquier subclase o en ambas,

se denomina Completa (total). En el caso que exista un objeto de la superclase

que no se encuentra en las subclases, se denomina Incompleta (parcial).

Ing. Edwin Calle Terrazas 12

Camión y Auto heredan de Vehículo, es decir Camión posee las características

de Vehículo (placa, marca, modelo y color). Además el Camión posee como

propia particularidad nroEjes y Capacidad. Auto también hereda las características

de la clase Vehículo y tiene como particularidad propia nroPasajeros.

class Diagram

Vehiculo

- placa

- marca

- modelo

- color

Camion

- nroEjes

- capacidad

Auto

- nroPasajeros

13

Participación En el caso que cada objeto de Vehículo este obligado a ser Camión o Auto se

denomina Completa (total), pero si existe algún objeto de Vehículo que no sea

ni Camión ni Auto se denomina Incompleta (parcial).

Tipo de Especialización Un Vehículo es solo Auto ó solo Camión no puede ser las dos cosas al mismo

tiempo, en este caso se le denomina DISJUNTA

En este ejemplo vemos que Secretaria hereda las características de Empleado y

además tiene un atributo como particularidad propia velocidad_tipeo, de la misma

manera Técnico con su atributo propio nivel. class Diagram

Empleado

- ci

- nombres

- paterno

- materno

- telefono

Secretaria

- velocidad_tipeo

Tecnico

- nivel

Tipo de Especialización El Empleado puede ser Secretaria o Técnico, solamente uno de ellos no ambos,

dando lugar al concepto de Disjunta.

Participación Si cada objeto de Empleado está obligado a ser Secretaria o Técnico, se denomina

Completa (total), pero si existe algún objeto de Empleado que no sea ni Secretaria

ni Técnico se denomina Incompleta (parcial).

Tipo de Especialización

Una Empleado puede ser solo Docente, solo Administrativo ó ambos al mismo

tiempo, dando lugar al concepto de Solapamiento.

15

class Diagram

Empleado

- id_emp

- nombre

- paterno

- materno

Docente Administrativ o

En este ejemplo vemos que Docente y Administrativo heredan las características

de Empleado.

Participación Si cada objeto de Empleado está obligado a ser Docente, Administrativo o ambos,

se denomina Completa (total), pero si existe algún objeto de Empleado que no sea

ni Docente ni Administrativo se denomina Incompleta (parcial).

Tipo de Especialización

Una persona puede ser solo Cliente, solo Vendedor ó ambos al mismo tiempo,

dando lugar al concepto de Solapamiento.

16

class Diagram

Persona

- ci

- nombre

- apellidos

- direccion

- telefono

Cliente

- l imite_credito

Vendedor

- porcentaje

En forma general vemos que la Participación se da: si los objetos de la superclase

están obligados en cualquier subclase o en ambas es Completa (total), en el caso

que no exista un objeto de la superclase que no se encuentre en las subclases, se

denomina Incompleta (parcial).

RELACIONES RECURSIVAS

Existen casos donde las asociaciones se realizan sobre la misma clase. En este

caso es necesario utilizar roles para diferenciar los objetos que pertenecen a la

misma clase.

Ing. Edwin Calle Terrazas 17

class Diagram

Cuenta

- codigo

- nombre

cuenta_padre

cuenta_hijo0..*

Tiene

0..1

Un empleado (subordinado) tiene un Jefe o ninguno

y un Empleado (jefe) tiene a uno o muchos

empleados subordinados.

Una cuenta (padre) tiene ninguna o muchas

cuentas hijas y una cuenta (hija) tiene o

pertenece a una o ninguna cuenta padre.

class Modelo de clases

Empleado

- id_emp

- nombre

- paterno

- materno

- telefono

- sueldo

jefe

subordinado1..*

tiene

0..1

18

class Diagram

Materia

- sigla

- nombre

0..*

prerrequisito

0..* tiene

es

class Diagram

Parte

- cod_parte

- nombre

parte_mayor

parte_menor0..*

compone

0..*

Una materia tiene ninguna o muchas materias como

Prerrequisitos y una Materia es Prerrequisito de

ninguna o muchas materias.

Una parte mayor puede estar compuesta por

ninguna o muchas partes menores y una parte

menor puede pertenecer a ninguna o muchas

partes mayores.

CLASE ASOCIACIÓN

Una clase asociación puede crearse cuando existe una relación muchos a muchos

entre dos clases, esta clase no solamente conecta dos clases, sino que define un

conjunto de características que pertenecen a la propia asociación, es

decir que una clase asociación puede tener atributos propios, métodos y otras

relaciones.

class Diagram

Producto

- codigo

- descripcion

- precio

Almacen

- nro_almacen

- nombre

ProductoAlmacen

- cantidad

1..* 1..*

class Diagram

Persona

- ci

- nombres

- paterno

- materno

Empresa

- id_empresa

- nombre

- direccion

Trabaja

- sueldo

1..* 0..*

En el primer ejemplo vemos que una persona puede trabajar en muchas o ninguna

empresas y en una empresa pueden trabajar una o muchas personas. Si queremos

queremos registrar el sueldo que gana una persona en una empresa, este atributo

no podemos ponerlo en la persona ni en la empresa, porque es el sueldo que gana

una persona en una determinada empresa, por lo tanto este atributo es propio de la

asociación.

En el segundo ejemplo vemos también que la clase asociación ProductoAlmacen

tiene un atributo propio que es cantidad, la cual indica la cantidad de productos que

existen en un determinado almacén .

19

PRACTICA 1

Una tienda que vende productos necesita registrar las ventas de sus productos.

Un producto tiene características propias como (código,descripción,precio,stock)

y estos pueden pertenecer a una categoría (id_categoria, nombre). Las ventas

se realizan a través de notas de ventas de las cuales debemos registrar

id_venta, fecha y monto. En una nota de venta se pueden vender varios

productos, al mismo tiempo la nota de venta es para un solo cliente, del que es

necesario registrar su datos personales (id_cliente, nombre, teléfono, dirección).

Ing. Edwin Calle Terrazas 20

class Modelo de clases

Cliente

- id_cliente

- nombre

- telefono

- direccion

NotaVenta

- id_venta

- fecha

- monto

Categoria

- id_categoria

- nombre

Producto

- id_producto

- descricion

- precio

- stock

DetalleVenta

- cantidad

- preciov

1

1..* 1..*

1

0..* 1..*

PRACTICA 2

Un video club necesita almacenar su información en una base de datos. Esta es

la información. Una película se caracteriza por su título, nacionalidad, productora

y fecha (ej. “RAMBO”, Estados Unidos, MGM, 1990). En una película pueden

participar varios actores (nombre, apellidos nacionalidad, sexo, etc.) Una película

está dirigida por un director (nombre, apellidos, nacionalidad). De cada película

se dispone de uno o varios ejemplares diferenciados por un número de ejemplar

y caracterizados por su estado de conservación. Un cliente (ci, nombres, paterno

materno, dirección, teléfono) puede pedir que le alquilen varios ejemplares. Se

desea almacenar la nota de alquiler con los siguientes datos: nro, fecha_inicio del

alquiler y fecha_devolución del alquiler. Hacer el Diagrama de Clases.

PRACTICA 3

Se quiere diseñar una base de datos para almacenar información sobre los asuntos

que lleva un gabinete de abogados. Cada asunto tiene un número de expediente

que los identifica y corresponde a un solo cliente, del asunto se debe almacenar

sobre el periodo: la fecha de inicio y fecha de archivo (finalización), su estado (en

trámite, archivado, …) . Los datos personales de los clientes son: ci, nombre, pa-

terno, materno, teléfono. Los asuntos pueden ser llevados por uno o varios abo-

gados de los que también nos interesa sus datos personales.

21

22

PRACTICA 4

En una empresa existen 3 tipos de empleados, Técnicos, Secretaria e Ingeniero,

los técnicos reparan muchos equipos, las secretarias manejan programas y los

Ingenieros trabajan en muchos proyectos.

Un empleado subordinado es supervisado por un empleado jefe y

el empleado jefe tiene a cargo a muchos empleados subordinados. Los empleados

pertenecen solamente a un departamento.

PRACTICA 5

Se desea crear una base de datos que permita registrar el árbol genealógico de una

persona (quien fue su padre y madre), así también registrar los hijos que puede

tener. Por ejemplo: Adán y Eva engendraron a Caín y Abel, Caín y su pareja engen

draron a …, etc.

La base de datos deber ser capaz de registrar a los hijos reconocidos y no recono-

cidos por su padre, por su madre, ambos o ninguno de ellos.

23

PRACTICA 6

Crear una base de datos para registrar los prestamos que solicitan los estudiantes

en una biblioteca. Existen tres tipos de documentos (libro, informe, cd), los cuales

tienen muchas copias. Los documentos son publicados por muchos autores. En un

préstamo pueden haber muchas copias.

Cada copia esta ubicada en una posición de una respectiva fila de un estante.

TRANSFORMACIÓN DEL

DISEÑO CONCEPTUAL AL

DISEÑO LÓGICO

24 Ing. Edwin Calle Terrazas

Asociación entre dos clases: Uno a Uno

Ambas participación Completa (total)

1 1

a) Tablas : A(a# ,….......) B (b# ,…....,a#) Valores de a# not null en la tabla B

PK PK FK

ó también Tablas : A (a# ,.........,b#) B (b#,...........) Valores de b# not null en la tabla A PK FK PK

A B

REGLAS DE MAPEO

b) Tabla : A (a# ,...............,b#,..............) Una sola tabla

PK

Escogemos una de las clases colocando su llave con su atributos, y traemos todos

los atributos de la otra clase.

25 Ing. Edwin Calle Terrazas

a)Tablas : A (a# ,............) B (b#,.............,a#) Valores de a# not null en la tabla B PK PK FK

b) Una sola tabla y cuando existan pocos valores nulos de b# en la tabla A Tablas : A (a# ,................b#,...................) PK Valores nulos permitidos en la tabla A

1 0..1 A B

Asociación entre dos clases: Uno a Uno

Participación Completa (total) en un solo lado

26

a) Tablas : A (a#,.............) B (b#,..........,a#) Valores nulos de a# permitidos en la tabla B PK PK FK

ó también Tablas : A (a#,............,b#) B (b#,............) Valores nulos de b# permitidos en la tabla A PK FK PK

0..1 0..1 A B

Asociación entre dos clases: Uno a Uno

Participación Incompleta (parcial) en ambos lados

27

a) Tablas: A(a#,..........) B(b#,...........,a#) PK PK FK

Valores de a# not null en la tabla B

1 0..* A B

Asociación entre dos clases: Uno a muchos

Participación Completa (Total) del lado muchos hacia el uno

28

A) Tablas : A (a#,...........) B (b# ,..........,a#) PK PK FK

Valores nulos de a# permitidos en la tabla B

0..1 1..* A B

Asociación entre dos clases: Uno a muchos

Participación Completa (Total) en el lado uno e Incompleta en el

lado muchos

29

a) Tablas: A(a#,........) B(b#,...........,a#) PK PK FK

Valores de a# not null en la tabla B

1 1..* A B

Asociación entre dos clases: Uno a muchos

Participación Completa (Total) en ambos lados

30

a) Tablas : A (a#,............) B (b #,.............,a#) PK PK FK Valores nulos de a# permitidos en la tabla B

b) Caso poco común: En tres tablas cuando existan pocos objetos

obligados entre ambas clases. Porque existirían muchos valores nulos al crear las dos tablas, por tanto.

Tablas : A (a#,….....) B(b#,........) R(a#,b#,.......) PK PK PK

Valores a#, b# not null en la tabla R

0..1 0..* A B

Asociación entre dos clases: Uno a muchos

Participación Incompleta (parcial) en ambos lados

31

a) Participación completa (total) en ambos

b) Participación incompleta (parcial) en ambos

1..* 1..* A B

0..* 0..* A B

Asociación entre dos clases: Muchos a muchos

32

c) Participación incompleta (parcial) en un lado y completa (total) en el otro.

PARA TODOS LOS CASOS

Tablas : A(a#,........) B(b#,........) R(a#, b#,.......) PK PK PK

1..* 0..* A B

0..* 1..* A B

33

MAPEO PRACTICA 1: Venta de productos

Cliente (id_cliente,………….)

Categoria (id_categoria,……….)

Producto (codigo,……….., id_categoria)

Ing. Edwin Calle Terrazas 34

PK

PK

PK FK

class Modelo de clases

Cliente

- id_cliente

- nombre

- telefono

- direccion

NotaVenta

- id_venta

- fecha

- monto

Categoria

- id_categoria

- nombre

Producto

- id_producto

- descricion

- precio

- stock

DetalleVenta

- cantidad

- preciov

1

1..* 1..*

1

0..* 1..*

35

NotaVenta (nro_venta,……………,id_cliente)

DetalleVenta (nro_venta, codigo,…………)

FK

PK

PK FK

FK

MAPEO PARA LA COMPOSICIÓN

Id_plan Fecha MontoTotal Plazo

1 02/04/2013 5000 90 días

2 18/04/2013 2000 30 días

Id_plan Id_cuota Fecha Monto

1 1 12/04/2013 1500

1 2 20/05/2013 1500

1 3 27/05/2013 1000

1 4 27/06/2013 1000

2 1 24/04/2013 1500

2 2 27/05/2013 500

PlanPago (id_plan,………….)

Cuota (id_plan, id_cuota,………..)

36

PlanPago

Cuota

class Diagram

PlanPago

- id_plan

- fecha

- montoTotal

- plazo

Cuota

- id_cuota

- fecha

- monto

1..*

1

PK

PK

FK

Ing. Edwin Calle Terrazas

37

MAPEO PARA LA AGREGACIÓN Por ser una relación pasiva, el mapeo de la agregación es como si fuera una relación normal.

Computadora (id_pc,………….)

Perifericos (codigo,………., id_pc)

class Diagram

Computadora

- id_pc

- procesador

- memoria

- discoDuro

- tarjetaMadre

Perifericos

- codigo

- nombre0..*0..1

PK

PK FK

Ing. Edwin Calle Terrazas

38

Id_emp nombre paterno materno telefono sueldo Id_jefe

1 Edwin Calle Terrazas 73133740 7000

2 Daniel Zurita Castro 77012345 9000

3 María Torrico Chávez 70934567 4000 1

4 Mariela Romero Ramírez 60812322 4500 1

5 Marioly López Choque 33465457 8000 1

6 Enrique Calderón Ramos 71034512 5000 2

7 Ernesto Núñez Cabrera 70823122 3000 2

8 Mario Añez Añez 60812345 2000 3

MAPEO EN ASOCIACIONES RECURSIVAS

Empleado(id_emp,………, id_jefe)

En una empresa se desea registrar a los empleados jefes tienen a cargo a muchos

empleados subordinados, y los empleados subordinados pertenecientes a un jefe.

Nota: En este caso los empleados que son jefes se supervisan así mismos.

PK FK

Ing. Edwin Calle Terrazas

class Modelo de clases

Empleado

- id_emp

- nombre

- paterno

- materno

- telefono

- sueldo

jefe

subordinado1..*

tiene

0..1

39

Codigo Nombre CuentaPadre

1.00.00 Activo

1.01.00 Activo Corriente 1.00.00

1.01.01 Caja M/N 1.01.00

1.01.02 Caja M/E 1.01.00

1.02.00 Activo no Corriente 1.00.00

2.00.00 Pasivo

Cuenta (codigo,….……, cuentaPadre)

Cuenta

class Diagram

Cuenta

- codigo

- nombre

cuenta_padre

cuenta_hijo0..*

Tiene

0..1

Se desea registrar el plan de cuentas que tendrá una empresa la cual administra

Su contabilidad a través de un Sistemas Contable.

Nota: Las cuentas de grupos mayores: Activo, Pasivo, Patrimonio, Ingreso y Egreso

no tienen una cuenta padre y las cuentas de movimiento no tienen cuentas hijas.

PK FK

class Diagram

Materia

- sigla

- nombre

0..*

prerrequisito

0..* tiene

es

Sigla Sigla_Prerrequisito

INF120 INF110

MAT102 MAT101

FIS102 FIS100

MAT103 INF119

LIN101 LIN100

INF210 INF120

INF210 MAT103

MAT207 MAT102

FIS200 FIS102

INF211 INF120

INF211 FIS102

Sigla Nombre

INF110 Introducción a la Informática

MAT101 Cálculo I

FIS100 Física I

INF119 Estructuras Discretas

LIN100 Inglés Técnico I

INF120 Programación I

MAT102 Cálculo II

FIS102 Física II

MAT103 Algebra Lineal

LIN101 Inglés Técnico II

INF210 Programación II

MAT207 Ecuaciones Diferenciales

FIS200 Física III

ADM100 Administración

INF211 Arquitectura de Computadoras

Materia Prerrequisito

Materia (sigla, …………)

Prerrequisito (sigla , siglaPrerrequisito,.…..…)

Realizar el registro de las materias con sus respectivos prerrequisitos.

FK

PK

FK

PK

ci Nombres Paterno Materno Telefono Tipo

3868977 Ricardo Suárez Suárez 73147828 T

2244123 María Sánchez Paz 70812312 S

4123123 Jorge Soliz Días 70078799 T

ci Velocidad_tipeo

2244123 60

ci Nivel

3868977 Superior

4123123 Medio

class Diagram

Empleado

- ci

- nombres

- paterno

- materno

- telefono

Secretaria

- velocidad_tipeo

Tecnico

- nivel

Empleado

Secretaria

Técnico

Empleado(ci,……,tipo)

Secretaria(ci,…….)

Tecnico(ci,………..)

MAPEO EN LA HERENCIA

a) Disjunto caso general

Ing. Edwin Calle Terrazas 41

PK

PK

PK

FK

FK

Ing. Edwin Calle Terrazas 42

ci Nombres Paterno Materno Telefono Velocidad_tipeo Nivel Tipo

3868977 Ricardo Suárez Suárez 73147828 Superior T

2244123 María Sánchez Paz 70812312 60 S

4123123 Jorge Soliz Días 70078799 Medio T

b) Disjunto de otra manera, en una sola tabla

Empleado

Empleado (ci,…………..,velocidad_tipeo, nivel, tipo) PK

Ing. Edwin Calle Terrazas 43

Ci Nombre Apellidos Dirección Teléfono Limite_credito Porcentaje TC TV

3838383 Eduardo Vargas Suárez 73147828 2000 1 0

2244123 Ricardo Sánchez Paz 70812312 10 0 1

4123123 Jorge Soliz Días 70078799 5000 15 1 1

3847689 Miguel García Núñez 73120200 3000 1 0

c) Solapamiento en una sola tabla

class Diagram

Persona

- ci

- nombre

- apellidos

- direccion

- telefono

Cliente

- l imite_credito

Vendedor

- porcentaje

Persona(ci,…………..,limite_credito, porcentaje, tc, tv) PK

Ing. Edwin Calle Terrazas 44

LENGUAJE ESTRUCTURADO DE

CONSULTAS (SQL)

Presentamos el lenguaje estructurado de consultas (structured query language)

que permite al usuario crear y manipular una base de datos.

Utilizaremos este lenguaje para modelar el diseño físico de la base de datos.

Ing. Edwin Calle Terrazas 45

create table cliente(

id_cliente int primary key,

nombre varchar(30) not null,

telefono int,

direccion varchar(50)

);

create table categoria(

id_categoria int primary key,

nombre varchar(30),

);

create table producto(

codigo varchar(10) primary key,

descripcion varchar(50) not null,

precio float not null,

id_categoria int not null,

foreign key(id_categoria) references categoria(id_categoria)

on delete cascade

on update cascade

);

CREACIÓN DE TABLAS DE LA PRACTICA 1: Venta de productos

class diagram

Cliente

- id_cliente

- nombre

- telefono

- direccion

NotaVenta

- nro_venta

- fecha

- monto

Producto

- codigo

- descripcion

- precio

Categoria

- id_categoria

- nombre

DetalleVenta

- cantidad

- preciov

0..* 1..*

1..*

11

1..*

on delete cascade y on update cascade se coloca para cumplir la integridad referencial, que dice si un atributo

o conjunto de atributos se define como una llave foránea, sus valores deben existir en la tabla en que ese atributo es llave

principal. Es decir que los datos de la tabla en que el atributo es llave primaria puede ser modificado o

eliminado y causará efecto en los registros de la tabla donde el atributo es foráneo.

Ing. Edwin Calle Terrazas 46

create table notaventa(

nro_venta int primary key,

fecha date not null,

monto float not null,

id_cliente int not null,

foreign key(id_cliente) references cliente(id_cliente)

);

create table detalleventa(

nro_venta int not null,

codigo varchar(10) not null,

cantidad int not null,

previov float not null,

primary key(nro_venta, codigo),

foreign key (nro_venta) references notaventa(nro_venta),

foreign key (codigo) references producto(codigo)

);

Ing. Edwin Calle Terrazas 47

Creación de tablas para la composición

create table PlanPagos(

id_plan int primary key,

fecha date not null,

montoTotal float not null,

plazo varchar(50) not null

);

create table Cuota(

id_plan int not null,

id_cuota int not null,

fecha date not null,

monto float not null,

primary key(id_plan, id_cuota),

foreign key(id_plan) references PlanPagos(id_plan)

);

class Diagram

PlanPagos

- id_plan

- fecha

- montoTotal

- plazo

Cuota

- id_cuota

- fecha

- monto

1..*

1

Ing. Edwin Calle Terrazas 48

class Diagram

Materia

- sigla

- nombre

0..*

prerrequisito

0..* tiene

es

Creación de tablas recursivas

create table Materia(

sigla varchar(10) primary key,

nombre varchar(30) not null

);

create table Prerrequisito(

sigla varchar(10),

sigla_prerrequesito varchar(10),

primary key(sigla, sigla_prerrequisito),

foreign key(sigla) references Materia(sigla),

foreign key(sigla_prerrequisito) references Materia(sigla)

);

tiene

class Diagram

Cuenta

- codigo

- nombre

0..*

cuenta padre

0..1 es

create table Cuenta(

codigo varchar(20) primary key,

nombre varchar(40) not null,

cuenta_padre varchar(20),

foreign key(cuenta_padre) references Cuenta(codigo)

);

49

Creación de tablas para la herencia

Especialización: Disjunta (caso general)

class Diagram

Empleado

- ci

- nombres

- paterno

- materno

- telefono

Secretaria

- velocidad_tipeo

Tecnico

- nivel

create table empleado(

ci int primary key,

nombres varchar(30) not null,

paterno varchar(30) not null,

materno varchar(30),

telefono int,

tipo char(10) not null,

);

create table secretaria(

ci int primary key,

velocidad_tipeo int not null,

foreign key(ci) references empleado(ci)

on delete cascade on update cascade

);

create table tecnico(

ci int not null,

nivel varchar(20) not null,

primary key(ci),

foreign key(ci) references empleado(ci)

on delete cascade on update cascade

);

Ing. Edwin Calle Terrazas

50

create table empleado(

ci int primary key,

nombres varchar(30) not null,

paterno varchar(30) not null,

materno varchar(30),

telefono int not null,

velocidad_tipeo int,

nivel varchar(20),

tipo char not null

);

Especialización: Disjunta (Una sola tabla)

Ing. Edwin Calle Terrazas

51

class Diagram

Persona

- ci

- nombre

- apellidos

- direccion

- telefono

Cliente

- l imite_credito

Vendedor

- porcentaje

Creación de tablas para la herencia

Especialización: Solapamiento (en una sola tabla)

create table persona(

ci int primary key,

nombre varchar(30) not null,

apellidos varchar(30) not null,

direccion varchar(50),

telefono int not null,

limite_credito int,

porcentaje float,

tc tinyint,

tv tinyint

);