Base de Datos Avanzado
Base de Datos Avanzado
Proyecto final:
Caso Hospital XY
·
Crear un procedimiento almacenado que tome todos los médicos
e inserte la cantidad de consultas que ha tenido en cada clínica.
Para esto utiliza un cursor. Los “inserts” se llevan a cabo
usando la tabla creada en el paso anterior.
return @total
end;
GO
/****** Object: Table [dbo].[Provincia] Script Date: 14 ago. 2023 7:59:51 a. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Provincia](
[idPro] [varchar](20) NOT NULL,
[nombre] [varchar](25) NULL,
PRIMARY KEY CLUSTERED
(
[idPro] 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
/****** Object: Table [dbo].[Clinica] Script Date: 14 ago. 2023 7:59:51 a. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Clinica](
[idClinica] [int] IDENTITY(1,1) NOT NULL,
[idPro] [varchar](20) NULL,
[nombre] [varchar](25) NULL,
PRIMARY KEY CLUSTERED
(
[idClinica] 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
/****** Object: View [dbo].[cantidad_Clinica] Script Date: 14 ago. 2023 7:59:51 a. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create view [dbo].[cantidad_Clinica]
as
select p.idPro,p.nombre, COUNT(Clinica.idPro) as Cantidad from Provincia p
inner join Clinica on Clinica.idPro = p.idPro group by p.idPro,p.nombre
GO
/****** Object: Table [dbo].[Medico] Script Date: 14 ago. 2023 7:59:51 a. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Medico](
[idMedico] [int] IDENTITY(1,1) NOT NULL,
[nombre] [varchar](20) NULL,
[apellido] [varchar](40) NULL,
[edad] [int] NULL,
[fechaIng] [date] NULL,
PRIMARY KEY CLUSTERED
(
[idMedico] 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
/****** Object: View [dbo].[nuevosIngreso] Script Date: 14 ago. 2023 7:59:51 a. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create view [dbo].[nuevosIngreso] as
select m.nombre,m.apellido, m.fechaIng from Medico m where year(fechaIng) =
year(getdate())
GO
/****** Object: Table [dbo].[Dianostisco] Script Date: 14 ago. 2023 7:59:51 a. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Dianostisco](
[idDia] [int] IDENTITY(1,1) NOT NULL,
[idPaciente] [int] NULL,
[idMedico] [int] NULL,
[idClinica] [int] NULL,
[fecha] [date] NULL,
[dianostico] [varchar](50) NULL,
PRIMARY KEY CLUSTERED
(
[idDia] 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
/****** Object: Table [dbo].[Historia] Script Date: 14 ago. 2023 7:59:51 a. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Historia](
[idMedico] [int] NULL,
[idClinica] [int] NULL,
[Cantidad] [int] NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Paciente] Script Date: 14 ago. 2023 7:59:51 a. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Paciente](
[idPaciente] [int] IDENTITY(1,1) NOT NULL,
[nombre] [varchar](20) NULL,
[apellido] [varchar](40) NULL,
[edad] [int] NULL,
[telefono] [varchar](15) NULL,
PRIMARY KEY CLUSTERED
(
[idPaciente] 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
/****** Object: Table [dbo].[TelefonoMedico] Script Date: 14 ago. 2023 7:59:51 a. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TelefonoMedico](
[idMedico] [int] NULL,
[telefono] [varchar](20) NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Clinica] ON
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (1, N'SC', N'Cli.Santa fe')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (2, N'C', N'Cli.America')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (3, N'C', N'Cli.Martin')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (4, N'SDE', N'Clin.Dario')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (5, N'SDE', N'C.Lorezon Vispal')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (6, N'R', N'Cli.Capital')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (7, N'R', N'Cli.Juan Pablo')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (8, N'R', N'Cli. Ortiz')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (9, N'BC', N'Cli.santo')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (10, N'BC', N'Cli.las vista')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (11, N'BC', N'Cli.Cueva')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (12, N'BC', N'Cli.la playa')
INSERT [dbo].[Clinica] ([idClinica], [idPro], [nombre]) VALUES (13, N'SC', N'Cli.Jose Paul')
SET IDENTITY_INSERT [dbo].[Clinica] OFF
GO
SET IDENTITY_INSERT [dbo].[Dianostisco] ON
INSERT [dbo].[Medico] ([idMedico], [nombre], [apellido], [edad], [fechaIng]) VALUES (1, N'Leonardo',
N'Araujo', 55, CAST(N'2006-05-09' AS Date))
INSERT [dbo].[Medico] ([idMedico], [nombre], [apellido], [edad], [fechaIng]) VALUES (2, N'Raul ',
N'Romero', 50, CAST(N'2000-08-22' AS Date))
INSERT [dbo].[Medico] ([idMedico], [nombre], [apellido], [edad], [fechaIng]) VALUES (3, N'Nelson',
N'Cruz', 46, CAST(N'2006-11-01' AS Date))
INSERT [dbo].[Medico] ([idMedico], [nombre], [apellido], [edad], [fechaIng]) VALUES (4, N'Juan',
N'Marisco', 55, CAST(N'2002-05-06' AS Date))
INSERT [dbo].[Medico] ([idMedico], [nombre], [apellido], [edad], [fechaIng]) VALUES (5, N'Enyer',
N'Moreo', 30, CAST(N'2023-05-09' AS Date))
INSERT [dbo].[Medico] ([idMedico], [nombre], [apellido], [edad], [fechaIng]) VALUES (6, N'Emy',
N'Romero', 28, CAST(N'2023-09-10' AS Date))
SET IDENTITY_INSERT [dbo].[Medico] OFF
GO
SET IDENTITY_INSERT [dbo].[Paciente] ON
INSERT [dbo].[Paciente] ([idPaciente], [nombre], [apellido], [edad], [telefono]) VALUES (1, N'Adrian',
N'Carlos', 20, N'829-849-3401')
INSERT [dbo].[Paciente] ([idPaciente], [nombre], [apellido], [edad], [telefono]) VALUES (2,
N'Francisco', N'Jimenez', 25, N'829-649-3801')
INSERT [dbo].[Paciente] ([idPaciente], [nombre], [apellido], [edad], [telefono]) VALUES (3, N'Carlos',
N'Rincon', 30, N'809-847-9999')
INSERT [dbo].[Paciente] ([idPaciente], [nombre], [apellido], [edad], [telefono]) VALUES (4, N'Santo',
N'Figeroa', 35, N'809-777-0101')
INSERT [dbo].[Paciente] ([idPaciente], [nombre], [apellido], [edad], [telefono]) VALUES (5, N'Carlos',
N'Rincon', 30, N'809-847-9999')
INSERT [dbo].[Paciente] ([idPaciente], [nombre], [apellido], [edad], [telefono]) VALUES (6, N'Jose',
N'Perez', 40, N'809-697-8888')
INSERT [dbo].[Paciente] ([idPaciente], [nombre], [apellido], [edad], [telefono]) VALUES (7, N'Lorenzo',
N'Perez', 30, N'809-807-5555')
INSERT [dbo].[Paciente] ([idPaciente], [nombre], [apellido], [edad], [telefono]) VALUES (8, N'Danilo',
N'Fernandez', 60, N'829-222-3333')
SET IDENTITY_INSERT [dbo].[Paciente] OFF
GO
INSERT [dbo].[Provincia] ([idPro], [nombre]) VALUES (N'BC', N'Boca chica')
INSERT [dbo].[Provincia] ([idPro], [nombre]) VALUES (N'C', N' Caleta')
INSERT [dbo].[Provincia] ([idPro], [nombre]) VALUES (N'R', N'Romana')
INSERT [dbo].[Provincia] ([idPro], [nombre]) VALUES (N'SC', N' San cristobal')
INSERT [dbo].[Provincia] ([idPro], [nombre]) VALUES (N'SDE', N' Santo domingo este')
GO
INSERT [dbo].[TelefonoMedico] ([idMedico], [telefono]) VALUES (1, N'809-001-0000')
INSERT [dbo].[TelefonoMedico] ([idMedico], [telefono]) VALUES (1, N'809-002-0000')
INSERT [dbo].[TelefonoMedico] ([idMedico], [telefono]) VALUES (2, N'809-003-0000')
INSERT [dbo].[TelefonoMedico] ([idMedico], [telefono]) VALUES (3, N'809-004-0000')
INSERT [dbo].[TelefonoMedico] ([idMedico], [telefono]) VALUES (4, N'809-005-0000')
INSERT [dbo].[TelefonoMedico] ([idMedico], [telefono]) VALUES (5, N'809-006-0000')
INSERT [dbo].[TelefonoMedico] ([idMedico], [telefono]) VALUES (6, N'809-007-0888')
INSERT [dbo].[TelefonoMedico] ([idMedico], [telefono]) VALUES (6, N'809-008-7654')
GO
ALTER TABLE [dbo].[Clinica] WITH CHECK ADD CONSTRAINT [pk_prov] FOREIGN KEY([idPro])
REFERENCES [dbo].[Provincia] ([idPro])
GO
ALTER TABLE [dbo].[Clinica] CHECK CONSTRAINT [pk_prov]
GO
ALTER TABLE [dbo].[Dianostisco] WITH CHECK ADD CONSTRAINT [pk_Clinica] FOREIGN KEY([idClinica])
REFERENCES [dbo].[Clinica] ([idClinica])
GO
ALTER TABLE [dbo].[Dianostisco] CHECK CONSTRAINT [pk_Clinica]
GO
ALTER TABLE [dbo].[Dianostisco] WITH CHECK ADD CONSTRAINT [pk_medico] FOREIGN KEY([idMedico])
REFERENCES [dbo].[Medico] ([idMedico])
GO
ALTER TABLE [dbo].[Dianostisco] CHECK CONSTRAINT [pk_medico]
GO
ALTER TABLE [dbo].[Dianostisco] WITH CHECK ADD CONSTRAINT [pk_Paciente] FOREIGN
KEY([idPaciente])
REFERENCES [dbo].[Paciente] ([idPaciente])
GO
ALTER TABLE [dbo].[Dianostisco] CHECK CONSTRAINT [pk_Paciente]
GO
ALTER TABLE [dbo].[Historia] WITH CHECK ADD CONSTRAINT [pk_medico2] FOREIGN KEY([idMedico])
REFERENCES [dbo].[Medico] ([idMedico])
GO
ALTER TABLE [dbo].[Historia] CHECK CONSTRAINT [pk_medico2]
GO
ALTER TABLE [dbo].[Historia] WITH CHECK ADD CONSTRAINT [pk_Paciente2] FOREIGN KEY([idClinica])
REFERENCES [dbo].[Clinica] ([idClinica])
GO
ALTER TABLE [dbo].[Historia] CHECK CONSTRAINT [pk_Paciente2]
GO
ALTER TABLE [dbo].[TelefonoMedico] WITH CHECK ADD CONSTRAINT [pk_telefono] FOREIGN
KEY([idMedico])
REFERENCES [dbo].[Medico] ([idMedico])
GO
ALTER TABLE [dbo].[TelefonoMedico] CHECK CONSTRAINT [pk_telefono]
GO
/****** Object: StoredProcedure [dbo].[CalcularConsultasPorMedicoClinica] Script Date: 14 ago.
2023 7:59:51 a. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[CalcularConsultasPorMedicoClinica] AS
BEGIN
DECLARE @IdClinica INT, @IdMedico INT, @Cantidad INT;
DECLARE cursor_medicos CURSOR FOR
SELECT mc.IdClinica, m.IdMedico
FROM Medico m
CROSS JOIN Clinica mc;
OPEN cursor_medicos;
FETCH NEXT FROM cursor_medicos INTO @IdClinica, @IdMedico;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Cantidad = (SELECT COUNT(*) FROM Dianostisco dp WHERE dp.IdMedico = @IdMedico AND
dp.Idclinica = @IdClinica);
CLOSE cursor_medicos;
DEALLOCATE cursor_medicos;
END;
GO