You are on page 1of 17

Administración de Base de Datos

UNIVERSIDAD CATÓLICA

“Santo Toribio de
Mogrovejo”
Trabajo :

Base de datos de Matricula

Integrantes :

 Gonzales Gonzales Juan Alberto
 José N. Delgado Gonzales
 Walter Tarrillo Mondragón

Carrera :

Ingeniería de Sistema y Computación

Ciclo :

VII

Asignatura :

Administración de Base Datos

Docente :

Ing. José Castillo Zumaran

Chiclayo, Julio del 2005

Pag. 1
Administración de Base de Datos

Pag. 2
Administración de Base de Datos

1. Modelo Entidad - Relacion

Pag. 3
Administración de Base de Datos

2. Modelo Lógico

Pag. 4
Administración de Base de Datos

3. Modelo Físico de BD

Pag. 5
Administración de Base de Datos

4. Modelo Físico de BD en SQL Server

Pag. 6
Administración de Base de Datos
5. Implementación de la Base de Datos:
• Creación de la Base de datos

Use Master
GO
Create Database COLEGIO
On Primary
(NAME = 'COLEGIO_Data',
FILENAME = 'C:\Archivos de programa\Microsoft SQL
Server\MSSQL\data\COLEGIO _Data.Mdf',
SIZE = 10Mb,
MAXSIZE = 20Mb,
FILEGROWTH= 1Mb)
LOG ON
(NAME = 'COLEGIO_Log',
FILENAME = 'C:\Archivos de programa\Microsoft SQL
Server\MSSQL\data\COLEGIO _Data.ldf',
SIZE = 5Mb,
MAXSIZE = 10Mb,
FILEGROWTH= 1Mb)

• Creación de Tablas:
create table Aula
(
IdAula char(5) not null constraint pk_IdAula Primary key,
Tipo varchar(15) not null,
Capacidad numeric not null
)

create table Curso
(
IdCurso char(5) not null constraint pk_IdCurso Primary key,
NombreCurso varchar(15) not null,
HorasTeoricas numeric not null,
HorasPracticas numeric not null,
Nivel char(1) not null,
Grado char(1) not null
)

Pag. 7
Administración de Base de Datos
create table Docente
(
IdDocente char(5) not null constraint pk_IdDocente Primary key,
Nombre varchar(25) not null,
Apellidos varchar(35) not null,
Direccion varchar(50) not null,
Telefono varchar(12),
Dni char(8) not null,
Especialidad varchar(25) not null,
E_Mail varchar(50),
Sexo char(1) not null
)
create table AñoEscolar
(
NumAño char(4) not null constraint pk_NumAño Primary key,
FechaIni datetime not null,
FechaFin datetime not null,
Estado char(1) not null
)
drop table AñoEscolar
create table Ubigeo
(
IdUbigeo char(6) not null constraint pk_IdUbigeo Primary key,
Distrito varchar(35) not null,
Provincia varchar(25) not null,
Departamento varchar(25) not null
)
create table Apoderado
(
Dni Char(8) not null constraint pk_Dni Primary key,
Nombre varchar(25) not null,
Apellidos varchar(35) not null,
Sexo char(1) not null,
Direccion varchar(35) not null,
EstadoCiv char(1) not null,
Telefono varchar(12)
)
create table Colegio
(
IdColegio char(5)not null constraint pk_IdColegio Primary key,
Nombre varchar(25) not null,
Direccion varchar(25) not null,
Tipo char(1) not null,
IdUbigeo char(6)not null constraint fk_IdUbigeo references Ubigeo
)

create table Alumno
(
IdAlumno char(5) not null constraint pk_IdAlumno Primary key,

Pag. 8
Administración de Base de Datos
Nombre varchar(25) not null,
Apellidos varchar(35)not null,
FechaNac datetime not null,
Telefono varchar(12),
Sexo char(1) not null,
E_Mail varchar(50) ,
IdUbigeo char(6) CONSTRAINT fk_IdUbigeo2 REFERENCES Ubigeo
)

create table Parentesco
(
Dni Char(8) not null constraint fk_Dni references Apoderado,
IdAlumno char(5) not null constraint fk_IdAlumno references Alumno,
Parentesco varchar(15) not null,
constraint pk_Parentesco primary key(Dni,IdAlumno)
)

