[Php-avanzado] Tablas para Bibliotech
Leonardo Tadei - Pegasus Tech Supply
leonardot en pegasusnet.com.ar
Sab Dic 21 00:28:32 ART 2013
Hola Pehúen!
El vie, 20-12-2013 a las 15:41 -0800, Fernando Pehuén Borsani escribió:
> Hola profe!
>
>
> Acá le envío la tablas para mi proyecto (en versales está el nombre de
> la tabla, y en minúsculas sus campos),
Como la lista me envía todo en texto plano, las versalitas se quedaron
por el camino.
Igual se entiende.
> y debajo los requerimientos (v6.4) para que compare.
Gracias! Tengo la versión final a mano, así que omitilos tranquilo en
futuros envíos, así te queda más espacio para la normalización.
> Algo que me estuvo dando dificultades es que inicialmente pensé que
> los atributos equivalían a las columnas de las tablas, pero creo que
> en realidad vienen a ser los parámetros de las funciones.
Bueno, no son ni una cosa ni la otra. Los atributos son los datos a
manejar en bruto, para tirarlos todos juntos arriba de una mesa y
comenzar a normalizar.
Algunos podrían volverse (o no) parámetros de funciones, pero esto
sería asumir que el software va a usar el paradigma de la programación
estructurada y no cualquier otro paradigma: la SRS funcional no debe
indicar ningún paradigma.
> Por este motivo va a notar que a veces las tablas son el reflejo de
> cada atributo, y que en otros lugares las tablas tienen más columnas
> que las que corresponderían por los atributos.
Esto suele ser así, porque la normalización tiene reglas diferentes de
la construcción de una SRS. A veces las tablas no se parecen en nada, a
primera vista, a la especificación!
> ---------
> Tablas:
> ---------
>
> EDITORIALES
> id/editor
> AUTORES
> id/autor
La tabla Autores no está en 1FN!
> GENEROS
> id/genero
> LIBROS
> id/codigo/id_editor/titulo/id_genero/portada/resumen
> AUTORES_LIBROS
> id/id_autor/id_libro
> UNIDADES
> id/id_libro/codigo_interno
> SEXOS
> id/sexo
> RANGOS
> id/rango
> VISITANTES
> id/nombre/apellido/apodo/email/id_rango/id_sexo
> VOTOS
> id/id_libro/id_visitante/valor (0 || 1)
> COMENTARIOS
> id/id_libro/id_visitante/fecha/texto
> POPULARIDADES
> id/id_libro/cantidad
No es simple de ver, pero el campo "cantidad" no va. Es una
repetición...
Le falta un campo "fecha" para poder implementar el RF12.
> REPORTES
> id/fecha/texto
Esta tabla no hace falta: los datos se calculan.
Qué es el "texto" que aparece acá? No lo puedo relacionar con ningún
atributo.
> TIPOS_DOCS
> id/tipo
> ASOCIADOS
> id/nombre/apellido/id_tipo_docs/documento/fecha_registro/id_sexo/email/direccion/tel/cel/id_rango/id_permiso (0 = banned || 1 = allowed)
Poner acá una referencia al "rango de edad" en vez de la "fecha de
nacimiento" para calcular el rango correspondiente te mete en un costo
inmanejable para mantener los datos....
id_rango no está mal, pero "fecha de nacimiento" es mucho mejor!
> CUOTAS id/id_asociado_fecha
Puede ser que haya un _ en vez de un / ???
> TIPOS_INF id/tipo
> INFORMES id/id_asociado/id_tipos_inf/fecha/texto
Según tu SRS estas dos tablas no van, porque definís "informar" como
"enviar por e-mail" y por lo tanto esto no se almacena.
> PUESTOS
> id/puesto
> PERMISOS
> id/permiso
> EMPLEADOS
> id/nombre/apellido/id_puesto/id_permiso
Estas 3 tablas están correctas, pero pasalas más abajo y separalas con
algo para que sea más simple identificarlas como parte de los RNF.
> MOVIMIENTOS
> id/id_unidad/id_estado/fecha/id_asociado/id_empleado
Según tu SRS un Movimiento no tiene un Empleado.
Por otra parte, tenés que repetir los datos importantes de cada entidad
referenciada en la tabla de Movimientos, porque tenés que poder borrar
Unidades, Asociados y Empleados sin perder información de los
Movimientos!
Si no entiendo mal, en la tabla Movimientos estás almacenando los
Préstamos, Devoluciones, Extravíos, Adquisiciones y Mantenimientos, pero
loa atributos de cada una de estas cosas deberían ser idénticos (y no lo
son) para poder representarlo así... y aún si fueran idénticos, estás
perdiendo mucha información (por ejemplo, no podés saber cuánto tiempo
estuve prestado una unidad si ya fue devuelta).
> VENCIMIENTOS
> id/id_movimiento/fecha (esta fecha depende de la confiabilidad, que es
> un dato cambiante, por eso la fijo en esta tabla)
Pero si no hace falta! Podés poner la fecha de vencimiento como un
campo del Préstamo (cuán esta tabla exista!)
> STOCK
> id/id_libro/existencias/prestados/manteniendo/extraviados/destruidos/adquiridos
Tampoco: el Stock es un cálculo sobre las Unidades existentes.
Bueno Pehuén, es una muy buena primer versión!
Seguimos!
> ---------------------------------------------------------
> Software Requirements Specification[SRS] Bibliotech v6.4
> ---------------------------------------------------------
>
> Requerimientos Funcionales[RF]:
>
> 01) El sistema debe gestionar editoriales.
> 02) El sistema debe gestionar autores.
> 03) El sistema debe gestionar géneros.
> 04) El sistema debe gestionar libros con su editorial[01], su(s)
> autor(es)[02] y su género[03].
> 05) El sistema debe gestionar unidades de libros[04].
> 06) El sistema debe mostrar los sexos.
> 07) El sistema debe mostrar rangos de edad.
> 08) El sistema debe gestionar visitantes con su sexo[06] y rango de
> edad[07].
> 09) El sistema debe registrar los votos de los visitantes[08] a los
> libros[04].
> 10) El sistema debe gestionar comentarios de los visitantes[08] a los
> libros[04].
> 11) El sistema debe registrar la popularidad del libro[04].
> 12) El sistema debe reportar la popularidad[12] de los libros[04]
> mensualmente.
> 13) El sistema debe buscar libros[04].
> 13.1) Por ISBN
> 13.2) Por Editorial[01].
> 13.3) Por Autor[02].
> 13.4) Por título.
> 13.5) Por género[03].
> 14) El sistema debe mostrar tipos de documentos.
> 15) El sistema debe gestionar asociados con su sexo[06], rango de
> edad[07] y tipo de documento[15].
> 16) El sistema debe calcular la confiabilidad de los asociados[15].
> 17) El sistema debe mostrar los meses del año.
> 18) El sistema debe inscribir cuotas de asociados[15] con su mes[17].
> 19) El sistema debe informar al asociado del vencimiento de la
> cuota[18].
> 20) El sistema debe mostrar los estados.
> 21) El sistema debe registrar el préstamo de unidades[05] a
> asociados[15] con su estado[20].
> 21.1) El sistema debe detener un nuevo préstamo si excede la
> confiabilidad[16].
> 21.2) El sistema debe detener un nuevo préstamo si la cuota[18] es
> anterior al mes en curso.
> 21.3) El sistema debe detener un nuevo préstamo si no hay
> unidades[05] disponibles.
> 22) El sistema debe registrar devoluciones de unidades[05] por parte
> de los asociados[15] con su estado[20].
> 23) El sistema debe registrar extravíos de unidades[05] por parte de
> los asociados[15] con su estado[20].
> 24) El sistema debe registrar adquisiciones de unidades[05] por parte
> de los asociados[15] con su estado[20].
> 25) El sistema debe registrar el mantenimiento de unidades[05] con su
> estado[20].
> 26) El sistema debe gestionar el stock de unidades[05].
> 26.1) El sistema debe comprobar si ya existe un libro[04] cuando
> se den de alta unidades[05].
> 26.2) El sistema debe sumar uno a stock:cantidad y
> stock:disponibles al efectuarse el alta de unidad[05].
> 26.3) El sistema debe restar uno a stock:disponibles al efectuarse
> un préstamo[21].
> 26.4) El sistema debe sumar uno a stock:disponibles por
> devoluciones[22].
> 26.5) El sistema debe restar uno a stock:cantidad por
> extravíos[23].
> 26.6) El sistema debe sumar uno a stock:cantidad y
> stock:disponibles por adquisiciones[24].
> 26.7) El sistema debe restar uno a stock:disponible al enviarse la
> unidad[05] a mantenimiento[25].
> 26.8) El sistema debe restar uno a stock:cantidad por destrucción
> de la unidad[05] en mantenimiento[25].
> 26.9) El sistema debe sumar uno al stock:disponible al volver la
> unidad[05] de mantenimiento[24].
> 26) El sistema debe informar al asociado[15] del vencimiento del
> préstamo[21] un día antes del vencimiento.
> 27) El sistema debe mostrar los préstamos[21] vencidos hace más de una
> semana.
>
>
> Requerimientos No Funcionales[RNF]:
>
> - Gestionar puestos
> - Gestionar permisos
> - Gestionar a los empleados con su puesto y permiso.
>
> --------------
> Diccionario:
> --------------
> --Editorial: Casa editora.
> Atributos: nombre.
> --Autores: nombre(s) de la(s) persona(s) que escribe(n) el libro. Un
> libro puede tener varios autores.
> Atributos: nombre.
> --Género: categorías en que clasificar de forma excluyente las obras
> literarias atendiendo a su contenido. Algunos de ellos son: poesía,
> ciencia ficción, cuento.
> Atributos: nombre.
> --Libro: Obra de extensión suficiente para formar un volumen, en
> soporte físico.
> Atributos: código identificador (isbn o equivalente previo a 1970),
> editorial, autores, título, género, portada, resumen de la contracara.
> --Unidad: copia de un libro que comparte todas los atributos con el
> original, menos el código bibliotecario, propio de la unidad.
> Atributos: código bibliotecario.
> --Sexo: femenino o masculino.
> Atributo: nombre.
> --Rango de edad: hasta 15 años, de 15 a 18 años, de 18 a 22 años, de
> 23 a 30 años, de 30 a 40 años, de 40 a 60 años, mayor de 60 años.
> Atributo: rango.
> --Visitante: persona externa a la empresa que ingresa al contenido web
> generado por este software.
> Atributos: Nombre, Apellido, Apodo, email, rango de edad, sexo.
> --Votos: valoración positiva o negativa sobre el libro.
> Atributo: valor.
> --Comentarios: opinión que el visitante deja escrita sobre un libro
> específico.
> Atributos: autor, contenido, libro, fecha.
> --Popularidad: cantidad de personas que leen la información detallada
> de un libro(portada y resumen de contracara).
> Atributos: libro, cantidad.
> --Reportar: crear un archivo con una lista decreciente de los libros y
> la cantidad de visitas que recibieron.
> Atributos: ranking, fecha.
> --Búsqueda: Comprobación de existencia de un libro(por código
> identificador o título), autor, editorial, y listado de los
> resultados.
> --Comprobar si ya existe un libro: verificar si el código
> identificador de un libro ya existe en el sistema.
> Atributos: código identificador ingresado, resultado.
> --Tipos de documentos: documento nacional de identidad(DNI), libreta
> de enrolamiento(LE), libreta cívica(LC), cédula de identidad(CI).
> Atributo: tipo.
> --Confiabilidad: cantidad de préstamos activos simultáneos que puede
> tener un asociado, cantidad de días hasta el vencimiento del préstamo.
> Cálculo de puntos: devuelto antes del vencimiento, +1 punto.
> Devuelto tras el vencimiento, -10 puntos por día vencido y cambio
> temporal a rango suspendido. Extraviado: inhibe de por vida al
> asociado a no ser que efectúe una adquisición, en cuyo caso lo
> restablece como rango 1 con 0 puntos.
> Rangos: (1) hasta 100 puntos: 2 unidades, 2 semanas. (2) desde 101
> hasta 300: 2 unidades, 3 semanas. (3) desde 301: 3 unidades, 3
> semanas. (Suspendido) 0 libros, los días suspendido se calculan así:
> Penalización = 5 * cantidad de días de atraso * cantidad de veces que
> el asociado devolvió tarde un préstamo. Tras este período el asociado
> recupera su rango de confiabilidad del 1 al 3 según sus puntos
> almacenados.
> Atributos: asociado, puntaje, rango.
> --Asociado: persona que paga un abono mensual y a cambio puede recibir
> unidades en préstamo.
> Atributos: Nombre, Apellido, tipo de documento, número de documento,
> fecha de registro, email, teléfono, celular, dirección, rango de edad,
> sexo, confiabilidad.
> --Cuota: suma de dinero que se abona mensualmente para poder recibir
> los servicios de la institución.
> Atributos: asociado, último mes(con su año correspondiente) pago.
> --Informar: enviar un correo electrónico con información de interés.
> Hay dos tipos: de vencimiento de cuota y de vencimiento de préstamo.
> Atributos: Asociado, tipo de informe, fecha, informe.
> --Estados: reflejan el movimiento de unidades: activo, anulado,
> devuelto en fecha, devuelto vencido, extraviado, adquirido, reparando,
> reparada, destruida.
> Atributo: nombre.
> --Préstamo: entrega de unidades de la biblioteca al asociado, para que
> los lea en su hogar.
> Atributos: Asociado, unidad, fecha de préstamo, fecha de
> vencimiento, estado: activo o anulado.
> --Devolución: cese del préstamo porque el asociado entregó de vuelta
> la unidad a la biblioteca.
> Atributos: Asociado, unidad, fecha en que se devolvió, estado:
> devuelto en fecha o devuelto vencido.
> --Extravío: pérdida de la unidad porque el asociado no la devolvió a
> la biblioteca.
> Atributos: Asociado, unidad, estado: extraviado.
> --Adquisición: cuando el usuario que efectuó un extravío entrega a la
> biblioteca una unidad comprada por él.
> Atributos: Asociado, unidad, estado: adquirido.
> --Mantenimiento: mantenimiento recibe unidades dañadas e intenta
> repararlas. En caso que sea imposible, la destruirá.
> Atributos: unidad, estados: reparando, anulado, reparada, destruida.
> --Stock: suma de las unidades que corresponden al mismo libro, y
> cuantos de esas unidades no están prestadas, extraviadas, destruidas o
> en mantenimiento.
> Atributos: código identificador, cantidad, disponibles.
> --Puesto: departamento en el que trabaja el empleado. Ejemplos:
> infantil, escolares, histórico.
> --Permiso: nivel de acceso. El cero representa acceso nulo. A mayor
> número, mayor cantidad de funcionalidades disponibles.
> --Empleado: persona bajo sueldo que realiza tareas para el comprador
> de este software.
>
> Atributos: Nombre, Apellido, puesto, permiso.
>
>
>
> _______________________________________________
> Lista de correo: Php-avanzado
> Mensajes a la lista: Php-avanzado en pato2.fi.mdp.edu.ar
> Administración Web: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> Desubscripción: php-avanzado-request en pato2.fi.mdp.edu.ar?subject=unsubscribe
--
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key
Más información sobre la lista de distribución Php-avanzado