coleccion de mariposas

27
Universidad Nacional Autónoma de Honduras UNAH Facultad de Ingeniería Departamento de Ingeniería en sistemas Base de Datos II Proyecto Colección de Mariposas Catedrático: Ing. Eduardo Gross Integrantes: Claudia Melissa Espinal 20061007063 Juan José López 20041008352 Sección: 14:01 Tegucigalpa M.D.C. 6 de Diciembre del 2010

Upload: emim3m

Post on 02-Jul-2015

2.337 views

Category:

Documents


2 download

DESCRIPTION

Problemas de base de datos que consiste en colecciones de mariposas, muestra modelo E-R y Relacional

TRANSCRIPT

Page 1: Coleccion de mariposas

Universidad Nacional Autónoma de Honduras

UNAH

Facultad de Ingeniería

Departamento de Ingeniería en sistemas

Base de Datos II

Proyecto Colección de Mariposas

Catedrático:

Ing. Eduardo Gross

Integrantes:

Claudia Melissa Espinal 20061007063

Juan José López 20041008352

Sección:

14:01

Tegucigalpa M.D.C. 6 de Diciembre del 2010

Page 2: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

1

INDICE

Pág.

Introducción………………………………………………2

Objetivos…………………………………………………..3

Análisis completo del enunciado………………4

Modelo Conceptual…………………….……………5

Análisis de todos los tipos de entidad

Análisis de todos los tipos de interrelación

Modelo relacional……………………………………11

Generar cada tabla con todas las relaciones

Normalizar el modelo

Diccionario de datos

Construcción y el uso de la base de datos

Manipulación de la base de datos

Creación del programa

Conclusiones…………………………………..………26

Page 3: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

2

INTRODUCCION

En el presente informe se documento la resolucion del

segundo problema asignado en clase de Bases de Datos II,

llamado “Colección de Mariposas”, se presentara desde la

definicion del problema hasta la creacion de la base de

datos como una de las propuesta a la resolucion de este

ejercicio.

Para este segundo ejercicio se seguira utilizadon el motor de

bases de datos SQLServer 2005 y la plataforma de

programacion Visual Studio.Net 2005.

Page 4: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

3

OBJETIVOS

Análisis y resolución del problema que permita la

construcción de un modelo entidad-relación y modelo

conceptual.

Práctica de la manipulación de la base de datos a

través de la realización de consultas.

Crear una aplicación que cumpla con todos los

requerimientos presentados.

Page 5: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

4

ANALISIS COMPLETO DEL ENUNCIADO

El ejercicio asignado nos plantea el problema de que se desea crear una base de datos en

la cual se almacene información referente a las mariposas que son objeto de estudio como

también lo son para pertenecer en una colección de estas. Se debe mantener información

de las mariposas capturadas, fecha y lugar de captura del ejemplar así como la persona

que ha hecho la captura.

Actualmente una de las principales tareas de los biólogos es el estudio de la población de

las especies naturales que pueblan España, siendo uno de los insectos unos de los reinos

más estudiados, y dentro de este, el orden de los lepidópteros, mariposas mas

concretamente.

El problema da a conocer ciertos requisitos que se deberán cumplir para la realización del

mismo.

Estos requisitos son los siguientes:

Se considera que un ejemplar de mariposa pertenece a una única especie. Una

especie pertenece a un único género y un género a una única familia natural.

El nombre científico de la especie de mariposas es único, pero el nombre común

que tiene una especie puede variar según la zona geográfica donde se encuentra la

mariposa. Si bien dentro de una determinada zona el nombre común de una

especie es único.

Ya sea para su observación o para formar parte de una colección, la mariposa ha

de ser capturada primero. La captura de cada ejemplar la realiza solo una persona.

Una determinada persona solo puede ser propietaria de una colección, y los

ejemplares de mariposa que pertenecen a esta colección pueden haber sido

capturados por otras personas.

Se desea mantener información de las familias, géneros y especies a las que