create table Promedio
(
IdAlumno char(5) not null constraint fk_Alumno2 references Alumno,
IdCurso char(5)not null constraint fk_IdCurso references Curso,
Promedio real,
constraint pk_Promedio primary key(IdAlumno,IdCurso)
)

create table Horario
(
IdHorario char(5) not null constraint pk_IdHorario Primary key,
Dia varchar(10) not null,
HoraIni datetime not null,
HoraFin datetime not null,
IdAula char(5)constraint fk_IdAula references Aula,
IdDocente char(5) not null Constraint fk_IdDocente References Docente,
IdCurso char(5) not null constraint fk_IdCurso2 references Curso,
NumAño char(4) not null Constraint fk_NumAño references AñoEscolar
)

Create Table Asignacion
(
IdDocente char(5) not null Constraint fk_IdDocente2 References Docente,
IdCurso char(5) not null Constraint fk_IdCurso3 references Curso,
NumAño char(4) not null Constraint fk_NumAño2 references AñoEscolar,
Seccion Char(1) Not Null,
Constraint fk_Asigancion Primary Key (IdDocente,IdCurso,NumAño),
)

Create Table Programacion

Pag. 9
Administración de Base de Datos
(
IdProgramacion Char(5) not null constraint pk_IdProgra Primary key,
Nivel Char(1) Not Null,
Grado Char(1) Not Null,
Seccion Char(1) Not Null,
Turno Char(1) Not Null,
NumAño char(4) not null Constraint fk_NumAño3 references AñoEscolar,
CantMax numeric not null
)

create table Matricula
(
NroMatricula char(10)not null constraint pk_NroMatricula Primary key,
FechaMat datetime not null,
HoraMat datetime not null,
Nivel char(1) not null,
Grado char(1)not null,
Seccion char(1) not null,
Turno char(1) not null,
Situacion varchar(15)not null,
IdAlumno char(5) not null Constraint fk_IdAlumno3 references Alumno,
IdColegio char(5) Constraint fk_IdColegio references Colegio,
Dni Char(8) not null constraint fk_Dni2 references Apoderado,
NumAño char(4) not null Constraint fk_NumAño4 references AñoEscolar,
Estado char(1) not null,
Observación varchar(80) null
)
create table Notas
(
IdCurso char(5) not null constraint fk_IdCurso4 references Curso,
IdAlumno char(5) not null Constraint fk_IdAlumno4 references Alumno,
B1 float not null,
B2 float not null,
B3 float not null,
B4 float not null,
Promedio float not null
Constraint pk_Notas Primary Key (IdCurso,IdAlumno)
)

• Llenado de tablas (Algunas):

insert into Aula values('AU001','Laboratorio',20)

