Atdfi103 s10 Grupo 1
Atdfi103 s10 Grupo 1
Atdfi103 s10 Grupo 1
Desafío 3
Semana 10 Evaluación Sumativa
Grupal
Fecha:
21 de Mayo de 2023
_____________________
Nombres
Profesión Ingenieria Civil industrial
Institución República – Advance
Ciudad - País Santiago, Chile
Correo electrónico
INTRODUCCIÓN
En atención a lo solicitado por el hospital Veterinario Mascota Feliz hemos diseñado un modelo que propone la integración de la
información en función al modelo de entidad relación el que permitirá, entregar información sobre la atención y los procedimientos que
se realizan a una mascota.
En este informe, les proponemos una solución eficiente para la gestión de datos en su veterinaria mediante un modelo de datos bien
diseñada y estructurada. La base de datos que proponemos cubre las necesidades específicas de su empresa y permite una gestión
segura y eficiente de la información.
Esta base de datos le permitirá almacenar y acceder rápidamente a información importante sobre los clientes, sus mascotas, sus
historiales médicos y los servicios realizados. Además, podrán generar informes detallados sobre el rendimiento de su negocio y análisis
de datos que les ayudarán a tomar decisiones informadas para el crecimiento de su veterinaria.
En este informe encontrarán información detallada sobre la propuesta de base de datos, su funcionamiento y los beneficios que puede
ofrecer a su negocio. Esperamos que esta propuesta sea de su interés y estamos disponibles para discutir cualquier pregunta o
comentario que puedan tener.
Diagrama Entidad Relación
Los usuarios a los que están pesado este modelo son los siguientes:
Administradores de sucursal: en este modelo los administradores podrán realizar estadísticas sobre el funcionamiento y las prestaciones
realizadas en una sucursal determinada; así pueden realizar estrategias para la administración eficaz de los recursos.
Funcionarios: podrán ejecutar, realizar seguimiento y controles a los procedimientos realizados a las mascotas que ingresen a la
Veterinaria.
Clientes: podrán verificar las actividades realizadas y los costos asociados a estas.
Tablas asociadas
Para la generación de la base de datos, hemos tomado las siguientes entidades, con sus atributos para que se relacionen entre sí:
Mascota Feliz
Entidades elegidas:
1. Entidad "Mascota": Se eligió esta entidad ya que, es el objeto principal de los servicios prestados por la veterinaria móvil. Se
consideraron los atributos "tipo”, “raza”, “nombre”, “edad”, “tamaño" y "peso" ya que, son los datos principales que se necesitan
para identificar a cada mascota.
2. Entidad "Tutor": Esta entidad se eligió ya que, es necesario registrar los datos del tutor para poder ubicar la dirección donde se
debe prestar el servicio a domicilio y para contactar al tutor en caso de emergencia. Los atributos elegidos son "nombre”, “rut”,
“dirección”, “email" y "teléfono".
3. Entidad "Vehículo": Esta entidad se eligió ya que, se necesita registrar los datos del vehículo que se utilizará para prestar el
servicio a domicilio. Se consideraron los atributos "patente”, “marca”, “modelo" y "año" ya que, son los datos principales para
identificar a cada vehículo.
4. Entidad "Profesional": Esta entidad se eligió ya que, es necesario registrar los datos de los profesionales que estarán a cargo de
cada vehículo y prestarán los servicios. Se consideraron los atributos "nombre”, “rut" y "especialidad" ya que, son los datos
principales para identificar a cada profesional.
5. Entidad “Veterinaria”: Esta entidad se eligió ya que, es necesario tener los datos de dónde está ubicada la veterinaria a realizar
los servicios. Se consideraron los atributos “Código”, “Nombre” y “Dirección” ya que, son los datos relevantes para identificar esta
información.
6. Entidad "Servicios": Esta entidad se eligió ya que, es necesario registrar los datos de los servicios a domicilio que se prestarán. Se
consideraron los atributos “Tipo de Servicio”, “Código de Servicio”, “Pago” y "fecha" ya que, son los datos principales para
programar y realizar los servicios.
7. Entidad "Insumos": Esta entidad se eligió ya que, es necesario registrar los datos de los insumos que se utilizarán en los servicios.
Se consideraron los atributos “Código”, “Tipo de Insumo”, “nombre" y "descripción" ya que, son los datos principales para
identificar y describir los insumos.
8. Entidad “Ficha”: Esta entidad se eligió ya que, es necesario tener un registro de cada mascota y su tutor. Se consideraron los
atributos “ID_Ficha” y “Descripción” como los datos principales para poder identificar a la mascota y su tutor.
Cardinalidades elegidas:
1. Una mascota pertenece a un único tutor, pero un tutor puede tener varias mascotas (cardinalidad 1:N)
2. Un vehículo es utilizado a lo menos por un profesional, pero un profesional puede utilizar sólo un vehículo (cardinalidad 1:N)
3. Una veterinaria puede hacer varios servicios y varios servicio pueden ser ejecutados en sólo una veterinaria (1:N)
4. Un servicio puede incluir varios insumos, y un insumo puede ser utilizado en varios servicios (cardinalidad N:M)
5. Una ficha puede incluir sólo una mascota y una mascota puede tener sólo una ficha (1:1)
6. Una veterinaria puede tener varios profesionales, pero un profesional puede trabajar en sólo una veterinaria (N:1)
7. Un vehículo puede realizar varios servicios, pero sólo un servicio puede utilizar un vehículo (N:1)
8. Una veterinaria puede atender a varias mascotas pero una mascota se puede atender en sólo una veterinaria (1:N)
1. Para la entidad "Mascota": la clave es el atributo "nombre" (PK) junto con el atributo "rut" del tutor (FK), ya que no se esperan
mascotas con el mismo nombre y tutor.
2. Para la entidad "Tutor": la clave es el atributo "rut", ya que cada tutor tiene un número único de rut.
3. Para la entidad "Vehículo": la clave es el atributo "patente", ya que cada vehículo tiene una patente única.
4. Para la entidad "Profesional": la clave es el atributo "rut", ya que cada profesional tiene un número único de rut.
5. Para la entidad "Servicios”: la clave son los atributos “Codigo de Servicio” y “Tipo de Servicio”, ya que cada servicio está asignado
a un único código y no se espera que se repita el tipo de servicio entregado.
6. Para la entidad “Insumos”: la clave es el atributo “Código”, ya que cada insumo estará asociado a un único código designado al
producto.
7. Entidad “Ficha”: la clave es el atributo “ID_Ficha”, ya que cada mascota y tutor tiene un número único en su ficha.
Normalización
La normalización de tablas en esta base de datos nos ayuda a eliminar la redundancia, mantener la integridad de los datos, mejorar el
rendimiento de las consultas y proporcionar flexibilidad y escalabilidad. Además, facilita el diseño y la comprensión de la estructura de la
base de datos.
En la normalización hemos construidos tablas para asignar las relaciones con cardinalidad de Muchos a Muchos; hemos reasignado
atributos en tablas es específicas. Con estas medidas eliminados la redundancia en los datos, generamos una escalabilidad mayor del
modelo y podemos mejorar las consultas a esta base de datos.
Normalización de tablas:
Eliminamos las entidades Nombre, que se utilizaban en las entidades profesionales y tutor. Con esta eliminación las dependencias
parciales y sacamos los grupos de datos repetidos de la base de datos.
Descomponemos en tablas Tipo_Insumos, Tamaño, Raza, Tipo_Mascota y Forma_Pago, para que estos atributos no claves faciliten la
entrega de datos.
Para las realizaciones Ejecuta y Tiene, hemos construido las tablas Ficha_Servicio y Servicio_Insumo para asociar la cardinalidad M:N
(muchos a muchos)
Diagrama de Base de Datos
Forma_Pago
Pago
Boleta
M onto
Fecha
Forma_Pago
Insumo Servicio_Insumo
Cod_Insumo
Id_Serv_Insu
Servicio
Nombre
Id_Servicio Id_Servicio
Descripción
Cod_Insumo
Tipo_Servicio
Fecha
Tipo_Insumo
Boleta
Id_Servicio
Tipo_servicio
Servicio
Vehiculo
Tipo_Insumo
id_Tipo_Insumo
Tipo_Insumo
Ficha_Servicio Vehiculo
Id_Ficha_Serv Patente
N_Ficha M odelo
Id_Servicio
Tamaño M arca
Id_Tamaño Año
Tamaño
Profesional
Rut
Veterinaria
Nombre Cod_Sucursal
Apellido
Ficha Mascota
Nombre
N_Ficha
Id_M ascota
Fecha_Nac
Tipo_Mascota
Direccion
Descripción
Nombre
Especialidad
id_Tipo_M ascota
Sucursal
Peso
Sucursal
Tipo_M ascota
M ascota
Edad
Tutor
Raza
Tamaño
Especialidad
Raza
Id_Raza
Tutor
Raza
Rut
Nombre
Apellido
Dirección
Teléfono
Script Base de Datos
Para la generación de nuestra base de datos, hemos seleccionado el motor de base de datos Microsoft SQL Server. Con SQL Server
Management Studio (SSMS) la herramienta de administración y desarrollo utilizada para trabajar con bases de datos de Microsoft SQL
Server hemos administrado, configurado, desarrollado y depurado bases de datos de la Veterinaria, obteniendo así el siguiente script en
donde creamos la base de datos definiendo su nombre, tamaño, ubicación lógica y tablas pertenecientes.
Creación de Tablas
USE [Veterinaria]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Especialidad](
[Id_Especialidad] [int] IDENTITY(1,1) NOT NULL,
[Especialidad] [varchar](20) NOT NULL,
CONSTRAINT [PK_Especialidad] PRIMARY KEY CLUSTERED
(
[Id_Especialidad] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Ficha](
[N_Ficha] [int] IDENTITY(1,1) NOT NULL,
[Descripción] [varchar](max) ,
[Sucursal] [int] NOT NULL,
[Mascota] [int] NOT NULL,
[Tutor] [varchar](15) NOT NULL,
CONSTRAINT [PK_Ficha] PRIMARY KEY CLUSTERED
(
[N_Ficha] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Ficha_Servicio](
[Id_Ficha_Serv] [int] IDENTITY(1,1) NOT NULL,
[N_Ficha] [int] NOT NULL,
[Id_Servicio] [int] NOT NULL,
CONSTRAINT [PK_Ficha_Servicio] PRIMARY KEY CLUSTERED
(
[Id_Ficha_Serv] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Forma_Pago](
[Id_Forma_Pago] [int] IDENTITY(1,1) NOT NULL,
[Forma_Pago] [varchar](20) NOT NULL,
CONSTRAINT [PK_Forma_Pago] PRIMARY KEY CLUSTERED
(
[Id_Forma_Pago] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Insumo](
[Cod_Insumo] [int] IDENTITY(1,1) NOT NULL,
[Nombre] [varchar](30) NOT NULL,
[Descripción] [varchar](50) NOT NULL,
[Tipo_Insumo] [int] NOT NULL,
CONSTRAINT [PK_Insumo] PRIMARY KEY CLUSTERED
(
[Cod_Insumo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Mascota](
[Id_Mascota] [int] IDENTITY(1,1) NOT NULL,
[Nombre] [varchar](20) NOT NULL,
[Peso] [int] NOT NULL,
[Edad] [int] NOT NULL,
[Raza] [int] NOT NULL,
[Tamaño] [int] NOT NULL,
[Tipo_Mascota] [int] NOT NULL,
CONSTRAINT [PK_Mascota] PRIMARY KEY CLUSTERED
(
[Id_Mascota] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Pago](
[Boleta] [int] IDENTITY(138942,1) NOT NULL,
[Monto] [int] NOT NULL,
[Fecha] [date] NOT NULL,
[Forma_Pago] [int] NOT NULL,
CONSTRAINT [PK_Pago] PRIMARY KEY CLUSTERED
(
[Boleta] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Profesional](
[Rut] [varchar](15) NOT NULL,
[Nombre] [varchar](50) NOT NULL,
[Apellido] [varchar](50) NOT NULL,
[Fecha_Nac] [date] NOT NULL,
[Especialidad] [int] NOT NULL,
[Sucursal] [int] NOT NULL,
CONSTRAINT [PK_Profesional] PRIMARY KEY CLUSTERED
(
[Rut] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Raza](
[Id_Raza] [int] IDENTITY(1,1) NOT NULL,
[Raza] [varchar](20) NOT NULL,
CONSTRAINT [PK_Raza] PRIMARY KEY CLUSTERED
(
[Id_Raza] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Servicio](
[Id_Servicio] [int] IDENTITY(1,1) NOT NULL,
[Fecha] [date] NOT NULL,
[Boleta] [int] NOT NULL,
[Tipo_servicio] [int] NOT NULL,
[Vehiculo] [varchar](6),
CONSTRAINT [PK_Servicio] PRIMARY KEY CLUSTERED
(
[Id_Servicio] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Servicio_Insumo](
[Id_Serv_Insu] [int] IDENTITY(1,1) NOT NULL,
[Id_Servicio] [int] NOT NULL,
[Cod_Insumo] [int] NOT NULL,
CONSTRAINT [PK_Servicio_Insumo] PRIMARY KEY CLUSTERED
(
[Id_Serv_Insu] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Tamaño](
[Id_Tamaño] [int] IDENTITY(1,1) NOT NULL,
[Tamaño] [varchar](30) NOT NULL,
CONSTRAINT [PK_Tamaño] PRIMARY KEY CLUSTERED
(
[Id_Tamaño] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Tipo_Insumo](
[id_Tipo_Insumo] [int] NOT NULL,
[Tipo_Insumo] [varchar](20) NOT NULL,
CONSTRAINT [PK_Tipo_Insumo] PRIMARY KEY CLUSTERED
(
[id_Tipo_Insumo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Tipo_Mascota](
[id_Tipo_Mascota] [int] NOT NULL,
[Tipo_Mascota] [varchar](20) NOT NULL,
CONSTRAINT [PK_Tipo_Mascota] PRIMARY KEY CLUSTERED
(
[id_Tipo_Mascota] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Tipo_Servicio](
[Id_Servicio] [int] IDENTITY(1,1) NOT NULL,
[Servicio] [varchar](20) NOT NULL,
CONSTRAINT [PK_Tipo_Servicio] PRIMARY KEY CLUSTERED
(
[Id_Servicio] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Tutor](
[Rut] [varchar](15) NOT NULL,
[Nombre] [varchar](20) NOT NULL,
[Apellido] [varchar](20) NOT NULL,
[Dirección] [varchar](50) NOT NULL,
[Teléfono] [float] NOT NULL,
CONSTRAINT [PK_Tutor] PRIMARY KEY CLUSTERED
(
[Rut] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Vehiculo](
[Patente] [varchar](6) NOT NULL,
[Modelo] [varchar](10) NOT NULL,
[Marca] [varchar](10) NOT NULL,
[Año] [date] NOT NULL,
CONSTRAINT [PK_Vehiculo] PRIMARY KEY CLUSTERED
(
[Patente] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Veterinaria](
[Cod_Sucursal] [int] IDENTITY(1,1) NOT NULL,
[Nombre] [varchar](20) NOT NULL,
[Direccion] [varchar](30) NOT NULL,
CONSTRAINT [PK_Veterinaria] PRIMARY KEY CLUSTERED
(
[Cod_Sucursal] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Ficha] WITH CHECK ADD CONSTRAINT [FK_Ficha_Mascota] FOREIGN KEY([Mascota])
REFERENCES [dbo].[Mascota] ([Id_Mascota])
GO
ALTER TABLE [dbo].[Ficha] CHECK CONSTRAINT [FK_Ficha_Mascota]
GO
ALTER TABLE [dbo].[Ficha] WITH CHECK ADD CONSTRAINT [FK_Ficha_Tutor] FOREIGN KEY([Tutor])
REFERENCES [dbo].[Tutor] ([Rut])
GO
ALTER TABLE [dbo].[Ficha] CHECK CONSTRAINT [FK_Ficha_Tutor]
GO
ALTER TABLE [dbo].[Ficha] WITH CHECK ADD CONSTRAINT [FK_Ficha_Veterinaria] FOREIGN KEY([Sucursal])
REFERENCES [dbo].[Veterinaria] ([Cod_Sucursal])
GO
ALTER TABLE [dbo].[Ficha] CHECK CONSTRAINT [FK_Ficha_Veterinaria]
GO
ALTER TABLE [dbo].[Ficha_Servicio] WITH CHECK ADD CONSTRAINT [FK_Ficha_Servicio_Ficha] FOREIGN KEY([N_Ficha])
REFERENCES [dbo].[Ficha] ([N_Ficha])
GO
ALTER TABLE [dbo].[Ficha_Servicio] CHECK CONSTRAINT [FK_Ficha_Servicio_Ficha]
GO
ALTER TABLE [dbo].[Ficha_Servicio] WITH CHECK ADD CONSTRAINT [FK_Ficha_Servicio_Servicio] FOREIGN KEY([Id_Servicio])
REFERENCES [dbo].[Servicio] ([Id_Servicio])
GO
ALTER TABLE [dbo].[Ficha_Servicio] CHECK CONSTRAINT [FK_Ficha_Servicio_Servicio]
GO
ALTER TABLE [dbo].[Insumo] WITH CHECK ADD CONSTRAINT [FK_Insumo_Tipo_Insumo] FOREIGN KEY([Tipo_Insumo])
REFERENCES [dbo].[Tipo_Insumo] ([id_Tipo_Insumo])
GO
ALTER TABLE [dbo].[Insumo] CHECK CONSTRAINT [FK_Insumo_Tipo_Insumo]
GO
ALTER TABLE [dbo].[Mascota] WITH CHECK ADD CONSTRAINT [FK_Mascota_Raza] FOREIGN KEY([Raza])
REFERENCES [dbo].[Raza] ([Id_Raza])
GO
ALTER TABLE [dbo].[Mascota] CHECK CONSTRAINT [FK_Mascota_Raza]
GO
ALTER TABLE [dbo].[Mascota] WITH CHECK ADD CONSTRAINT [FK_Mascota_Tamaño] FOREIGN KEY([Tamaño])
REFERENCES [dbo].[Tamaño] ([Id_Tamaño])
GO
ALTER TABLE [dbo].[Mascota] CHECK CONSTRAINT [FK_Mascota_Tamaño]
GO
ALTER TABLE [dbo].[Mascota] WITH CHECK ADD CONSTRAINT [FK_Mascota_Tipo_Mascota] FOREIGN KEY([Tipo_Mascota])
REFERENCES [dbo].[Tipo_Mascota] ([id_Tipo_Mascota])
GO
ALTER TABLE [dbo].[Mascota] CHECK CONSTRAINT [FK_Mascota_Tipo_Mascota]
GO
ALTER TABLE [dbo].[Pago] WITH CHECK ADD CONSTRAINT [FK_Pago_Forma_Pago] FOREIGN KEY([Forma_Pago])
REFERENCES [dbo].[Forma_Pago] ([Id_Forma_Pago])
GO
ALTER TABLE [dbo].[Pago] CHECK CONSTRAINT [FK_Pago_Forma_Pago]
GO
ALTER TABLE [dbo].[Profesional] WITH CHECK ADD CONSTRAINT [FK_Profesional_Especialidad] FOREIGN KEY([Especialidad])
REFERENCES [dbo].[Especialidad] ([Id_Especialidad])
GO
ALTER TABLE [dbo].[Profesional] CHECK CONSTRAINT [FK_Profesional_Especialidad]
GO
ALTER TABLE [dbo].[Profesional] WITH CHECK ADD CONSTRAINT [FK_Profesional_Veterinaria] FOREIGN KEY([Sucursal])
REFERENCES [dbo].[Veterinaria] ([Cod_Sucursal])
GO
ALTER TABLE [dbo].[Profesional] CHECK CONSTRAINT [FK_Profesional_Veterinaria]
GO
ALTER TABLE [dbo].[Servicio] WITH CHECK ADD CONSTRAINT [FK_Servicio_Pago] FOREIGN KEY([Boleta])
REFERENCES [dbo].[Pago] ([Boleta])
GO
ALTER TABLE [dbo].[Servicio] CHECK CONSTRAINT [FK_Servicio_Pago]
GO
ALTER TABLE [dbo].[Servicio] WITH CHECK ADD CONSTRAINT [FK_Servicio_Tipo_Servicio] FOREIGN KEY([Tipo_servicio])
REFERENCES [dbo].[Tipo_Servicio] ([Id_Servicio])
GO
ALTER TABLE [dbo].[Servicio] CHECK CONSTRAINT [FK_Servicio_Tipo_Servicio]
GO
ALTER TABLE [dbo].[Servicio] WITH CHECK ADD CONSTRAINT [FK_Servicio_Vehiculo] FOREIGN KEY([Vehiculo])
REFERENCES [dbo].[Vehiculo] ([Patente])
GO
ALTER TABLE [dbo].[Servicio] CHECK CONSTRAINT [FK_Servicio_Vehiculo]
GO
ALTER TABLE [dbo].[Servicio_Insumo] WITH CHECK ADD CONSTRAINT [FK_Servicio_Insumo_Insumo] FOREIGN KEY([Cod_Insumo])
REFERENCES [dbo].[Insumo] ([Cod_Insumo])
GO
ALTER TABLE [dbo].[Servicio_Insumo] CHECK CONSTRAINT [FK_Servicio_Insumo_Insumo]
GO
ALTER TABLE [dbo].[Servicio_Insumo] WITH CHECK ADD CONSTRAINT [FK_Servicio_Insumo_Servicio] FOREIGN KEY([Id_Servicio])
REFERENCES [dbo].[Servicio] ([Id_Servicio])
GO
ALTER TABLE [dbo].[Servicio_Insumo] CHECK CONSTRAINT [FK_Servicio_Insumo_Servicio]
GO
Ingreso de Datos
insert into Tutor values ('16358808-0', 'Juan', 'Valdés', 'Direccióncasa 1109', 5683877316);
insert into Tutor values ('25036578-6', 'Alex', 'Valdés', 'Quinta Avenida 75, Maipu', 5675697896);
insert into Tutor values ('20316852-6', 'Daniela', 'Castro', 'Camino agricola 456, San Joaquin', 562789385);
insert into Tutor values ('25036578-K', 'Paola', 'Molina', 'Copiapo 528, Santiago', 56757369196);
insert into Tutor values ('23652418-0', 'Esteban', 'Araya', 'Camrnen 1106, Santiago', 56757369196);
En este apartado realizamos consulta a nuestra base de datos, para encontrar registros únicos asociados entre las tablas, para que estos
sean transformados en información relevante para la toma de decisiones, por parte de la Administradora de la Veterinaria.
A continuación, dejamos unos ejemplos de búsqueda, su query en a base de datos y la respuesta obtenida.
Calcular las fichas de pacientes de cada sucursal y generar un ranking, entregando su ubicación donde el número uno es la que tiene
mayor cantidad de atenciones:
Query
Resultado
Query
Select V.Nombre As Veterinaria, SUM(P.Monto) AS "Monto de Ganancias", T.Servicio, count(T.Servicio) As "Cantidad de Servicios
realizados"
from Ficha F, Veterinaria V, Ficha_Servicio FS, Servicio S, Pago P, Tipo_Servicio T
where F.sucursal = V.cod_sucursal and F.N_Ficha= FS.N_Ficha and FS.Id_Servicio = S.Id_Servicio
and S.Boleta = P.Boleta and S.Tipo_servicio = T.Id_Servicio and F.Sucursal = ( Select top 1 V.Cod_Sucursal
from Ficha F, Veterinaria V where F.sucursal = V.cod_sucursal group by V.Cod_Sucursal order by count(F.N_Ficha) desc)
group by V.Nombre, T.Servicio
Resultado
Cantidad
de Servicios
Veterinaria Monto Servicio Realizados
Feliz mascota 6000 Control Domicilio 1
Feliz mascota 20000 Control Sucursal 2
Encontrar a los profesionales con mayor realización de servicios, la veterinaria a cual pertenece, el tipo de servicio realizado y su
especialidad
Query
Select concat (P.Nombre,' ', P.Apellido) As "Profesional", count (S.Id_Servicio) As "Cantidad de Servicios realizados", V.Nombre AS
Veterinaria, T.Servicio, E.Especialidad
from Especialidad E, Profesional P, Veterinaria V, Ficha F, Ficha_Servicio FS, Servicio S, Tipo_Servicio T
where E.Id_Especialidad = P.Especialidad and P.Sucursal= V.Cod_Sucursal and V.Cod_Sucursal= F.Sucursal and F.N_Ficha = FS.N_Ficha and
FS.Id_Ficha_Serv= S.Id_Servicio
and S.Tipo_servicio = T.Id_Servicio
group by P.Nombre, P.Apellido, V.Nombre, E.Especialidad, T.Servicio
Resultado