Академический Документы
Профессиональный Документы
Культура Документы
A partir de aqu har una descripcin de la estructura de tablas y columnas para almacenar
la informacin de este proceso. Primero, algunas generalidades sobre cmo crear los
campos.
Como podis ver, slo estn indicados los campos que forman el modelo de datos las
claves primarias y las claves ajenas, que en cualquier caso deben estar ocultas al usuario
final. En la siguiente seccin describiremos los campos de cada tabla.
Cursos
nombre: varchar(100)
descripcion: Memo. Se utilizar, en el contrato que se imprime para el cliente, para
hacer una descripcin larga del curso en el que el alumno se est matriculando. En
uno de los sistemas que tenemos, en lugar de tener un campo memo, tenemos una
tabla separada en la que se guardan, por tipologas, distintos campos memo, que se
imprimen en distintos lugares del contrato.
fecha_inicio: date
fecha_fin: date
Formas de pago
nombre: varchar(100)
importe: float. Es el importe de cada recibo que se cobrar
numero_meses: integer. El nmero de meses de cada recibo. Si es 1, se crear un
recibo cada mes mientras dure la matriculacin, si es 3, uno cada tres meses, etc. En
algn sistema hemos hecho, en lugar de esto, una estructura de plantillas de recibos,
con fechas, descripciones, etc. personalizadas. Eso permite ms flexibilidad y ms
control, pero el modelo es bastante ms complejo.
numero_orden: integer. A la hora de presentrselo al cliente, poder mostrar primero
las que ms nos interesen.
importe_matricula: float. Si adems del importe del curso hay un importe de
matrcula, se marca aqu.
concepto_matricula. El concepto del recibo de matrcula, si creamos uno.
Grupos
nombre: varchar(100)
codigo: varchar(20). Siempre viene bien tener una codificacin adems del nombre.
Por ejemplo, en algunos sistemas lo utilizamos para guardar el cdigo del grupo en
la Fundacin Tripartita.
fecha_inicio: date
fecha_fin: date. Por defecto, las del curso al que pertenece el grupo, y adems estas
fechas no pueden estar fuera de las fechas del curso al que pertenecen.
lugar: varchar(100) de imparticin del grupo. En general, hacemos una gestin de
aulas, pero eso lo ampliar en otro artculo.
notas: memo, del grupo
horario: varchar(100) del grupo. En realidad, el horario se trata como una tabla por
debajo de esta, pero no voy a entrar en tanto nivel de detalle ahora.
maximo_alumnos: Integer. Mximo nmero de alumnos permitidos en el grupo.
numero_alumnos: Integer. Es el nmero de alumnos existentes en el grupo. Este
campo es de slo lectura para el usuario, y es calculado, a travs de una serie de
Triggers en la base de datos, para poder saber rpidamente el nmero de alumnos
activos en cada grupo sin tener que estar sumando.
Clientes
Alumnos
Medios de pago
tipo_medio: Integer. Normalmente tiene una tabla asociada con los tipos de medios
de pago, que suelen ser: Sin Pago, Contado, Banco
nombre_titular: varchar(100)
direccion_titular: memo
entidad: varchar(4)
oficina: varchar(4)
dc: varchar(2)
numero_cuenta: varchar(10). Si el tipo_medio es banco, entonces se tiene que
rellenar la informacin bancaria del cliente.
por_defecto: boolean. Se suele preguntar el medio de pago, pero teniendo uno por
defecto, para no tener que rellenarlo siempre. Normalmente, cada cliente, al crearse,
se crea un medio de pago contado, y se le pone por defecto.
Matrculas
Adems de los datos de curso, forma de pago, medio de pago, alumno y cliente (esto ltimo
puede parece redundante, pero no lo es podemos tener el caso (yo lo he visto) de un
alumno que se matricula para estudiar, digamos, ingls y francs el ingls lo paga el
padre y el francs la madre. As, es necesario que cada matrcula est asociada con el
alumno, y tambin con el cliente), necesitamos los siguientes campos:
fecha_inicio: date.
fecha_fin: date. Por defecto, las del curso, pero hay gente que puede matricularse
despus o terminar antes (si se da de baja, por ejemplo).
importe: real. Por defecto, el de la forma de pago escogida, pero puede ser tambin
distinto descuentos por familiares, cosas as. Suele ser buena idea dejarlo abierto,
para que el cliente lo pueda cambiar.
motivo_baja: varchar(100). Normalmente, los motivos de baja son una tabla
separada, para luego poder obtener estadsticas de nmero de bajas por tipo, cosas
as.
Recibos
fecha_emision: date
fecha_cobro_completo: date
numero_recibo: varchar(20)
concepto: varchar(50)
importe_recibo: float.
importe_pendiente: float. Es un campo de slo lectura, actualizado a travs de
triggers, que permite acceder a la informacin sin tener que sumar.
Pagos
fecha: date
importe: real
forma_cobro: varchar(20). Normalmente es una tabla separada, igual que el caso de
los tipos de baja. Puede ser: contado, transferencia, tarjeta, taln, etc.
Alumnos en grupos
fecha_inicio: date
fecha_fin: date. Suele ser una interseccin entre la duracin del grupo y la de la
matrcula, pero cuando el alumno cambia de grupo, para una matrcula puede haber
varios registros de alumnos en grupos. Hay que tener en cuenta tambin la
posibilidad de que en un mismo curso, pagando ms, un alumno pueda asistir a
varios grupos (esto tambin lo he visto).
En el ejemplo que estoy describiendo, hay varios triggers y procedimientos que se usan:
En las prximas semanas continuar esta serie de artculos, describiendo otros submodelos
de sistemas que hemos desarrollado algunas ideas que tengo:
Espero que este ejemplo de modelo entidad-relacin os sirva de ayuda, me gustar leer
vuestros comentarios.