insert into Docente values('D0001','Pedro','Siva Perez','Los
Andes','215468','12457845','Historia Y Geografía','PPerez@hotmail.com','M')

insert into Curso values('C0001','Historia',2,1,'P','3')

Pag. 10
Administración de Base de Datos
insert into AñoEscolar values('2004','07/04/2004','07/04/2004','A')

insert into Ubigeo values('00001','La Victoria','Chiclayo','Lambayeque')

insert into Alumno values('A0001','Elber','Sanchez
Callao','22/08/1984','215469','M',default,'00001')

insert into Apoderado values('24578856','Irineo','Uriarte','M','los Andes
320','S','124578')

insert into Parentesco values('24578856','A0001','Ninguno')

insert into Horario
values('H0006','Miercoles','11:00','13:00','AU003','D0007','C0003','2004')

insert into Notas values('C0001','A0001',15,10,10,15,12.5)

insert into Horario('00011','Lunes','12','3','AU001','D0001','C0001','2004')

• Validaciones Integridad Referencial de algunos campos:
alter table Apoderado
add constraint chk_sexoApo check(sexo like'[FM]')

alter table Alumno
add constraint chk_sexo check(sexo like'[FM]')

alter table Docente
add constraint chk_sexoDoc check(sexo like'[FM]')

alter table Apoderado
add constraint chk_dniApo check(Dni like '[1-9][0-9][0-9][0-9][0-9][0-9][0-
9][0-9]'),
constraint u_dniApo unique(Dni)

--todavia(ver)
--alter table Docente,Alumno
--constraint chk_emailDoc check(E_Mail like '[a-zA-Z_1-9][@][a-zA-Z][.][a-
z]'),

alter table Docente
add constraint chk_dniDoc check(Dni like '[1-9][0-9][0-9][0-9][0-9][0-9][0-
9][0-9]'),
constraint u_dniDoc unique(Dni),
constraint chk_TelDoc check(Telefono like '[1-9][0-9][0-9][0-9][0-9][0-9]' or
Telefono like '[9][1-9][0-9][0-9][0-9][0-9][0-9]' or Telefono
like '[0][0-9][0-9][-][0-9][0-9][0-9][0-9][0-9][0-9]')

alter table Alumno

Pag. 11
Administración de Base de Datos
add constraint chk_Tel check(Telefono like '[1-9][0-9][0-9][0-9][0-9][0-9]' or
Telefono like '[9][1-9][0-9][0-9][0-9][0-9][0-9]' or Telefono
like '[0][0-9][0-9][-][0-9][0-9][0-9][0-9][0-9][0-9]')

alter table Alumno
add constraint chk_IdA check(IdAlumno like '[A][0-9][0-9][0-9][0-9]')

alter table Aula
add constraint chk_IdAU check(IdAula like '[A][U][0-9][0-9][0-9]')

alter table Docente
add constraint chk_IdD check(IdDocente like '[D][0-9][0-9][0-9][0-9]')

alter table Apoderado
add constraint chk_EstadoAP check(EstadoCiv like '[SCV]')

alter table AñoEscolar
add constraint chk_IdNumA check(NumAño like '[2][0-9][0-9][0-9]')

alter table Programacion
add constraint chk_PNivel check(Nivel like '[PS]'),
constraint chk_PSecc check(Seccion like '[A-Z]'),
constraint chk_PTurn check(Turno like '[MT]'),
constraint chk_PGrado check(Grado like '[1-6]'),
constraint chk_PCantM check(CantMax>0 and CantMax<=40)

alter table Curso
add constraint chk_IdC check(IdCurso like '[C][0-9][0-9][0-9][0-9]'),
constraint chk_Cht check(HorasTeoricas>=0),
constraint chk_Chp check(HorasPracticas>=0),
constraint chk_CGrado check(Grado like '[1-6]'),
constraint chk_CNivel check(Nivel like '[PS]')

alter table Notas
add constraint chk_NB1 check(B1>=0 and B1<=20),
constraint chk_NB2 check(B2>=0 and B2<=20),
constraint chk_NB3 check(B3>=0 and B3<=20),
constraint chk_NB4 check(B4>=0 and B4<=20),
constraint chk_NProm check(Promedio>=0 and Promedio<=20)

alter table Notas
add constraint df_NotasB1 default 0
for B1

alter table Notas
add constraint df_NotasB2 default 0
for B2

Pag. 12
Administración de Base de Datos

alter table Notas
add constraint df_NotasB3 default 0
for B3

alter table Notas
add constraint df_NotasB4 default 0
for B4

alter table Promedio
add constraint df_NotasPProm default 0
for Promedio

alter table Curso
add constraint df_Ht default 0
for HorasTeoricas

alter table Curso
add constraint df_Hp default 0
for HorasPracticas

6. Seguridad y Consultas de Base de Datos:

• Consultas:
1. Listado de alumnos matriculados
select m.idalumno,nombre,apellidos from matricula m,alumno a where
a.idalumno=m.idalumno

2. Listado de horario por el alumnos de apellido 'perez espejo'
select cu.nombrecurso,
h.horaini,h.horafin,idaula,dia,d.Apellidos+','+d.nombre as Docente
from matricula m, alumno al, añoescolar ae,asignacion asi,curso cu, horario
h,docente d
where al.idalumno=m.idalumno and m.numaño=ae.numaño and
asi.numaño=ae.numaño and
asi.idcurso=cu.idcurso and asi.iddocente=d.iddocente and
m.seccion=asi.seccion and

Pag. 13
Administración de Base de Datos
h.iddocente=d.iddocente and asi.numaño=h.numaño and
asi.idcurso=asi.idcurso and
m.grado=cu.grado and m.nivel=cu.nivel
and al.apellidos='perez espejo'

3. Listar los alumnos que provienen de otro colegio

select apellidos+','+a.nombre as 'Alumno',c.Nombre as Colegio
from colegio c,matricula m,alumno a
where estado='T' and m.idcolegio=c.idcolegio and a.idalumno=m.idalumno

4. Listar numrode alumnos matriculados por grado, seccion, turno y nivel del
presente año

select p.grado,p.seccion,p.turno,p.nivel, count(idalumno) as
NumMatriculados,Cantmax
from matricula m,añoescolar ae,programacion p
where m.numaño=ae.numaño and p.grado=m.grado and
p.seccion=m.seccion and p.turno=m.turno and p.nivel=m.nivel
group by p.grado,p.seccion,p.turno,p.nivel,Cantmax

5. Listar a los alumnos y sus apoderados y su parentesco que provengan de la
provicia 'Chiclayo'

select a.Apellidos+','+a.nombre as Alumno, ap.apellidos+','+ap.nombre as
Apoderado, parentesco
from alumno a, parentesco p,ubigeo u,apoderado ap
where a.idubigeo=u.idubigeo and a.idalumno=p.idalumno and p.dni=ap.dni
and provincia='chiclayo'

Pag. 14
Administración de Base de Datos

6. Listar la notas del alumno Sanchez Callao,Elber

select n.idcurso,nombrecurso,b1,b2,b3,b4,promedio
from notas n, alumno a, curso c
where n.idcurso=c.idcurso and n.idalumno=a.idalumno

• Procedimientos Almacenado:

1. Procedimiento almacenado que liste a los profesores de acuerdo al nombre
de un curso x
create procedure up_NCursoAsig
@ncurso varchar(20)
as
select c.nombrecurso,a.iddocente,d.apellidos+','+d.nombre as docente,
NumAño,c.Grado,a.seccion from asignacion a, curso c,docente d where
a.iddocente=d.iddocente and a.idcurso=c.idcurso and
Nombrecurso=@ncurso

up_NCursoAsig 'Historia'

2. Procedimiento almacenado que liste a los alumnos matriculado deacuerdo
un nivel,grado,seccion.
create procedure up_ListAlumMat
@nivel char(1),
@grado char(1),
@turno char(1)
as
select
NroMatricula,fechamat,nivel,grado,turno,m.idalumno,a.apellidos+','+a.n
ombre as Alumnos from matricula m, alumno a where
m.idalumno=a.idalumno and nivel=@nivel and grado=@grado and
turno=@turno

up_ListAlumMat 'P','1','M'

3. Procedimiento almacenado que liste a los alumnos por sexo ingresado
create procedure up_Alumnosexo
@sexo char(1)

Pag. 15
Administración de Base de Datos
as
select * from alumno where sexo=@sexo

up_Alumnosexo 'M'

4. Procedimiento almacenado que liste a los docentes por especialidad
ingresada

create procedure up_DocenteEspe
@Especialidad varchar(50)
as
select * from Docente where especialidad=@Especialidad

up_DocenteEspe 'Computacion'

5. Procedimiento almacenado que liste las asignaciones del acuerdo al año
ingresado

create procedure up_AsigNAño
@numaño char(4)
as
select Nombrecurso,nombre+','+apellidos as Docente, grado,seccion from
Docente d,curso c,asignacion a where a.iddocente=d.iddocente and
a.idcurso=c.idcurso and NumAño=@numaño

up_AsigNAño '2005'

• Vistas:
1.
create view v_listaMatriculados
as
select nroMatricula,fechamat,a.apellidos+','+a.nombre as Alumno,estado
from matricula m,alumno a
where m.idalumno=a.idalumno

select * from v_listaMatriculados where estado='T'

2.
create view v_listaDocentes
as
select iddocente,apellidos,nombre,especialidad
from docente

select * from v_listaDocentes where especialidad='Computacion'

3.
create view v_listaCursos
as

Pag. 16
Administración de Base de Datos
select idcurso,nombrecurso,horasteoricas,horaspracticas,nivel,grado
from curso

select *
from v_listaCursos
where nivel='P' and grado='1'

Pag. 17