Modelado de Base de Datos

Modelado de Base de datos para el “Desarrollo de un sistema de transacción comercial con reconocimiento biométrico para

Views 128 Downloads 110 File size 205KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Modelado de Base de datos para el “Desarrollo de un sistema de transacción comercial con reconocimiento biométrico para supermercados” Este proyecto fue desarrollado bajo la base de datos Mysql 5. Los motivos de elegir MySql como gestor de base de datos para el proyecto, son: En primer lugar, el económico. Porque permitirá realizar un proyecto utilizando productos OpenSource o productos licenciados libremente por los fabricantes (como Microstrategy Reporting Suite). Seguramente si estuviésemos en un gran proyecto, elegiríamos una opción de base de datos propietaria, como Oracle (que es para muchos la mejor opción por estudios, prácticas o consenso). Se puede ver el estudio comparativo de bases de datos realizado por Forrester.

En segundo lugar, MySql es de reconocido prestigio, fiabilidad, velocidad, rendimiento, facilidad de administración y conexión con otros productos, bien documentados, con una buena evolución y soporte. Productos de los que sea fácil obtener información, con buenas herramientas, y para los que incluso

podamos recibir cursos de formación si fuese necesario. Productos que estén siendo utilizados en muchos entornos productivos y que nos den la suficiente confianza. Además, los gestores de bases de datos OpenSource hace tiempo que dejaron de ser un experimento y ya son una alternativa real para las empresas (incluso aparecen en los cuadrantes Gartner). Son productos cada vez más evolucionados, con más funcionalidades y las empresas que los desarrollan tienen también cada vez más volumen de negocio (cuestión importante para continuar la evolución de los productos). En nuestro caso, hemos decidido trabajar con MySql o PostgreSql, y vamos a centrarnos en analizar cuál de los dos productos nos quedamos. Tenemos mucha información de comparaciones entre MySql y PostgreSql, pero es el momento de las conclusiones y de elegir el producto que utilizaremos en nuestro proyecto, teniendo en cuenta las siguientes consideraciones: 1) Es la primera vez que trabajamos con ambas bases de datos, y en ambos casos buscaremos la facilidad de trabajo, la existencia de herramientas gráficas y de administración, la documentación, etc. Teniendo en cuenta estas consideraciones y los estudios y comparativas que hemos descrito anteriormente, decidimos trabajar con MySql por los siguientes motivos: 1) Velocidad: aunque en algunos estudios PostgreSql es mejor para entornos donde la integridad de datos es fundamental (como en el desarrollo de aplicaciones), a nivel de rendimiento MySql es mejor. En concreto, cuando utilizamos el tipo de motor MyIsam, el rendimiento de MySql es mucho mejor. Este será el tipo de Engine con el que definiremos todas nuestras tablas. El motor InnoDb es más lento y está orientado a aplicaciones donde la actualización e integridad es más importante. 2) Herramientas gráficas, documentación, plataformas: Mysql proporciona una amplia documentación (muy completa) y multitud de herramientas gráficas de gestión y de conectividad. PostgreSql también cumpliría los requisitos en el tema de documentación y plataformas soportadas. También es importante para

nosotros disponer de Mysql, que es una herramienta de Diseño de Bases de datos, como es MySql Workbench, que nos permite definir nuestros modelos relacionales, generar las sentencias SQL y construir la base de datos, así como realizar ingeniería inversa (construir el modelo de datos a partir de una base de datos existente) o comparar el modelo definido en la herramienta con el existente en la base de datos. Algunos de los usuarios más destacados de Mysql son los siguientes: •Amazon.com •Cox Communications – La cuarta televisión por cable más importante de EEUU, tienen más de 3.600 tablas y aproximadamente dos millones de inserciones cada hora. •Craigslist •CNET Networks •Digg – Sitio de noticias. •flickr, usa MySQL para gestionar millones de fotos y usuarios. •Google – Para el motor de búsqueda de la aplicación AdWords. •Joomla!, con millones de usuarios. •phpBB, Uno de los más famosos sitios de foros, con miles de instalaciones y con millones de usuarios. •LiveJournal – Cerca de 300 millones de páginas servidas cada día.[2] •NASA •NetQOS, usa MySQL para la gestión de algunas de las redes más grandes del mundo como las de Chevron, American Express y Boeing. •Nokia, usa un cluster MySQL para mantener información en tiempo real sobre usuarios de redes de móviles. •Omniture •Sabre, y su sistema de reserva de viajes Travelocity •Slashdot – con cerca de 50 millones de páginas servidas cada día. •Wikipedia, sirve más de 200 millones de consultas y 1,2 millones de actualizaciones cada día, con picos de 11.000 consultas por segundo. •WordPress, con cientos de blogs alojados en él. •Yahoo! – para muchas aplicaciones críticas.