pertenecen los ejemplares de mariposas, independientemente de que haya sido

capturado algún ejemplar de los mismos.

Una mariposa solo puede pertenecer a una colección y una colección estará al

menos formada por un ejemplar de mariposa (como es lógico).

El nombre de una zona geográfica donde es capturado un ejemplar es único; es

decir, se considera que no existen dos zonas geográficas con el mismo nombre; no

siendo de interés mantener información añadida sobre los lugares en donde las

mariposas son capturadas.

Page 6: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

5

MODELO CONCEPTUAL

MODELO ENTIDAD-RELACION

FEC_INICIO

EJEMPLAR

ESPECIE

ZONA_GEOGRAFICA

MARIPOSA_OBSERVACION

MARIPOSA_COLLECCION

COLECCION

GENERO

FAMILIA

PERSONA

1

*

ID

ZONA

PARA

ID_MARIPOSA

TIEMPO_OBSERVACION

NOMBRE_COMUN

NOMBRE_ESPECIE ID

NOMBRE_CIENTIFICO

FEC_CAPTURA

ID GENERO

ID

ID FAMILIA

ID NOMBRES

APELLIDOS DNI

ID NOMBRE

VALOR_ESTIMADO

ID_MARIPOSA PRECIO

tiene

pertenece

pertenece pertenece

Fue_capturado_en captura

tiene

pertenece

1

*

1

*

1

*

*

1

1

1 *

*

1

1

*

*

1

1

1

Page 7: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

6

ANALISIS DE TODOS LOS TIPOS DE ENTIDAD

Familia: es la entidad donde se prentende guardar la informacion del tipo de familia al que

pertenece una mariposa, esta posee atributos como ser un id que identifica a la familia y

un campo familia, el cual nos dice cual es la familia.

Especie: es la entidad donde se especifica o da a conocer la especie a la cual pertenece una

mariposa, esta entidad tiene atributos como un id que sirve para identificar la especie y un

campo llamado especie que muestra las especies existentes.

Genero: esta entidad muestra el genero al cual puede pertenecer una mariposa, tiene

atributos como un id el cual identifica a cada uno de los generos existenntes, tambien esta

el atributo genero el que especifica que tipo de genero es la mariposa.

Ejemplar: es la entidad que muestra cual es el ejemplar de mariposa existente ya que

puede ser un ejemplar para colección o bien un ejemplar para observacion. Esta entidad

tiene bien un atributo llamado id para identificar el ejemplar y otro atributo llamado fecha

de captura que es la fecha en la que fue capturada la mariposa.

Zona_geografica: esta entidad muestra la zona geografica en la que fue la captura de la

mariposa, tiene atributos como ser un id para identificar la zona y un campo llamado zona

el cual muestra la zona de la captura.

Persona: esta entidad es la que refleja la persona quien realizo la captura de la mariposa,

en esta se guarda los datos de la persona para ello tiene campos como ser un id para

identificar a la persona como unica, un campo nombre que es el nombre de la persona, un

campo apellidos que guarda los apellidos de la persona y un campo DNI que es el numero

de identidad de la persona.

Page 8: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

7

Colección: es la entidad para identificar la colección de mariposas existentes, tiene

atributos como fecha de inicio para saber la fecha cuando inicio, un campo nombre el cual

es el nombre de la colección, un atributo valor estimado que es el valor en dinero de

cuanto es el precio de la colección y tambien tiene un id para identificar a la misma.

Mariposa_coleccion:es una entidad debil dado que sino existen ejemplares no existen

mariposas para colección. Sirve para guardar todas aquellas mariposas que fueron

capturadas y estan en una colección, tiene atributos como ser un id de la mariposa

capturada y el precio de la misma.

Mariposa_observacion: es una entidad debil dado que sino existen ejemplares no existen

mariposas para observacion. En esta entidad se guardan todas aquellas mariposas que

