coleccion de mariposas

of 27/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

Post on 02-Jul-2015

2.308 views

Category:

Documents

2 download

Embed Size (px)

DESCRIPTION

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

TRANSCRIPT

  • 1. -5872325-8645520052118785138035007610228600001158240668020000-4135755336232500Universidad Nacional Autnoma de Honduras
    UNAH
    Facultad de Ingeniera
    -513572443402200Departamento de Ingeniera en sistemas
    Base de Datos II
    Proyecto Coleccin de Mariposas
    42379905334000Catedrtico:
    48858314635500Ing. Eduardo Gross
    Integrantes:
    Claudia Melissa Espinal20061007063
    Juan Jos Lpez20041008352
    Seccin:
    14:01
    5643563131937400-3370898350628500-10393691644082002966720349821500Tegucigalpa M.D.C. 6 de Diciembre del 2010
    INDICE
    Pg.
    Introduccin2
    Objetivos..3
    Anlisis completo del enunciado4
    Modelo Conceptual.5
    Anlisis de todos los tipos de entidad
    Anlisis de todos los tipos de interrelacin
    Modelo relacional11
    Generar cada tabla con todas las relaciones
    Normalizar el modelo
    Diccionario de datos
    Construccin y el uso de la base de datos
    Manipulacin de la base de datos
    Creacin del programa
    Conclusiones..26
    INTRODUCCION
    En el presente informe se documento la resolucion del segundo problema asignado en clase de Bases de Datos II, llamado Coleccin de Mariposas, se presentara desde la definicion del problema hasta la creacion de la base de datoscomo 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.
    OBJETIVOS
    Anlisis y resolucin del problema que permita la construccin de un modelo entidad-relacin y modelo conceptual.
    Prctica de la manipulacin de la base de datos a travs de la realizacin de consultas.
    Crear una aplicacin que cumpla con todos los requerimientos presentados.
    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 informacin referente a las mariposas que son objeto de estudio como tambin lo son para pertenecer en una coleccin de estas. Se debe mantener informacin 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 bilogos es el estudio de la poblacin de las especies naturales que pueblan Espaa, siendo uno de los insectos unos de los reinos ms estudiados, y dentro de este, el orden de los lepidpteros, mariposas mas concretamente.
    El problema da a conocer ciertos requisitos que se debern cumplir para la realizacin 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 gnero y un gnero a una nica familia natural.
    El nombre cientfico de la especie de mariposas es nico, pero el nombre comn que tiene una especie puede variar segn la zona geogrfica donde se encuentra la mariposa. Si bien dentro de una determinada zona el nombre comn de una especie es nico.
    Ya sea para su observacin o para formar parte de una coleccin, 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 coleccin, y los ejemplares de mariposa que pertenecen a esta coleccinpueden haber sido capturados por otras personas.
    Se desea mantener informacin de las familias, gneros y especies a las que pertenecen los ejemplares de mariposas, independientemente de que haya sido capturado algn ejemplar de los mismos.
    Una mariposa solo puede pertenecera una coleccin y una coleccin estar al menos formada por un ejemplar de mariposa (como es lgico).
    El nombre de una zona geogrfica donde es capturado un ejemplar es nico; es decir, se considera que no existen dos zonas geogrficas con el mismo nombre; no siendo de inters mantener informacin aadida sobre los lugares en donde las mariposas son capturadas.
    MODELO CONCEPTUAL
    422551111186400663605317943pertenecepertenece435927544288NOMBRE_COMUN00NOMBRE_COMUNMODELO ENTIDAD-RELACION
    1789430103505**3736340118110**3020695120015114390390169545tiene00tiene3971168128713434247030946700211485430797502046274195580057848532004005772053200990907415140335129349531496030238703225802077085127635ESPECIE00ESPECIE
    436308525400**2447290819151126949401168400769951334645NOMBRE_CIENTIFICO00NOMBRE_CIENTIFICO21840691168400
    295910107951146545530162501041731118745NOMBRE_ESPECIE00NOMBRE_ESPECIE1909555241575ID00ID-60325272415GENERO00GENERO
    89408077530**6070609334501333456951910929418951910
    2880050166980pertenecepertenece1431925302895pertenecepertenece2513803116205-99060115901GENERO00GENERO368935232741ID00ID1142365236220
    71691553975115055870114300ID00ID4614545307340ZONA00ZONA53778152349500200025134536045529513208007167672949500-155575113665FAMILIA00FAMILIA
    441007528892511823582256846captura0captura3077033270332Fue_capturado_en00Fue_capturado_en5121275844550-370840174321FAMILIA00FAMILIA200660258141ID00ID
    18154651631950243903530480**1619250210820**4066540180340112922270228600**4359910208915ZONA_GEOGRAFICA00ZONA_GEOGRAFICA3590925203835176530219406ID00ID42672033083509105902051051885315217170EJEMPLAR00EJEMPLAR
    2595245186055112204085577850230101816244002184060186364003983355615950-291769278765DNI00DNI-477520159716APELLIDOS00APELLIDOS-31335917145NOMBRES00NOMBRES215903256225035052012382501099539196998012802935877402938972587740
    7308857556511190925323333ID00ID1414588212725FEC_CAPTURA00FEC_CAPTURA336552159007167673344680-198120183515PERSONA00PERSONA
    178435202565112064051529610
    2898140216535PARA00PARA24130335280
    27260551193800017157702044700044894521590tiene00tiene
    -41275027241500208280134620**3992576301625TIEMPO_OBSERVACION00TIEMPO_OBSERVACION474345053644ID_MARIPOSA00ID_MARIPOSA55391051403350-360045328295COLECCION00COLECCION
    734695-4445114053840318770382206518542011-701040317831FEC_INICIO00FEC_INICIO17145-6350024303957344035272917335504260853225800748969199942843915202565005217795463550
    -849546208805VALOR_ESTIMADO00VALOR_ESTIMADO-252730333071NOMBRE00NOMBRE410781529845MARIPOSA_OBSERVACION0MARIPOSA_OBSERVACION
    15487653352800181292511303011175260114631ID00ID
    133540526035**187942721703206610355651510426702501900160850049457MARIPOSA_COLLECCION0MARIPOSA_COLLECCION
    42481593980pertenecepertenece1783715330200
    201264632385PRECIO00PRECIO1911019186690ID_MARIPOSA00ID_MARIPOSA
    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 coleccin 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.
    Coleccin: es la entidad para identificar la coleccin 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 coleccin, un atributo valor estimado que es el valor en dinero de cuanto es el precio de la coleccin 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 coleccin. Sirve para guardar todas aquellas mariposas que fueron capturadas y estan en una coleccin, 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.
    ANALISIS DE TODOS LOS TIPOS DE INTERRELACION
    Es una relacion de uno a muchos
    13131804064011300863097155**24168092876551243965287655333057594615GENERO00GENERO2031365101218434975144145FAMILIA00FAMILIA
    187007574295pertenecepertenece
    En la relacion muestra que en una familia puede existir o pertenecer muchos generos.
    Es una relacion de uno a muchos
    3079750228600**13843001720851121837652190753477260266700ESPECIE00ESPECIE392430243840GENERO00GENERO
    1936750245110pertenecepertenece258762576835136334576835
    En la relacion muestra que en un genero pueden existir o pertenecer muchas especies.
    Es una relacion de uno a muchos
    341566523368003089275270510**139382521399511467360290830ESPECIE00ESPECIE3475990300990EJEMPLAR00EJEMPLAR2166620259715
    1955800318135pertenecepertenece256857572390139192081915
    En la relacion muestra que en una especie pueden existir o pertenecer muchos ejemplares.
    Es una relacion de muchos a uno
    50038026416003179445231140111598295257810**23012402527303474085368935ZONA_GEOGRAFICA00ZONA_GEOGRAFICA548005327660EJEMPLAR00EJEMPLAR
    1942465295275Fue_capturado_en00Fue_capturado_en160083580010
    En la relacion muestra que muchos ejemplares fueron capturados en una zona geografica o bien en una zona geografica fueron capturados muchos ejemplares.
    Es una relacion de muchos a uno
    66294019431003364865158750111783715185420**734060245745EJEMPLAR00EJEMPLAR3655060185420PERSONA00PERSONA2384405179070
    2281555275590captura0captura179133522860
    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
    3593465286385PERSONA00PERSONA2461895292100535305308610COLECCION00COLECCION48260025273000
    2373630339090tiene00tiene3302635-123190111721485-96520**1720215118745
    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
    3533140238125112152650264795**27679652755902660652489200325755303530MARIPOSA_COLLECCION0MARIPOSA_COLLECCION
    2578735305435pertenecepertenece20396201390653830955-4445COLECCION00COLECCION3778250-6032500
    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
    266382516192500279781093980NOMBRE_COMUN00NOMBRE_COMUN
    3627755203835111647825193040112830194259080**2214245249555**3914775326390ZONA_GEOGRAFICA00ZONA_GEOGRAFICA683895327660ESPECIE00ESPECIE2477770255270
    16059151111250
    238696555880tiene0tiene
    La relacion muestra que una especie tiene muchos nombres comunes en muchas zonas especificas.
    Generalizacin: relacin de uno a uno
    195516526606502026285317500EJEMPLAR00EJEMPLAR
    167259021653500
    25317456096011
    15182851524011318706599695101208915320040MARIPOSA_COLLECCION0MARIPOSA_COLLECCION14922526543002974340414655MARIPOSA_OBSERVACION0MARIPOSA_OBSERVACION2920365362585
    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.
    MODELO RELACIONAL
    DIAGRAMA RELACIONAL ANTES DE NORMALIZAR
    291084047097952910840487172034347154490720786765449072078676542811701920240539559517106904814570-2990865576570-2990865033645-2990852252344-2990852252345786765203327026441404224020-895364376420121539019856457010403700145-8953537858701920240312864519202403281045351091527000202063115270002013392153128645-38113328670-38102157094-895353785870-895352357120-8953523571201215390203327012153902700020012153902557145206311520332700033204152033270-895352157095-895351814195-80010181419570104014617700032537401461770-8001011760200-800101576070-80010117602063436592837063436533782001539240928370-80010499745-895361061720-89535499745628655166995Mariposa_observacion(id_mariposa, tiempo_observacion)00Mariposa_observacion(id_mariposa, tiempo_observacion)533404576445Mariposa_coleccion(id_mariposa, precio, id_coleccion)00Mariposa_coleccion(id_mariposa, precio, id_coleccion)628653490595persona(id, nombres, apellidos, DNI)00persona(id, nombres, apellidos, DNI)533402938145Nombre_comun(id_especie,id_ zona, nombre_comun)00Nombre_comun(id_especie,id_ zona, nombre_comun)533402357120Zona_geografica(id, zona)00Zona_geografica(id, zona)533404033520coleccion(id, nombre, valor_estimado, id_dueno, fec_inicio)00coleccion(id, nombre, valor_estimado, id_dueno, fec_inicio)533401814195ejemplar(id, id_capturador, id_zona, fec_captura, id_especie,para)00ejemplar(id, id_capturador, id_zona, fec_captura, id_especie,para)533401242695especie(id, nombre_especie,nombre_cientifico, id_ genero)0especie(id, nombre_especie,nombre_cientifico, id_ genero)53340728345genero(id,genero, id_ Familia)0genero(id,genero, id_ Familia)53340166370Familia(id, Familia)0Familia(id, Familia)
    DIAGRAMA RELACIONAL NORMALIZADO
    291084047097952910840487172034347154490720786765449072078676542811701920240539559517106904814570-2990865576570-2990865033645-2990852252344-2990852252345786765203327026441404224020-895364376420121539019856457010403700145-8953537858701920240312864519202403281045351091527000202063115270002013392153128645-38113328670-38102157094-895353785870-895352357120-8953523571201215390203327012153902700020012153902557145206311520332700033204152033270-895352157095-895351814195-80010181419570104014617700032537401461770-8001011760200-800101576070-80010117602063436592837063436533782001539240928370-80010499745-895361061720-89535499745628655166995Mariposa_observacion(id_mariposa, tiempo_observacion)00Mariposa_observacion(id_mariposa, tiempo_observacion)533404576445Mariposa_coleccion(id_mariposa, precio, id_coleccion)00Mariposa_coleccion(id_mariposa, precio, id_coleccion)628653490595persona(id, nombres, apellidos, DNI)00persona(id, nombres, apellidos, DNI)533402938145Nombre_comun(id_especie,id_ zona, nombre_comun)00Nombre_comun(id_especie,id_ zona, nombre_comun)533402357120Zona_geografica(id, zona)00Zona_geografica(id, zona)533404033520coleccion(id, nombre, valor_estimado, id_dueno, fec_inicio)00coleccion(id, nombre, valor_estimado, id_dueno, fec_inicio)533401242695especie(id, nombre_especie,nombre_cientifico, id_ genero)0especie(id, nombre_especie,nombre_cientifico, id_ genero)53340728345genero(id,genero, id_ Familia)0genero(id,genero, id_ Familia)53340166370Familia(id, Familia)0Familia(id, Familia)
    53340339725ejemplar(id, id_capturador, id_zona, fec_captura, id_especie,id_para)00ejemplar(id, id_capturador, id_zona, fec_captura, id_especie,id_para)
    39871651631953987165182244
    111061534099553340102870Mariposa_para(id, para)00Mariposa_para(id, para)
    111061568580
    -8458206667500
    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
    (
    [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,
    [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,
    [id_dueo] [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
    Creacion de las relaciones(foreing key)
    ALTER TABLE [dbo].[coleccion]WITH CHECK ADDCONSTRAINT [FK_coleccion_persona] FOREIGN KEY([id_dueo])
    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 ADDCONSTRAINT [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 ADDCONSTRAINT [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 ADDCONSTRAINT [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 ADDCONSTRAINT [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
    ALTER TABLE [dbo].[especie]WITH CHECK ADDCONSTRAINT [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 ADDCONSTRAINT [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 ADDCONSTRAINT [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 ADDCONSTRAINT [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 ADDCONSTRAINT [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
    ALTER TABLE [dbo].[nombre_comun]WITH CHECK ADDCONSTRAINT [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 ADDCONSTRAINT [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
    MANIPULACION DE LA BASE DE DATOS
    Creacion de vistas
    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
    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
    Obtener la mariposa mas cara y mas barata de todas las capturadas, la persona quien la capturo y a que coleccin 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
    FROMdbo.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
    FROMdbo.mariposa_coleccion AS mariposa_coleccion_1))
    GO
    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
    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
    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
    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_dueo = dbo.persona.id
    WHERE (DATEPART(yyyy, dbo.coleccion.fec_inicio) >= 1996)
    GO
    Realizar una consulta sobre la vista coleccin
    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
    Obtener la informacion de las personas que han capturado ejemplares antes del 5 de noviembre de 1980, pero que no tienen ninguna coleccin.
    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_dueo
    GO
    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
    Actualizar el precio de los ejemplares de las colecciones de nuestra base de datos en un tanto porciento dado y segn 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 and precio