Modelo de Base de datos

Descripción de tablas usuario

Tabla usuario

idUsuario

Código de usuario

login

Identificador de nombre de usuario

password

Contraseña de usuario

admin

Código que indica si el usuario es administrador o simple

usuario.

alumno idAlumno

Tabla alumno Código de alumno (este puede almacenar si el piloto es militar, civil o comercial)

nombres

Nombre(s) de alumno

apellidoPat Apellido Paterno de alumno

apellidoMat Apellido Materno de Alumno dni

Dni de Alumno

celular

Celular de Alumno

foto

Nombre de Foto de Alumno

fechaIns

Fecha de Inscripción de Alumno

instructor

Tabla Instructor

idInstructor Código de instructor nombres

Nombre(s) de instructor

apellidoPat Apellido Paterno de instructor apellidoMat Apellido Materno de instructor dni

Dni de instructor

celular

Celular de instructor

foto

Nombre de Foto de instructor

fechaIns

Fecha de Inscripción de instructor

evaluacion Tabla evaluación idEvaluacion

Código de evaluación

nota

Puntaje de evaluación

fecha

Fecha de evaluación

video

Nombre de video de evaluación

evaluacionHis

Tabla evaluación Histórico

idEvaluacionHis

Código de evaluación Histórico

nota

Puntaje de evaluación Histórico

fecha

Fecha de evaluación Histórico

video

Nombre de video de evaluación Histórico

Scritp Generado

/* Created

03/02/2015

Modified

04/02/2015

Project

Sistema de evaluación para alumnos pilotos

Model

Company

Author

Néstor Ricardo Mamani Zapana

Version

v0.1

Database

mySQL 5

*/

Create table alumno ( idAlumno Varchar(20) NOT NULL, nombres Varchar(50), apellidoPat Varchar(20), apellidoMat Varchar(20), dni Varchar(9), celular Varchar(11), foto Varchar(20), fechaIns Date, idUsuario Int NOT NULL, Primary Key (idAlumno)) ENGINE = MyISAM;

Create table evaluacion ( idEvaluacion Varchar(20) NOT NULL, nota Int, fecha Date, video Varchar(20), idAlumno Varchar(20) NOT NULL, Primary Key (idEvaluacion)) ENGINE = MyISAM;

Create table instructor ( idInstructor Varchar(20) NOT NULL, nombres Varchar(50), apellidoPat Varchar(20), apellidoMat Varchar(20), dni Varchar(9),

celular Varchar(11), foto Varchar(20), fechaIns Date, idEvaluacion Varchar(20) NOT NULL, idUsuario Int NOT NULL, Primary Key (idInstructor)) ENGINE = MyISAM;

Create table usuario ( idUsuario Int NOT NULL, login Varchar(20), password Varchar(20), admin Bool, Primary Key (idUsuario)) ENGINE = MyISAM;

Create table evaluacionHis ( idEvaluacionHis Int NOT NULL, nota Int, fecha Date, video Varchar(20), idEvaluacion Varchar(20) NOT NULL, Primary Key (idEvaluacionHis)) ENGINE = MyISAM;

Alter table evaluacion add Foreign Key (idAlumno) references alumno (idAlumno) on delete restrict on update restrict; Alter table instructor add Foreign Key (idEvaluacion) references evaluacion (idEvaluacion) on delete restrict on update restrict; Alter table evaluacionHis add Foreign Key (idEvaluacion) references evaluacion (idEvaluacion) on delete restrict on update restrict; Alter table alumno add Foreign Key (idUsuario) references usuario (idUsuario) on delete restrict on update restrict; Alter table instructor add Foreign Key (idUsuario) references usuario (idUsuario) on delete restrict on update restrict;