Gimnasio Base de Datos - LOJ

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 14

Externo

Nuestro cliente va a abrir un gimnasio llamado Spartacus&Lucretia Temple Gym 24/7 el cual necesita una base de datos para su gestión.

En ella queremos gestionar los clientes, el registro horario de sus entradas y salidas, las actividades deportivas existentes y las inscripciones
de los clientes en las mismas, así como los monitores que las llevan a cabo.

De los clientes queremos saber los datos personales para poder enviarles promociones vía e-mail y correo ordinario, así como poder
contactar con ellos vía telefónica y las actividades que quiera realizar.

Del registro horario queremos llevar un control de la salida y de la entrada de nuestros clientes para así saber las horas puntas y horas más
tranquilas del gimnasio. El cliente sólo podrá realizar en cada registro las actividades para las cuales se haya inscrito y se controlará mediante
programación.

En cuanto a las actividades queremos saber sus horarios, días de la semana en que están activas, duración, el precio, y los clientes que se
han apuntado en ellas y el monitor o monitores responsables de las mismas.

Respecto a los monitores queremos registrar sus datos personales y las actividades que llevan a cabo. Las nóminas y cobros se gestionan
en otra base de datos aparte específica para ello.

Diagrama Entidad - Relacion


dirección ciudad
nºDNI
código
apellido2 código
postal
dirección postal
ciudad

apellido1 apellido2
teléfono
teléfono
núm.
C.C.
nombre
apellido1
MONITORES email
CLIENTES
código
clientes
código
cliente nombre código
fecha monitor
de
nacimie
inscribir
email
nto N:N

apuntar impartir
1:N código 1:N
actividad

código
registro
nombre
código código
registro actividad
código
cliente

realizar
REGISTRO ACTIVIDADES
N:N

HE
modalidad código
código monitor
semanal
actividad
empieza

HS
acaba

Esquema relacional
Clave Clave
primaria foránea

Clientes:
Cod_Cliente: texto 10 longitud fija obligatorio
Nombre: texto 20 longitud variable obligatorio
Apellido_1: texto 20 longitud variable obligatorio
Apellido_2: texto 20 longitud variable
DNI: texto 15 primaria longitud fija obligatorio
Ciudad: texto 20 longitud variable obligatorio
Direccion: texto 30 longitud variable obligatorio
Email: texto 20 longitud variable obligatorio
Cod_Postal: entero 5 fijo obligatorio
Telefono: entero 12 variable obligatorio
Num_Cuenta: texto 20 longitud fija obligatorio

Monitores:
Cod_Monitor: texto 10 longitud fija obligatorio
Nombre: texto 20 longitud variable obligatorio
Apellido_1: texto 20 longitud variable obligatorio
Apellido_2: texto 20 longitud variable
Direccion: texto 30 longitud variable obligatorio
Ciudad: texto 20 longitud variable obligatorio
Telefono: entero 12 variable obligatorio
Cod_Postal: entero 5 fijo obligatorio
Email: texto 20 longitud variable obligatorio
Registros
Cod_Registro: texto 10 longitud fija obligatorio
Hora_Entrada: entero 4 longitud obligatorio
Hora_Salida: entero 4 longitud obligatorio
Cod_Cliente: texto 10 longitud fija obligatorio

Actividades
Cod_Actividad:texto 10 longitud fija obligatorio
Nombre: texto 20 longitud variable obligatorio
Modalidad_Semanal: texto 15 longitud variable obligatorio
Empieza: Fecha longitud variable obligatorio
Acaba: Fecha longitud variable obligatorio
Cod_Monitor: texto 10 longitud fija obligatorio

Realizar
Cod_Registro: texto 10 longitud fija obligatorio
Cod_Actividad:texto 10 longitud fija obligatorio
Inscribir
Cod_Cliente: texto 10 longitud fija obligatorio
Cod_Actividad:texto 10 longitud fija obligatorio

1ºTabla <------Relación-----> 2ºTabla Clave foránea

Clientes (N) Inscribir Monitores (N) Cod_Clientes, Cod_Actividad


Monitores (1) Impartir Actividades (N) Cod_Monitor

Registro (N) Apuntar Clientes(1) Cod_Cliente

Actividades (N) Realizar Registro(N) Cod_Registro, Cod_Actividad


Proceso:
mysql -u root

Para crear la base de datos: create database Gimnasio;

Para entrar en la base de datos: use Gimnasio;

Para crear las tablas:

Monitores
create table Monitores (Cod_Monitor char(10) PRIMARY KEY Not null, Nombre char(20) Not null, Apellido_1 char(20) Not null, Apellido_2
char(20), Direccion char(30) Not null, Ciudad char(20) not null, Telefono int(12) not null, Cod_Postal int(5) not null, Email char(20) not null);

Clientes
create table Clientes (Cod_Cliente char(10) PRIMARY KEY Not null, Nombre char(20) Not null, Apellido_1 char(20) Not null, Apellido_2
char(20),DNI char(15), Direccion char(30) Not null, Ciudad char(20) not null, Telefono int(12) not null, Cod_Postal int(5) not null, Email char(20)
not null, Num_Cuenta char(20) not null);

Registro
create table Registros (Cod_Registro char(10) PRIMARY KEY Not null, Hora_Entrada DATETIME not null, Hora_Salida DATETIME not null,
Cod_Cliente char (10) not null, INDEX (Cod_Cliente), FOREIGN KEY (Cod_Cliente) REFERENCES Clientes (Cod_Cliente));

Actividades
create table Actividades (Cod_Actividad char(10) PRIMARY KEY Not null, Nombre char(20) not null, Modalidad_Semanal char(15) not null,
Empieza DATE not null, Acaba DATE not null, Cod_Monitor char (10) not null, INDEX (Cod_Monitor), FOREIGN KEY (Cod_Monitor)
REFERENCES Monitores (Cod_Monitor));
Inscribir
create table Inscribir (Cod_Cliente char(10), INDEX (Cod_Cliente), FOREIGN KEY (Cod_Cliente) REFERENCES Clientes (Cod_Cliente ),
Cod_Actividad char(10), INDEX (Cod_Actividad), FOREIGN KEY (Cod_Actividad) REFERENCES Actividades (Cod_Actividad));
Realizar
create table Realizar (Cod_Registro char(10), INDEX (Cod_Registro), FOREIGN KEY (Cod_Registro) REFERENCES Registros
(Cod_Registro), Cod_Actividad char(10), INDEX (Cod_Actividad), FOREIGN KEY (Cod_Actividad) REFERENCES Actividades
(Cod_Actividad));
Para meter los datos en las tablas:
Monitores
insert into Monitores
(Cod_Monitor,Nombre,Apellido_1,Apellido_2,Direccion,Ciudad,Telefono,Cod_Postal,Email)
VALUES
(“0000000001”,”Raul”,”Pacheco”,”Ramirez”,”Av. Bilbao”,”Donostia”,”639263861”,”20018”,”[email protected]”),
(“0000000002”,”Juan”,”Pelaez”,”Montero”,”Av. Pedro II”,”Donostia”,”639294801”,”20013”,”[email protected]”),
(“0000000003”,”Sara”,”Martinez”,”Martinez”,”Calle Elustondo”,”Donostia”,”675202861”,”20017”,”[email protected]”),
(“0000000004”,”Jose”,”Manuel”,”Martinez”,”Calle Balleneros”,”Donostia”,”682038913”,”20014”,”[email protected]”),
(“0000000005”,”Esther”,”Aramburu”,”Ramirez”,”Av. Bilbao”,”Donostia”,”657912348”,”20018”,”[email protected]”);
Clientes
insert into
Clientes(Cod_Cliente,Nombre,Apellido_1,Apellido_2,DNI,Direccion,Ciudad,Telefono,Cod_Postal,Email,Num_Cuenta)VALUES
(“0000000001”,”Jon”,”Puerto”,”Celada”,”72839450T”,”Av.
Bilbao”,”Donostia”,”683920451”,”20018”,”[email protected]”,”39482019283475947329”),
(“0000000002”,”Lander”,”Gomez”,”Iriondo”,”74591745P”,”Av.
Paraiso”,”Donostia”,”682930345”,”20019”,”[email protected]”,”98482019648475947317”),
(“0000000003”,”Oscar”,”Usetxi”,”Blanco”,”72892374B”,”Calle
Matia”,”Donostia”,”697143587”,”20011”,”[email protected]”,”76482756283475947697”),
(“0000000004”,”Ainhoa”,”Etxeberria”,”Perez”,”78469394Q”,”Calle Carlos
III”,”Donostia”,”692306123”,”20018”,”[email protected]”,”51482019283245947368”),
(“0000000005”,”Mikel”,”Vela”,”Lopez”,”72892304C”,”Av.
Bilbao”,”Donostia”,”692510578”,”20018”,”[email protected]”,”29482019283475756374”)
Registros
insert into Registros(Cod_Registro,Hora_Entrada,Hora_Salida,Cod_Cliente)VALUES(“0000000001”,”2018-01-10 16:32:24”,”2018-01-10
18:02:56”,”0000000002”),(“0000000002”,”2018-01-10 17:14:14”,”2018-01-10 18:31:27”,”0000000003”),(“0000000003”,”2018-01-11
8:56:00”,”2018-01-11 10:05:30”,”0000000002”),(“0000000004”,”2018-01-11 15:33:16”,”2018-01-11 16:43:06”,”0000000004”),
(“0000000005”,”2018-01-11 20:18:04”,”2018-01-11 21:00:00”,”0000000001”);

