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

Contactos en base de datos

Estas en el tema de Contactos en base de datos en el foro de Bases de Datos General en Foros del Web. Hola, necesito su consejo. Quiero implementar en mi web, una agenda, donde cada persona pueda agregar sus contactos. Para hacerlo simple, vamos a tomar como ...
  #1 (permalink)  
Antiguo 14/08/2005, 17:45
 
Fecha de Ingreso: marzo-2005
Mensajes: 171
Antigüedad: 19 años, 8 meses
Puntos: 0
Contactos en base de datos

Hola, necesito su consejo. Quiero implementar en mi web, una agenda, donde cada persona pueda agregar sus contactos. Para hacerlo simple, vamos a tomar como ejemplo que la persona agrega Nombre, telefono y direccion.
Tendria que crear una tabla para cada usuario donde las columnas sean esos datos???
Estuve probando de hacerlo todo en una tabla, donde en una fila se guardan todos los contactos (un maximo de 20) de cada usuario. La tabla tendria el siguiente formato:

Código PHP:
create TABLE contactos(
id smallint(5unsigned not null auto_increment,
nick varchar(20not null,
c1 varchar(20not null,
n1 int(20unsigned not null,
d1 varchar(20not null,
c2 varchar(20not null,
n2 int(20unsigned not null,
d2 varchar(20not null,
c3 varchar(20not null,
n3 int(20unsigned not null,
d3 varchar(20not null,

donde c* seria el nombre, n* seria el numero y d* seria la direccion.
Pero el codigo que tengo que hacer para luego eliminar los contactos o modificarlos, es muy engorroso.
Que me recomiendan??? una tabla para cada usuario donde se guarden sus contactos, o una sola tabla para todos donde cada usuario se guardaria en una fila???
Acepto sugerencias.
  #2 (permalink)  
Antiguo 14/08/2005, 21:10
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 11 meses
Puntos: 19
Hola
no tiene mucho sentido crear una tabla por cada usuario .. seri un lio ...
Mira .. lo que te recomiendo es que hagas lo siguiente..

tabla usuarios
id tipo int - auto_incremente
Nombre tipo char(200)
usuario tipo char(100)
mail tipo char(200)
password tipo char(200)

tabla contactos
id tipo int - auto_incremente (id y usr son clave compuesta)
usr tipo int
Nombre tipo char(200)
telefono tipo int
direccion tipo char(200)

sorry por no ponerlo en sql...

si no lo entendes la cosa es asi cada contacto, tiene un unico usuario, no puede pertenecer a vario... y un usuario puede tener 0 o + contactos... es simple, a la hora de editar, no te hagas mucho lio ... trata de ser lo mas ordenado posible .. saludos...
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #3 (permalink)  
Antiguo 15/08/2005, 02:49
 
Fecha de Ingreso: marzo-2005
Mensajes: 171
Antigüedad: 19 años, 8 meses
Puntos: 0
Podrias explicarmelo mejor, es que soy muy novato en php, empece hace poco. No entiendo que es eso de clave compuesta. Tampoco entiendo como haces para meter muchos contactos para un mismo usuario en esa tabla...
Muchas gracias por tu respuesta.
Francisco.
  #4 (permalink)  
Antiguo 15/08/2005, 04:07
 
Fecha de Ingreso: noviembre-2003
Ubicación: Torrelodones
Mensajes: 134
Antigüedad: 21 años
Puntos: 0
Hola,

turco_7 te ha puesto una buena solucion. La mejor forma de hacer 2 tablas como ahi t muestra. Lo de clave compuesta quiere decir que esa clave es la principal de la tabla usuarios pero la cual tambien necesitas en la tabla contactos para enlazar cada ID de usuario con cada contacto que este tenga. Por ejemplo:

Tabla usuario
ID:1
Nombre:JUAN
...

Tabla contacto
ID:1
USR:1
NOMBRE:PEPE
....
--------------
ID:1
USR:2
NOMBRE:FRAN

Si t das cuenta en la tabla contacto los 2 contactos que hay en la BBDD tiene como ID=1 lo que quiere decir que pertenecen a USUARIO JUAN puesto que es el que tiene ID=1 en la tabla de usuarios. El USR es el identificador unico de cada contacto

No se si me he expresado bien, espero que lo hayas entendido
Un saludo
__________________
Conoce gente nueva, haz amigos, aplicaciones para moviles, juegos online,... Y todo gratis!!! :si: www.cuelate.com
  #5 (permalink)  
Antiguo 15/08/2005, 16:36
 
Fecha de Ingreso: marzo-2005
Mensajes: 171
Antigüedad: 19 años, 8 meses
Puntos: 0
Ahhhhh, creo que lo entendi. Pero tengo una ultima pregunta. No es mucho despiole que los contactos queden todos desparramados por la base de datos. Suponiendo, el usuario cacho agrega un contacto, luego otros usuarios agregan 1000 contactos, cuando cacho agregue otro contacto, va a estar 1000 posiciones mas abajo. Esto afecta el rendimiento en alguna forma??
cuando hago un select segun id, los contactos me los ordena por el orden en que esten en la tabla??
Creo que es una buena solucion, no lo habia pensado de esa forma...
Voy a buscar algun tutorial que explique bien lo de las claves compuestas asi me interiorizo en el tema. Muchas gracias.
  #6 (permalink)  
Antiguo 15/08/2005, 18:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por Bkwxs
Podrias explicarmelo mejor, es que soy muy novato en php, empece hace poco. No entiendo que es eso de clave compuesta. Tampoco entiendo como haces para meter muchos contactos para un mismo usuario en esa tabla...
Muchas gracias por tu respuesta.
Francisco.
El tema más bien es de "Base de datos" (al cual procedí a mover tu mensaje).

Te recomiendo leer sobre "normailzación" y diseño de base de datos en los manuales que encontraras en:

www.mysql-hispano.com

Ahí tienes de todo lo que ten menciono, te ayudará a diseñar mejor tus "base de datos".

Un saludo,
  #7 (permalink)  
Antiguo 15/08/2005, 19:39
 
Fecha de Ingreso: marzo-2005
Mensajes: 171
Antigüedad: 19 años, 8 meses
Puntos: 0
Muchas gracias. Recien estuve viendo un poco como seria el codigo en php con ese tipo de tabla que dijo el turco, y es 100 veces mas simple que el que estaba armando yo.
Cuando termine de armar la pagina, los invito a que se registren.
Es www.ssms.com.ar y sirve para mandar mensajes de texto a celulares. Ya esta online, pero ahora esta re simple, por eso le quiero agregar registro y contactos.
  #8 (permalink)  
Antiguo 15/08/2005, 19:48
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 11 meses
Puntos: 19
jajajajaja ... esa es mi idea con mi pagina .. www.mrad.com.ar ... lo estoy haciendo en casa, y por falta de tiempo, no la termino, por una u otra razon ... me alegro de que te sea util... cuando la tenga lista te cuento .. saludos y que andes bien ..

Lo que vos queres hacer es algo como esto ... ?

http://www.canalmensajero.com.ar byebye
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #9 (permalink)  
Antiguo 15/08/2005, 20:14
 
Fecha de Ingreso: marzo-2005
Mensajes: 171
Antigüedad: 19 años, 8 meses
Puntos: 0
Exactamente eso es lo que quiero hacer.
Obvio que no va a quedar tan buena como la de canalmensajero, pero la mia va a tener (ya tiene en realidad) soporte para varios paises.
Cambiando de tema, el diseño de tu pagina, lo hiciste vos??? esta buenisimo...
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 14:38.