Sunteți pe pagina 1din 20

Proyecto 2

Base de Datos
SQL Server y MySQL
Un club dicta cursos de distintos deportes. Almacena la información en varias tablas.

create database CLUB;

Crear tabla socios:

create table socios(


documento char(8) not null,
nombre varchar(40),
domicilio varchar(30),
constraint PK_socios_documento
primary key (documento)
);

Crear tabla cursos:

create table cursos(


numero tinyint identity,
deporte varchar(20),
dia varchar(15),
constraint CK_inscriptos_dia check (dia
in('lunes','martes','miercoles','jueves','viernes','sabado')),
profesor varchar(20),
constraint PK_cursos_numero
primary key (numero),
);

Crear tabla inscriptos:

create table inscriptos(


documentosocio char(8) not null,
numero tinyint not null,
matricula char(1),
constraint PK_inscriptos_documento_numero
primary key (documentosocio,numero),
constraint FK_inscriptos_documento
foreign key (documentosocio)
references socios(documento)
on update cascade,
constraint FK_inscriptos_numero
foreign key (numero)
references cursos(numero)
on update cascade
);

Insertar registros en la tabla socios:

insert into socios values('30000000','Fabian Fuentes','Caseros 987');


insert into socios values('31111111','Gaston Garcia','Guemes 65');
insert into socios values('32222222','Hector Huerta','Sucre 534');
insert into socios values('33333333','Ines Irala','Bulnes 345');

Insertar registros en la tabla cursos:

insert into cursos values('tenis','lunes','Ana Acosta');


insert into cursos values('tenis','martes','Ana Acosta');
insert into cursos values('natacion','miercoles','Ana Acosta');
insert into cursos values('natacion','jueves','Carlos Caseres');
insert into cursos values('futbol','sabado','Pedro Perez');
insert into cursos values('futbol','lunes','Pedro Perez');
insert into cursos values('basquet','viernes','Pedro Perez');

Insertar registros en la tabla inscriptos:

insert into inscriptos values('30000000',1,'s');


insert into inscriptos values('30000000',3,'n');
insert into inscriptos values('30000000',6,null);
insert into inscriptos values('31111111',1,'s');
insert into inscriptos values('31111111',4,'s');
insert into inscriptos values('32222222',1,'s');
insert into inscriptos values('32222222',7,'s');

4- Realice un join para mostrar todos los datos de todas las tablas, sin
repetirlos:
5- Elimine, si existe, la vista "vista_cursos":

if object_id('vista_cursos') is not null


drop view vista_cursos;

6- Cree la vista "vista_cursos" que muestre el número, deporte y día de


todos los cursos.

7- Consulte la vista ordenada por deporte.


8- Ingrese un registro en la vista "vista_cursos" y vea si afectó a
"cursos". Puede realizarse el ingreso porque solamente afecta a una tabla
base.

9- Actualice un registro sobre la vista y vea si afectó a la tabla


"cursos". Puede realizarse la actualización porque solamente afecta a una
tabla base.
11- Intente eliminar un registro de la vista para el cual haya
inscriptos. No lo permite por la restricción "foreign key".
12- Elimine la vista "vista_inscriptos" si existe y créela para que
muestre el documento y nombre del socio, el numero de curso, el deporte y
día de los cursos en los cuales está inscripto.

if object_id('vista_inscriptos') is not null


drop view vista_inscriptos;
create view vista_inscriptos
as
select i.documentosocio,s.nombre,i.numero,c.deporte,dia
from inscriptos as i
join socios as s
on s.documento=documentosocio
join cursos as c
on c.numero=i.numero;

13- Intente ingresar un registro en la vista.

No lo permite porque la modificación afecta a más de una tabla base.

14- Actualice un registro de la vista.

Lo permite porque la modificación afecta a una sola tabla base.


15- Vea si afectó a la tabla "socios":

16- Intente actualizar el documento de un socio.

No lo permite por la restricción.


17- Intente eliminar un registro de la vista.

No lo permite porque la vista incluye varias tablas


MySQL
Crea una base de datos llamada CLUB:
Create database CLUB;

Habilita la Base de datos del CLUB:


Use CLUB;

Elimine las tabla "inscriptos", "socios" y "cursos", si


existen:
if object_id('inscriptos') is not null drop table inscriptos;

if object_id('socios') is not null drop table socios;

if object_id('cursos') is not null drop table cursos;


I. Ingrese algunos registros para todas las tablas:
Realice un join para mostrar todos los datos de todas las
tablas, sin repetirlos:

I. Elimine, si existe, la vista "vista_cursos":


if object_id('vista_cursos') is not null
drop view vista_cursos;

II. Cree la vista "vista_cursos" que muestre el número, deporte y


día de todos los cursos.
III. Consulte la vista ordenada por deporte.

IV. Ingrese un registro en la vista "vista_cursos" y vea si


afectó a "cursos".
Puede realizarse el ingreso porque solamente afecta a una tabla
base.

V. Actualice un registro sobre la vista y vea si afectó a la


tabla "cursos".
Puede realizarse la actualización porque solamente afecta a una
tabla base.

VI. Elimine un registro de la vista para el cual no haya


inscriptos y vea si afectó a "cursos".
Puede realizarse la eliminación porque solamente afecta a una
tabla base.

VII. Intente eliminar un registro de la vista para el cual haya


inscriptos.
No lo permite por la restricción "foreign key".

VIII. Elimine la vista "vista_inscriptos" si existe y créela para


que muestre el documento y nombre del socio, el numero de
curso, el deporte y día de los cursos en los cuales está
inscripto.

IX. Intente ingresar un registro en la vista.

No lo permite porque la modificación afecta a más de una tabla


base.
VII. Actualice un registro de la vista.

Lo permite porque la modificación afecta a una sola tabla base.

VIII. Vea si afectó a la tabla "socios":


IX. Intente actualizar el documento de un socio.

No lo permite por la restricción.

XIV. Intente eliminar un registro de la vista.

No lo permite porque la vista incluye varias tablas.

S-ar putea să vă placă și