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

Dudas al crear mi diseño de BD

Estas en el tema de Dudas al crear mi diseño de BD en el foro de Mysql en Foros del Web. Hola a todos, Estoy proponiendome diseñar una base de datos para una página web que estoy montando. Pero el problema es que no acabo de ...
  #1 (permalink)  
Antiguo 04/01/2009, 14:53
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Dudas al crear mi diseño de BD

Hola a todos,

Estoy proponiendome diseñar una base de datos para una página web que estoy montando. Pero el problema es que no acabo de ver como puedo enlazar las tablas (claves foraneas... ya que las claves primarias creo que las tengo controladas)

Alguien me puede echar una manita?

Es un diseño que no debería ser complicado ya que parto de 4 tablas

La tabla usuarios

Código:
CREATE  TABLE IF NOT EXISTS `mydb`.`usuarios` (
  `id` INT NOT NULL COMMENT 'Clave principal que se autoincrementa' ,
  `nombre` VARCHAR(45) NOT NULL COMMENT 'nombre del usuario' ,
  `email` VARCHAR(45) NOT NULL COMMENT 'correo electrónico' ,
  `password` VARCHAR(45) NOT NULL COMMENT 'Encriptado en MD5' ,
  `avatar` TINYBLOB NULL ,
  `verificado` BOOLEAN NULL DEFAULT False COMMENT 'True o False' ,
  `claveverificado` VARCHAR(45) NULL COMMENT 'Numero aleatorio' ,
  PRIMARY KEY (`id`) )
tabla tareas

Código:
CREATE  TABLE IF NOT EXISTS `mydb`.`tareas` (
  `idtareas` INT NOT NULL ,
  `categoria` VARCHAR(45) NOT NULL ,
  `asunto` VARCHAR(45) NOT NULL ,
  `prioridad` VARCHAR(45) NOT NULL ,
  `finicio` VARCHAR(45) NOT NULL ,
  `ffinal` VARCHAR(45) NULL ,
  `progreso` VARCHAR(45) NULL ,
  `comentario` VARCHAR(45) NULL ,
  PRIMARY KEY (`idtareas`) )
tabla categorias

Código:
CREATE  TABLE IF NOT EXISTS `mydb`.`categorias` (
  `idcategorias` INT NOT NULL ,
  `nombre` VARCHAR(45) NULL ,
  PRIMARY KEY (`idcategorias`) )
Y la tabla comentarios

Código:
CREATE  TABLE IF NOT EXISTS `mydb`.`comentarios` (
  `idcomentarios` INT NOT NULL ,
  `comentarios` VARCHAR(45) NULL ,
  PRIMARY KEY (`idcomentarios`) )
Mi pregunta es como relacionarlas entre sí.
Como véis ya he definido los campos que van a tener y las claves primarias.

Y sé lo siguiente...
  1. Un usuario puede tener varias tareas y (a su vez quiero que se permita que) una tarea pueda ser de varios usuarios.
  2. Una tarea tiene 0 o mas comentarios
  3. Una tarea solo tiene una categoria.

Necesito una manita para relacionar esto.....

Muchas gracias
  #2 (permalink)  
Antiguo 05/01/2009, 15:26
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Dudas al crear mi diseño de BD

Alguna sugerencia para seguir y poder relacionar las tablas?

Gracias
  #3 (permalink)  
Antiguo 05/01/2009, 15:38
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 1 mes
Puntos: 45
Respuesta: Dudas al crear mi diseño de BD

Cita:
Un usuario puede tener varias tareas y (a su vez quiero que se permita que) una tarea pueda ser de varios usuarios.
Debes crear una tabla intermedia donde almacenes los ids de tareas y de usuarios llamada por ejemplo tarea_usuario

Cita:
Una tarea tiene 0 o mas comentarios
Lo mismo que el anterior, crea una tabla intermedia para almacenar dicha info


Sobre como crear relaciones en el manual tienes una guia muy completa http://dev.mysql.com/doc/refman/5.0/...nstraints.html

La unica salvedad es que tus tablas deben ser del tipo innoDD
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #4 (permalink)  
Antiguo 06/01/2009, 03:44
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Dudas al crear mi diseño de BD

Cita:
Iniciado por Genetix Ver Mensaje
Debes crear una tabla intermedia donde almacenes los ids de tareas y de usuarios llamada por ejemplo tarea_usuario



Lo mismo que el anterior, crea una tabla intermedia para almacenar dicha info


Sobre como crear relaciones en el manual tienes una guia muy completa http://dev.mysql.com/doc/refman/5.0/...nstraints.html

La unica salvedad es que tus tablas deben ser del tipo innoDD
Hola Genetix,

No se a que te refieres con una tabla intermedia. No soy capaz de ver la relación.

Para que se vea más claro subo una imagen con el diseño actual. He creado las claves foraneas, son las que tienen el icono en rojo y son del mismo tipo que sus primarias.



Gracias de antemano
  #5 (permalink)  
Antiguo 06/01/2009, 09:36
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 1 mes
Puntos: 45
Respuesta: Dudas al crear mi diseño de BD

Cita:
1. Un usuario puede tener varias tareas y (a su vez quiero que se permita que) una tarea pueda ser de varios usuarios.
2. Una tarea tiene 0 o mas comentarios
3. Una tarea solo tiene una categoría.
Basándome en esto, tu diseño e punto 1 no esta bien planteado.