solo son para observacion y tiene atributos como ser el id para identificar a la mariposa, y

un tiempo de observacion que es el tiempo en que tiene a la mariposa para observarla y

luego la dejan libre.

Page 9: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

8

ANALISIS DE TODOS LOS TIPOS DE INTERRELACION

Es una relacion de uno a muchos

En la relacion muestra que en una familia puede existir o pertenecer muchos generos.

Es una relacion de uno a muchos

En la relacion muestra que en un genero pueden existir o pertenecer muchas especies.

Es una relacion de uno a muchos

En la relacion muestra que en una especie pueden existir o pertenecer muchos ejemplares.

Es una relacion de muchos a uno

En la relacion muestra que muchos ejemplares fueron capturados en una zona geografica

o bien en una zona geografica fueron capturados muchos ejemplares.

FAMILIA GENERO 1 *

pertenece

GENERO ESPECIE 1 *

pertenece

EJEMPLAR ESPECIE 1 *

pertenece

ZONA_GEOGRAFICA EJEMPLAR

Fue_capturado_en

* 1

Page 10: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

9

Es una relacion de muchos a uno

La relacion muestra que muchos ejemplares son capturados por una persona o bien una

mariposa solo puede ser capturada por una unica persona.

Es una relacion de muchos a uno

La relacion muestra que muchos coleccionespueden ser de una persona o bien una persona

puede tener muchas colecciones.

Es una relacion de muchos a uno

La relacion muestra que muchos coleccionespueden ser de una persona o bien una persona

puede tener muchas colecciones.

Es una relacion de muchos a muchos

La relacion muestra que una especie tiene muchos nombres comunes en muchas zonas

especificas.

PERSONA EJEMPLAR * 1

captura

COLECCION PERSONA * 1

tiene

MARIPOSA_COLLECCION COLECCION * 1

pertenece

ESPECIE ZONA_GEOGRAFICA

tiene

* * 1 1

NOMBRE_COMUN

Page 11: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

10

Generalización: relación de uno a uno

Nos muestra que una mariposa_coleccion y una mariposa_observacion son un tipo de

ejemplar que hay y estos tipos van a tener todos los atributos de la entidad ejemplar

aparte de sus propios atributos que los diferencian uno del otro.

La relacion es de uno a uno dado que un ejemplar solo puede ser de mariposa_coleccion o

mariposa_observacion.

MARIPOSA_OBSERVACION MARIPOSA_COLLECCION

EJEMPLAR

1

1

1

Page 12: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

11

MODELO RELACIONAL

DIAGRAMA RELACIONAL ANTES DE NORMALIZAR

Familia(id, Familia)

genero(id, genero, id_ Familia)

especie(id, nombre_especie, nombre_cientifico, id_ genero)

ejemplar(id, id_capturador, id_zona, fec_captura, id_especie, para)

Zona_geografica(id, zona)

Nombre_comun(id_especie,id_ zona, nombre_comun)

persona(id, nombres, apellidos, DNI)

coleccion(id, nombre, valor_estimado, id_dueno, fec_inicio)

Mariposa_coleccion(id_mariposa, precio, id_coleccion)

Mariposa_observacion(id_mariposa, tiempo_observacion)

Page 13: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

12

DIAGRAMA RELACIONAL NORMALIZADO

Familia(id, Familia)

genero(id, genero, id_ Familia)

especie(id, nombre_especie, nombre_cientifico, id_ genero)

ejemplar(id, id_capturador, id_zona, fec_captura, id_especie, id_para)

Zona_geografica(id, zona)

Nombre_comun(id_especie,id_ zona, nombre_comun)

persona(id, nombres, apellidos, DNI)

coleccion(id, nombre, valor_estimado, id_dueno, fec_inicio)

Mariposa_coleccion(id_mariposa, precio, id_coleccion)

Mariposa_observacion(id_mariposa, tiempo_observacion)

Mariposa_para(id, para)

Page 14: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

13

Page 15: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

14

