Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Ayuda creación de una base de datos

Estas en el tema de Ayuda creación de una base de datos en el foro de Mysql en Foros del Web. Hola a todos, Necesito vuestra ayuda para la planificación de una base de datos, esta trata de una bolsa de cargas privada, es para una ...
  #1 (permalink)  
Antiguo 17/02/2011, 18:09
 
Fecha de Ingreso: febrero-2011
Mensajes: 8
Antigüedad: 13 años, 2 meses
Puntos: 0
Ayuda creación de una base de datos

Hola a todos,

Necesito vuestra ayuda para la planificación de una base de datos, esta trata de una bolsa de cargas privada, es para una cooperativa y solo publican y acceden a ella los de la cooperativa. He echo un esquema que os coloco aquí, pero no me convence este esquema, acepto opiniones y ayuda para hacerla funcional.

Las características mas importantes son:
Acceso privado a unos determinados usuarios (no se pueden dar de alta nuevos excepto el administrador)
Consulta de cargas publicadas y quien las publica.
Consulta de cargas aceptadas y quien las acepta.

Como quien publica las cargas y las acepta solo son las cooperativas que están dentro para poder realizar la consulta he creado las tablas origen y destino para sacar esas consultas.

Gracias por vuestra ayuda.

  #2 (permalink)  
Antiguo 18/02/2011, 08:22
 
Fecha de Ingreso: julio-2006
Ubicación: sevilla
Mensajes: 251
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Ayuda creación de una base de datos

Estimado Compañero

Supongo que es un diseño inicial pero te faltan multitud de tablas intermedias que soluciones las relaciones mucho a muchos, a parte de completar las tablas con campos , por ejemplo comentas que quieres controlar el acceso pero en tu tabla de usuarios te falta un campo tipo privilegios o en su defecto nivel , donde puedas indicar si es usuario o administrador, segundo deberias revisarte algo de modelado de base de datos hay mil en google que te ayudaran mucho y sobre todo en tema de gestion de usuarios hay mucho trabajo hecho que podias ahorrarte, mira php classes que te dan hasta el sql para la administracion de usuarios y solote preocupas de la parte comercial de tu aplicacion.
  #3 (permalink)  
Antiguo 18/02/2011, 09:29
 
Fecha de Ingreso: febrero-2011
Mensajes: 8
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Ayuda creación de una base de datos

Gracias nevergame por tu respuesta,

Con los usuarios eso lo tengo solucionado con una columna de nivel, lo que pasa es que no me salió en la foto (ya que lo había agregado después)
En cuanto al modelado estoy revisando todo y mas o menos lo tengo claro, lo que pasa es que en este caso lo que me lleva por la calle de la amargura es crear las tablas correctas para la consulta de las cargas publicadas y la cargas aceptadas por cada cooperativa.

Me podrías guiar un poco si no te importa sobre que tablas crees tu que faltarían ????? o cual eliminarias ????, te lo agradecería mucho.
No es una aplicación comercial, es una aplicación que desarrollo yo para la empresa familiar.
Un saludo
  #4 (permalink)  
Antiguo 18/02/2011, 09:48
 
Fecha de Ingreso: julio-2006
Ubicación: sevilla
Mensajes: 251
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Ayuda creación de una base de datos

Hola

Pues veras creo que podria tener una tabla llamada itinerarios que estuviera compuesta por origen destino km de esta forma simplificas las consultas y ademas reduces la complejidad de la bd ya que no tendrias duplicados datos , a parte yo meteria una tabla para gestionar las ciudades y otra para gestionar los conductores y los camiones , aparte de eso en tema de bd es de 0 a infinito la cuestion es que sea consistente y no guardes datos por guardar
  #5 (permalink)  
Antiguo 18/02/2011, 09:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Ayuda creación de una base de datos

Hay bastantes detalles para hacer un diseño bien elaborado.
Voy a suponer que por "bolsa de cargas privada" te refieres a una emrpesa o agencia de transporte de cargas que presta servicios puerta a puerta (desde el domicilio de uno al del otro).
Si esto es así, mis observaciones serían:
1) La Carga, suponiendo que se trata de objetos únicos, debe contener ID, Cooperativa de origen (FK), Cooperativa de destino (FK), descripcion, fecha de partida, fecha de llegada y condiciones de pago (FK).
2) En Carga, si el precio es calculado en base a parámetros, deben ir los parámetros (volumen y peso) y si es en base a valores tasados, debe ir el precio. En el primer caso faltan tablas para definir los valores.
3) Las tablas Origen y Destino son superfluas, lo que existen son las tablas Cooperativa y Localidad.
4) La tabla Cooperativa debería contener ID, Nombre, Direccion, Codigo postal, ID de localidad (FK), Telefono, Movil, e-Mail, y otros datos propios de la cooperativa.
5) La tabla Localidad (o como quieras llamarla), tendrá los datos de ID, nombre, provincia y pais.
6) La tabla Usuario debe contener Username (OK), password, Nombre real, Apellido (por separado, no hace falta uno por cada apellido), Direccion personal, ID de cooperativa de pertenencia (FK), nivel o rol asignado de usuario.

Este esquema e puede ampliar en etapa de normalización, pero en lo básico permitiría recabar exactamente la misma información que estás mostrando en la imagen, sin redundancias, inconsistencias ni falta de integridad.

Hay razones de peso para que el esquema sea así, que se pueden explicar si quieres.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 18/02/2011, 10:02
 
Fecha de Ingreso: febrero-2011
Mensajes: 8
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Ayuda creación de una base de datos

Gracias, por echarme un cabo.
Ahora ya se a que te refieres, lo de los conductores y los camiones no lo necesito ya que es una cosa pequeña y privada, con lo cual en este momento no es necesario.

Una última pregunta y ya no os doy mas la lata. ¿como pondría las cooperativas para poder sacar la consulta de cuantas cargas han publicado o cuantas han cogido?. Aquí es donde veo que se me duplican los datos. Ya que la cooperativa "X" puede publicar una carga que será cogida por la "Y" y al mismo tiempo la "X" puede coger una carga publicada por "Z". Aquí es donde no lo veo claro para no repetir el campo de cooperativa en otras tablas o como poder indexarlo.

De todas formas muchas gracias por tus respuestas, me han ayudado a ver el esquema con mas claridad.
  #7 (permalink)  
Antiguo 18/02/2011, 10:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Ayuda creación de una base de datos

Ppor eso te digo que debe ir en la carga lso ID de ambas. Cada una consulta por el campo específico.
En definitiva, eso se resuelve a nuvel de las consultas que se deban hacer y se construye la consulta en base a lo que quieras obtener.
Lo que no debes hacer es una consulta genérica donde no tengas condiciones WHERE que no restrinjan lo leído. Sino, tendrás que administrarlo en la aplicación...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 22/02/2011, 08:50
 
Fecha de Ingreso: febrero-2011
Mensajes: 8
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Ayuda creación de una base de datos

Hola gnzsoloyo,
Este fin de semana he estado probando el modelo que tu me has dicho. Una pregunta, cuando creo un recordset para presenta los datos de una consulta, al coger los datos de varias tablas como lo hago, con un "join" para que no aparezcan campos duplicados ??????
y una duda, como puedo resolver la relación de cooperativa_origen (fk) y cooperativa_destino (fk)?? hago una relación 1:n ??
Gracias,

Etiquetas: creación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:55.