Autor
|
Tema: Ayuda con base de datos. Formulacion correcta? Cumple con Boyce-Codd? (Leído 2,602 veces)
|
LeandroRodriguez
Desconectado
Mensajes: 3
|
Hola, buenas tardes, necesito ayuda con un trabajo práctico que estoy haciendo para la materia bases de datos. El tema es así, el profesor me pidió que haga un base de datos de una agencia de taxis. Las condiciones de la base de datos son las siguientes:
Se debe diseñar, implementar y documentar una base de datos para una agencia de taxis. Se ha relevado que es necesario registrar lo siguiente:
• Datos personales de los choferes • Datos de los autos que conducen. • Un chofer utiliza un sólo auto pero un auto puede ser conducido por varios choferes. • Hora de inicio y finalización de trabajo por días (Los choferes trabajan en horario y días variables) • Viajes que realiza un chofer origen del mismo, fecha y hora de comienzo, destino, fecha y hora de finalización (los dos últimos opcionales).
Yo primero cree el diagrama entidad-relación, y luego hice el diseño de las tablas. Pero cuando lo termine, lo siento medio vacío, no se si esta bien hecho y tampoco estoy seguro que cumpla las condiciones de Boyce-Codd.
Las tablas que cree me quedaron así :
Table Chofer:
Dni, INT Nombre, TEXT Apellido, TEXT Edad, INT Primary key = Dni
Table Auto:
Dnichofer, INT Marca, TEXT Modelo, TEXT Primary key = Dnichofer
Table trabajo: Dnichofer , INT FechaHoraInicio, DATETIME FechaHoraFin, DATETIME Primary key = (Dnichofer,Fechahorainicio,Fechahorafin)
Table viaje: Dnichofer , INT FechaHoraInicio, DATETIME FechaHoraFin, DATETIME LugarOrigen, TEXT LugarFin, TEXT Primary key = (Dnichofer,Fechahorainicio,Fechahorafin)
Están bien las tablas? Alguna recomendación? Mi idea es hacer asi las tablas y después manejar todas las restricciones con código php. Voy a hacer una pagina con mysql y php y manejar las excepciones ahí. Nunca publique en el foro asi que quizás tenga algo mal, ya sea en el formato de la pregunta u otra cosa, cualquier cosa me dicen y lo arreglo, gracias!
|
|
|
En línea
|
|
|
|
engel lex
|
Un chofer utiliza un sólo auto pero un auto puede ser conducido por varios choferes. Table Auto:
Dnichofer, INT Marca, TEXT Modelo, TEXT Primary key = Dnichofer estás atando un auto al chofer, solo ese chofer tiene que ver con ese auto y un chofer podría tener varios autos... debe ser al contrario, el chofer debe estar atado al auto, ya que varios pueden referenciarlo a el, pero el no puede referenciar a uno solo Hora de inicio y finalización de trabajo por días (Los choferes trabajan en horario y días variables) Table trabajo: Dnichofer , INT FechaHoraInicio, DATETIME FechaHoraFin, DATETIME Primary key = (Dnichofer,Fechahorainicio,Fechahorafin) si la clave primaria es dnichofer, el chofer solo puede tener una entrada, ya que la clave primaria debe ser unica, al igual que hora inicio y hora fin, ningún otro chofer podría tener un horario en las mismas horas Table viaje: Dnichofer , INT FechaHoraInicio, DATETIME FechaHoraFin, DATETIME LugarOrigen, TEXT LugarFin, TEXT Primary key = (Dnichofer,Fechahorainicio,Fechahorafin) lo mismo que el punto anterior
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
LeandroRodriguez
Desconectado
Mensajes: 3
|
[code] [code]
estás atando un auto al chofer, solo ese chofer tiene que ver con ese auto y un chofer podría tener varios autos... debe ser al contrario, el chofer debe estar atado al auto, ya que varios pueden referenciarlo a el, pero el no puede referenciar a uno solo
Hola, gracias por la respuesta, el tema es que la consigna me esta pidiendo que un chofer tenga solo un auto. Entonces yo le permito al chofer tener solo un auto, podrías revisar a ver si tengo razón? Porque lo veo muchas veces y creo que las tablas están definidas para que un chofer tenga solo un coche. Puedo estar equivocándome y no veo donde, si me pudieras confirmar si tengo razón te lo agradezco. si la clave primaria es dnichofer, el chofer solo puede tener una entrada, ya que la clave primaria debe ser unica, al igual que hora inicio y hora fin, ningún otro chofer podría tener un horario en las mismas horas
lo mismo que el punto anterior
Si, el tema es que no expresé bien el como hice la clave primaria. En realidad, la clave primaria esta conformada por: (Dnichofer,FechaHoraInicio,FechaHoraFin), es una clave compuesta. Y en el caso siguiente también es una clave primaria compuesta con (Dnichofer,FechaInicioViaje,FechaFinViaje). Esta bien usar estas claves compuestas? O es mejor encontrar otra manera de relacionar las tablas ?. No quise usar llaves foráneas porque me piden que se cumplan las condiciones de Boyce-Codd. Todavía tengo esas dudas, desde ya, gracias![/code][/code]
|
|
« Última modificación: 24 Octubre 2015, 02:45 am por LeandroRodriguez »
|
En línea
|
|
|
|
0roch1
Desconectado
Mensajes: 123
|
Qué tan detallado se requiere el diseño?.
Tal vez yo agregaría otros datos extras a las tablas, por ejemplo Chofer.
Dni, INT Nombre, TEXT Apellido, TEXT Edad, INT Primary key = Dni ----- Direccion Telefono TipoLicencia FechaNacimiendo FechaIngreso Activo
Si guardas solo la edad el chofer siempre será la misma, en cambio con la fecha de nacimiento puedes calcularla. Tener la fecha de registro de la "entidad" siempre es bueno.
------------------------------------------ Dnichofer, INT Marca, TEXT Modelo, TEXT Primary key = Dnichofer
y si hay dos autos de la misma marca y modelo?,
Dnichofer: 12345, Marca: Aston Martin, Modelo: DB9 Dnichofer: 67890, Marca: Aston Martin, Modelo: DB9
cómo sabrás cuál taxi le pertenece a tal chofer?, agrega el número de placa y ese será la Primary Key. Dnichofer es Foreign Key en esta tabla.
Por ahora son todos los comentarios de mi parte.
|
|
|
En línea
|
|
|
|
LeandroRodriguez
Desconectado
Mensajes: 3
|
Ahora veo en donde me estaba equivocando, estaba relacionando mal el auto con el chofer. Buena data lo de poner fecha de nacimiento en edad también, voy a tener en cuenta las recomendaciones, gracias!
|
|
|
En línea
|
|
|
|
|
|