CONSTRUCCION Y USO DE LA BASE DE DATOS

Utilizando el motor sqlSERVER hicimos la base de datos

Creacion de las tablas

Tabla mariposa_para SET ANSI_PADDING ON GO CREATE TABLE [dbo].[mariposa_para]( [id] [int] NOT NULL, [para] [varchar](50) NULL, CONSTRAINT [PK_mariposa_para] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO Tabla persona SET ANSI_PADDING ON GO CREATE TABLE [dbo].[persona]( [id] [int] NOT NULL, [nombre] [varchar](50) NOT NULL, [apellidos] [varchar](50) NOT NULL, [DNI] [varchar](20) NULL, CONSTRAINT [PK_persona] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO Tabla zona_geografica SET ANSI_PADDING ON GO CREATE TABLE [dbo].[zona_geografica]( [id] [int] NOT NULL, [zona] [varchar](50) NOT NULL, CONSTRAINT [PK_zona_geografica] PRIMARY KEY CLUSTERED (

Page 16: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

15

[id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO Tabla familia SET ANSI_PADDING ON GO CREATE TABLE [dbo].[familia]( [id] [int] NOT NULL, [familia] [varchar](50) NOT NULL, CONSTRAINT [PK_familia] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO Tabla genero SET ANSI_PADDING ON GO CREATE TABLE [dbo].[genero]( [id] [int] NOT NULL, [genero] [varchar](50) NOT NULL, [id_familia] [int] NULL, CONSTRAINT [PK_genero] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO Tabla especie SET ANSI_PADDING ON GO CREATE TABLE [dbo].[especie]( [id] [int] NOT NULL, [nombre_especie] [varchar](50) NULL, [nombre_cientifico] [varchar](50) NULL,

Page 17: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

16

[id_genero] [int] NULL, CONSTRAINT [PK_espacie_1] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO Tabla nombre_comun SET ANSI_PADDING ON GO CREATE TABLE [dbo].[nombre_comun]( [id_especie] [int] NULL, [id_zona] [int] NULL, [nombre_comun] [varchar](50) NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO Tabla ejemplar SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ejemplar]( [id] [int] NOT NULL, [id_capturador] [int] NULL, [id_zona] [int] NULL, [fec_captura] [datetime] NULL, [id_especie] [int] NULL, [id_para] [int] NULL, CONSTRAINT [PK_ejemplar] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO Tabla coleccion SET ANSI_PADDING ON GO CREATE TABLE [dbo].[coleccion]( [id] [int] NOT NULL, [nombre] [varchar](50) NULL, [valor_estimado] [bigint] NULL,

Page 18: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

17

[id_dueño] [int] NULL, [fec_inicio] [datetime] NULL, CONSTRAINT [PK_coleccion] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO Tabla mariposa_coleccion SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[mariposa_coleccion]( [id_mariposa] [int] NOT NULL, [precio] [real] NULL, [id_coleccion] [int] NULL, CONSTRAINT [PK_mariposa_coleccion] PRIMARY KEY CLUSTERED ( [id_mariposa] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO Tabla mariposa_observacion SET ANSI_PADDING ON GO CREATE TABLE [dbo].[mariposa_observacion]( [id_mariposa] [int] NOT NULL, [tiempo_observacion] [varchar](50) NULL, CONSTRAINT [PK_mariposa_observacion] PRIMARY KEY CLUSTERED ( [id_mariposa] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO

Page 19: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

18

Creacion de las relaciones(foreing key)

ALTER TABLE [dbo].[coleccion] WITH CHECK ADD CONSTRAINT [FK_coleccion_persona] FOREIGN KEY([id_dueño]) REFERENCES [dbo].[persona] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[coleccion] CHECK CONSTRAINT [FK_coleccion_persona] GO ALTER TABLE [dbo].[ejemplar] WITH CHECK ADD CONSTRAINT [FK_ejemplar_especie] FOREIGN KEY([id_especie]) REFERENCES [dbo].[especie] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[ejemplar] CHECK CONSTRAINT [FK_ejemplar_especie] GO ALTER TABLE [dbo].[ejemplar] WITH CHECK ADD CONSTRAINT [FK_ejemplar_mariposa_para] FOREIGN KEY([id_para]) REFERENCES [dbo].[mariposa_para] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[ejemplar] CHECK CONSTRAINT [FK_ejemplar_mariposa_para] GO ALTER TABLE [dbo].[ejemplar] WITH CHECK ADD CONSTRAINT [FK_ejemplar_persona] FOREIGN KEY([id_capturador]) REFERENCES [dbo].[persona] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[ejemplar] CHECK CONSTRAINT [FK_ejemplar_persona] GO ALTER TABLE [dbo].[ejemplar] WITH CHECK ADD CONSTRAINT [FK_ejemplar_zona_geografica] FOREIGN KEY([id_zona]) REFERENCES [dbo].[zona_geografica] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[ejemplar] CHECK CONSTRAINT [FK_ejemplar_zona_geografica] GO

Page 20: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

19

ALTER TABLE [dbo].[especie] WITH CHECK ADD CONSTRAINT [FK_especie_genero] FOREIGN KEY([id_genero]) REFERENCES [dbo].[genero] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[especie] CHECK CONSTRAINT [FK_especie_genero] GO ALTER TABLE [dbo].[genero] WITH CHECK ADD CONSTRAINT [FK_genero_familia] FOREIGN KEY([id_familia]) REFERENCES [dbo].[familia] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[genero] CHECK CONSTRAINT [FK_genero_familia] GO ALTER TABLE [dbo].[mariposa_coleccion] WITH CHECK ADD CONSTRAINT [FK_mariposa_coleccion_coleccion] FOREIGN KEY([id_coleccion]) REFERENCES [dbo].[coleccion] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[mariposa_coleccion] CHECK CONSTRAINT [FK_mariposa_coleccion_coleccion] GO ALTER TABLE [dbo].[mariposa_coleccion] WITH CHECK ADD CONSTRAINT [FK_mariposa_coleccion_ejemplar] FOREIGN KEY([id_mariposa]) REFERENCES [dbo].[ejemplar] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[mariposa_coleccion] CHECK CONSTRAINT [FK_mariposa_coleccion_ejemplar] GO ALTER TABLE [dbo].[mariposa_observacion] WITH CHECK ADD CONSTRAINT [FK_mariposa_observacion_ejemplar] FOREIGN KEY([id_mariposa]) REFERENCES [dbo].[ejemplar] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[mariposa_observacion] CHECK CONSTRAINT [FK_mariposa_observacion_ejemplar] GO

Page 21: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

20

ALTER TABLE [dbo].[nombre_comun] WITH CHECK ADD CONSTRAINT [FK_nombre_comun_especie] FOREIGN KEY([id_especie]) REFERENCES [dbo].[especie] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[nombre_comun] CHECK CONSTRAINT [FK_nombre_comun_especie] GO ALTER TABLE [dbo].[nombre_comun] WITH CHECK ADD CONSTRAINT [FK_nombre_comun_zona_geografica] FOREIGN KEY([id_zona]) REFERENCES [dbo].[zona_geografica] ([id]) ON UPDATE CASCADE ON DELETE CASCADE GO ALTER TABLE [dbo].[nombre_comun] CHECK CONSTRAINT [FK_nombre_comun_zona_geografica] GO

Page 22: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

21

MANIPULACION DE LA BASE DE DATOS

Creacion de vistas

1. Obtener la informacion correspondiente a las especies de mariposas existentes

en la base de datos, las cuales han sido capturadas despues de abril de 1999

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[Especie_Capturada] AS SELECT dbo.especie.nombre_especie AS Especie FROM dbo.especie INNER JOIN dbo.ejemplar ON dbo.especie.id = dbo.ejemplar.id_especie WHERE (dbo.ejemplar.fec_captura >= CONVERT(DATETIME, '1999-05-01 00:00:00', 102)) GO

2. Obtener los diferentes nombres comunes y los nombres cientificos de cada una de

las especies cuyos ejemplares hayan sido capturados entre los anos 1996 y 1997,

todos ellos ordenados por el nombre de la zona.

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[Nombres] AS SELECT TOP (100) PERCENT dbo.especie.nombre_cientifico, dbo.nombre_comun.nombre_comun FROM dbo.especie INNER JOIN dbo.ejemplar ON dbo.especie.id = dbo.ejemplar.id_especie INNER JOIN dbo.zona_geografica ON dbo.ejemplar.id_zona = dbo.zona_geografica.id INNER JOIN dbo.nombre_comun ON dbo.especie.id = dbo.nombre_comun.id_especie WHERE (DATEPART(yyyy, dbo.ejemplar.fec_captura) BETWEEN 1996 AND 1997) ORDER BY dbo.zona_geografica.zona GO

Page 23: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

22

3. Obtener la mariposa mas cara y mas barata de todas las capturadas, la persona

quien la capturo y a que colección pertenece.

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[Cara_Barata] AS SELECT dbo.mariposa_coleccion.precio AS Precio, dbo.persona.nombre, dbo.coleccion.nombre AS Coleccion FROM dbo.persona INNER JOIN dbo.ejemplar ON dbo.persona.id = dbo.ejemplar.id_capturador INNER JOIN dbo.mariposa_coleccion ON dbo.ejemplar.id = dbo.mariposa_coleccion.id_mariposa INNER JOIN dbo.coleccion ON dbo.mariposa_coleccion.id_coleccion = dbo.coleccion.id WHERE (dbo.mariposa_coleccion.precio = (SELECT MAX(precio) AS Expr1 FROM dbo.mariposa_coleccion AS mariposa_coleccion_1)) UNION SELECT mariposa_coleccion_2.precio AS Precio, persona_1.nombre, coleccion_1.nombre AS Expr1 FROM dbo.persona AS persona_1 INNER JOIN dbo.ejemplar AS ejemplar_1 ON persona_1.id = ejemplar_1.id_capturador INNER JOIN dbo.mariposa_coleccion AS mariposa_coleccion_2 ON ejemplar_1.id = mariposa_coleccion_2.id_mariposa INNER JOIN dbo.coleccion AS coleccion_1 ON mariposa_coleccion_2.id_coleccion = coleccion_1.id WHERE (mariposa_coleccion_2.precio = (SELECT MIN(precio) AS Expr1 FROM dbo.mariposa_coleccion AS mariposa_coleccion_1)) GO

4. Obtener la familia de las mariposas cuyos ejemplares han sido liberados.

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[familias_liberadas] AS SELECT DISTINCT dbo.familia.familia FROM dbo.familia INNER JOIN dbo.genero ON dbo.familia.id = dbo.genero.id_familia INNER JOIN dbo.especie ON dbo.genero.id = dbo.especie.id_genero INNER JOIN dbo.ejemplar ON dbo.especie.id = dbo.ejemplar.id_especie WHERE (dbo.ejemplar.id_para = 1) GO

Page 24: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

23

5. Obtener la informacion sobre las familias, generos y especies de mariposas que

nunca hayan sido capturados.

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[Info_familia_genero_especie] AS SELECT DISTINCT dbo.especie.nombre_especie, dbo.genero.genero, dbo.familia.familia FROM dbo.especie INNER JOIN dbo.genero ON dbo.especie.id_genero = dbo.genero.id INNER JOIN dbo.familia ON dbo.genero.id_familia = dbo.familia.id except SELECT DISTINCT dbo.especie.nombre_especie, dbo.genero.genero, dbo.familia.familia FROM dbo.ejemplar INNER JOIN dbo.especie ON dbo.ejemplar.id_especie = dbo.especie.id INNER JOIN dbo.genero ON dbo.especie.id_genero = dbo.genero.id INNER JOIN dbo.familia ON dbo.genero.id_familia = dbo.familia.id GO

6. Obtener ordenadas por el numero de capturas informacion de las zonas

geograficas en las que se hayan realizado mas de 6 capturas.

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[Zona_Mas6Capturas] AS SELECT TOP (100) PERCENT dbo.zona_geografica.zona, COUNT(dbo.ejemplar.id) AS [Numero Mariposas] FROM dbo.zona_geografica INNER JOIN dbo.ejemplar ON dbo.zona_geografica.id = dbo.ejemplar.id_zona GROUP BY dbo.zona_geografica.zona HAVING (COUNT(dbo.ejemplar.id) > 6) ORDER BY [Numero Mariposas] GO

Page 25: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

24

7. Crear una vista para todas las colecciones iniciadas a partir de 1996 y que

permita consultar simultaneamente los atributos dni, nombre, apellidos y precio

estimado.

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[Colecciones_iniciadas] AS SELECT dbo.coleccion.nombre AS Coleccion, dbo.coleccion.valor_estimado, dbo.persona.nombre, dbo.persona.apellidos, dbo.persona.DNI FROM dbo.coleccion INNER JOIN dbo.persona ON dbo.coleccion.id_dueño = dbo.persona.id WHERE (DATEPART(yyyy, dbo.coleccion.fec_inicio) >= 1996) GO

8. Realizar una consulta sobre la vista colección

SELECT * FROM Colecciones_iniciadas

SELECT * FROM Colecciones_iniciadas WHERE valor_estimado>10000 SELECT nombre, coleccion, valor_estimado FROM Colecciones_iniciadas WHERE DNI='0801-1985-54561’

9. Obtener la informacion de las personas que han capturado ejemplares antes del

5 de noviembre de 1980, pero que no tienen ninguna colección.

SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[personas_sinColeccion] AS SELECT DISTINCT dbo.persona.id, dbo.persona.nombre, dbo.persona.apellidos, dbo.persona.DNI FROM dbo.persona INNER JOIN dbo.ejemplar ON dbo.persona.id = dbo.ejemplar.id_capturador WHERE (dbo.ejemplar.fec_captura < '5-11-1980') except SELECT dbo.persona.id, dbo.persona.nombre, dbo.persona.apellidos, dbo.persona.DNI FROM dbo.persona INNER JOIN dbo.coleccion ON dbo.persona.id = dbo.coleccion.id_dueño GO

Page 26: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

25

10. Actualizar el valor estimado de las colecciones a valor real de la suma de los

ejemplares que la componen.

GO CREATE PROCEDURE [dbo].[actualizar_precio_estimado] AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; update coleccion set valor_estimado = (select sum(precio) from mariposa_coleccion where id_coleccion =id) END GO

11. Actualizar el precio de los ejemplares de las colecciones de nuestra base de datos

en un tanto porciento dado y según el precio de los mismos, considerar la

existencia de tres intervalos: menor de 7000, de 7000 a 10000 y mayor de 10000.

GO CREATE PROCEDURE [dbo].[actualizar_PrecioEjemplares] @porcentaje real AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; update mariposa_coleccion set precio= (case when precio<7000 then precio*(1+@porcentaje) when precio>=7000 and precio<10000 then precio*(1+(2*(@porcentaje))) else precio*(1+(3*(@porcentaje))) end) END GO

Page 27: Coleccion de mariposas

Bases de Datos II Claudia Melissa Espinal Juan Jose Lopez

26

CONCLUSIONES

Para ayuda de resolucion del problema se tuvieron que crear algunas

vistas el motor para facilitar la visualizacion de los datos requeridos.

El uso de los procedimientos hace que sea mas facil la manipulacion de

la base de datos.

Se considero cada supuesto planteado al inicio del problema para la

delimitacion del mismo.