diseño de base de datos moo
TRANSCRIPT
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.
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..*
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
);