Actividades
insert into Actividades(Cod_Actividad,Nombre,Modalidad_Semanal,Empieza,Acaba,Cod_Monitor)VALUES
(“0000000001”,”Zumba”,”Cardio”,”2018-01-10”,”2018-02-10”,”0000000003”),
(“0000000002”,”Body-Combat”,”Cardio”,”2018-01-10”,”2018-04-10”,”0000000002”),
(“0000000003”,”Personal trainer”,”Fisico”,”2018-01-10”,”2018-07-10”,”0000000001”),
(“0000000004”,”Yoga”,”Flexibilidad”,”2018-01-10”,”2018-05-10”,”0000000004”),
(“0000000005”,”Wing Chung”,”Defensa personal”,”2018-01-10”,”2018-10-10”,”0000000002”);
Inscribir
insert into Inscribir(Cod_Cliente,Cod_Actividad)VALUES
(“0000000001”,”0000000005”),
(“0000000003”,”0000000003”),
(“0000000003”,”0000000004”),
(“0000000002”,”0000000002”),
(“0000000004”,”0000000003”);
Realizar
insert into Realizar(Cod_Registro,Cod_Actividad)VALUES
(“0000000001”,”0000000001”),
(“0000000002”,”0000000003”),
(“0000000003”,”0000000004”),
(“0000000004”,”0000000005”),
(“0000000005”,”0000000003”);
- Una institución, donde participan diferentes personas y que realiza distintas actividades.
- Una persona se debe registrar en la institución para poder anotarse en las actividades, pero puede
participar de los servicios sin realizar actividades.
- Para realizar una actividad debe inscribirse en ella.
- Cada coordinador de una actividad tiene un registro de participantes en la actividad, los que pueden ir
variando a lo largo del año.
- Un participante puede abandonar una actividad y volver a ella una o más veces.
- Se debe registrar tanto el momento en que ingresa, como el momento en que abandona una actividad,
y esa registración debe poder verificarse históricamente.
- Una persona puede tener N periodos donde abandona o continúa la actividad.
- Todo su historial de actividades con inicios y suspensiones se debe conservar para usos contables y
administrativos.
- Diariamente se emitirá una lista de los participantes de cada actividad que estén vigentes.

Para el caso, según estas reglas de


negocio, lo que tienes es:

- Institución: Tabla central que identifica la empresa o institución (necesaria solo a los efectos de
integridad del sistema)
- Persona: Personas registradas en algún momento en la institución.
- Actividad: Listado de actividades desarrolladas en la institución.
- Coordinadores: Personas a cargo de las actividades.
- Persona_Actividad: Registro de inscripciones a una actividad, con su alta original.
- Detalle_Actividad_Persona: Listado de las altas y bajas de una apersona en una actividad.
Contiene la FK de Persona_GrupoActividad.
- Coordinador_Actividad: Listado de Cada Coordinador y Actividad que supervisa.
- Coordinaror_GrupoActividad: Lista de grupos activos de cada coordinador.
- Persona_GrupoActividad: Registración de la Persona en un grupo para una actividad dada.

Nota: El que el único tipo de actividades posibles para tu caso sea de Gym, es irrelevante para el modelado. El esquema de BBDD es
siempre independiente de la aplicación y se planea para que soporte modificaciones a futuro entre dos a cinco años. Y eso hace que se lo
diseñe para soportar cualquier cambio en la orientación del negocio.
Una base de datos debe ser estructuralmente fija, porque cambios sutiles en la estructura de la misma, generan catástrofes en las
aplicaciones y en la propia base. Por eso se planea para el futuro y no solamente para el presente. Y en ese sentido debe ser flexible.

También podría gustarte