1. Un usuario puede tener varias tareas y (a su vez quiero que se permita que) una tarea pueda ser de varios usuarios.
Estas hablando de una relación muchos a muchos y para esto hace falta una tabla intermedia

Sobre la el punto 2 y 3 esta bien planteados

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #6 (permalink)  
Antiguo 06/01/2009, 11:39
Avatar de enyalon  
Fecha de Ingreso: agosto-2008
Mensajes: 28
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Dudas al crear mi diseño de BD

Puede ser así:

usuarios (id, nombre, mail, password, avatar, verificado, claveverificado)

tareas (id, id_categorias, id_cometarios, asunto, prioridad, finicio, final, progreso)

usuarios_tareas (id_usuarios, id_tareas) esta es la tabla intermedia de la que te hablan (la que relaciona las tablas usuarios y tareas "relación muchos a muchos")
ejemplo de datos:
(1,1)
(2,1)
(1,2)
Aqui relacionamos los usuarios 1 y 2 con la tarea 1 y el usuario 1 se relaciona con las tareas 1 y 2.

categorias (id, nombre)

comentarios (id, comentarios)


Ya luego podras relacionarlas con el uso de JOIN, por ejemplo.
Para que leas sobre el la sintaxis de JOIN

http://dev.mysql.com/doc/refman/5.0/es/join.html

Espero te ayude.
Aunque sólo repito lo que dice Genetix, pero trato de responder a:
Cita:
No se a que te refieres con una tabla intermedia. No soy capaz de ver la relación.
y trate de ponerte la relación de forma más clara.

Última edición por enyalon; 06/01/2009 a las 11:45
  #7 (permalink)  
Antiguo 06/01/2009, 16:54
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Dudas al crear mi diseño de BD

Cita:
Iniciado por enyalon Ver Mensaje
Puede ser así:

usuarios (id, nombre, mail, password, avatar, verificado, claveverificado)

tareas (id, id_categorias, id_cometarios, asunto, prioridad, finicio, final, progreso)

usuarios_tareas (id_usuarios, id_tareas) esta es la tabla intermedia de la que te hablan (la que relaciona las tablas usuarios y tareas "relación muchos a muchos")
ejemplo de datos:
(1,1)
(2,1)
(1,2)
Aqui relacionamos los usuarios 1 y 2 con la tarea 1 y el usuario 1 se relaciona con las tareas 1 y 2.

categorias (id, nombre)

comentarios (id, comentarios)


Ya luego podras relacionarlas con el uso de JOIN, por ejemplo.
Para que leas sobre el la sintaxis de JOIN

http://dev.mysql.com/doc/refman/5.0/es/join.html

Espero te ayude.
Aunque sólo repito lo que dice Genetix, pero trato de responder a:

y trate de ponerte la relación de forma más clara.
Entonces
usuarios_tareas (id_usuarios, id_tareas)

id_usuarios y id_tareas con claves foraneas de sus respectivas tablas no?

Gracias
  #8 (permalink)  
Antiguo 06/01/2009, 18:45
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 1 mes
Puntos: 45
Respuesta: Dudas al crear mi diseño de BD

Cita:
id_usuarios y id_tareas con claves foraneas de sus respectivas tablas no?
correcto
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #9 (permalink)  
Antiguo 07/01/2009, 03:14
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años
Puntos: 20
Respuesta: Dudas al crear mi diseño de BD

Cita:
Iniciado por Genetix Ver Mensaje
correcto
También entiendo que debo quitar la relación que ya había entre la tabla usuarios y tareas no? (marcado en rojo en la imagen)

Este sería el diseño final de la bbdd. Veis algún campo erróneo?



Muchas gracias a todos!
  #10 (permalink)  
Antiguo 07/01/2009, 09:54
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 1 mes
Puntos: 45
Respuesta: Dudas al crear mi diseño de BD

Hola neodani
Esa relación marcado en rojo debe desaparecer ya que no tiene sentido, y las tablas se relacionan a través de la tabla usuario_tarea

Te recomendaría que le des una revisa a este documento sobre normalización http://www.mysql-hispano.org/page.php?id=16&pag=1

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #11 (permalink)  
Antiguo 08/01/2009, 23:05
Avatar de jpunk  
Fecha de Ingreso: octubre-2005
Ubicación: Bogota
Mensajes: 335
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Dudas al crear mi diseño de BD

Hola Neodani:

Hey me interesaría saber que programa usas para modelar ?


Gracias de antemano.
  #12 (permalink)  
Antiguo 09/01/2009, 09:27
 
Fecha de Ingreso: julio-2008
Mensajes: 40
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Dudas al crear mi diseño de BD

Usa left join.
  #13 (permalink)  
Antiguo 11/01/2009, 23:00
Avatar de enyalon  
Fecha de Ingreso: agosto-2008
Mensajes: 28
Antigüedad: 15 años, 7 meses
Puntos: 0
Sonrisa Respuesta: Dudas al crear mi diseño de BD

Cita:
Iniciado por jpunk Ver Mensaje
Hola Neodani:

Hey me interesaría saber que programa usas para modelar ?


Gracias de antemano.
Hola jpunk!

Me parece que usa MySQL Workbench
  #14 (permalink)  
Antiguo 12/01/2009, 00:15
Avatar de jpunk  
Fecha de Ingreso: octubre-2005
Ubicación: Bogota
Mensajes: 335
Antigüedad: 18 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Dudas al crear mi diseño de BD

Gracias enyalon por responder

le hechare un vistazo.

byeee
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 10:11.