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

Necesito opiniones sobre esta estructura de BD

Estas en el tema de Necesito opiniones sobre esta estructura de BD en el foro de Bases de Datos General en Foros del Web. Recientemente retomé un proyecto de bases de datos (usando PHP y Access) que unos compañeros tenían. Se trata de una BD que almacena información de ...
  #1 (permalink)  
Antiguo 17/05/2004, 17:11
 
Fecha de Ingreso: mayo-2004
Mensajes: 24
Antigüedad: 20 años
Puntos: 0
Necesito opiniones sobre esta estructura de BD

Recientemente retomé un proyecto de bases de datos (usando PHP y Access) que unos compañeros tenían.

Se trata de una BD que almacena información de empresas y sus clientes. Las tablas están declaradas así:



Tabla: Empresas
Campos: idEmpresa, [datos varios]

Tabla: Clientes
Campos: idCliente, [datos varios]

Tabla: EmpresaCliente
Campos: idEmpresa, idCliente


La tabla EmpresaCliente está relacionada con las otras dos tablas en los campos que allí se nombran.

Yo no entiendo la necesidad de crear una 3ra tabla (la EmpresaCliente), pues consideraría que simplemente con agregar un campo llamado 'idEmpresa' a cada registro de la tabla Clientes, puedo obtener la información de la empresa con la que cada cliente está trabajando.

Mi propuesta sería dejar las tablas así:


Tabla: Empresas
Campos: idEmpresa (autonumerico), [datos varios]

Tabla: Clientes
Campos: idCliente (autonumerico), idEmpresa , [datos varios]


Esto me facilita que cuando inserto un nuevo cliente, no tengo que actualizar 2 tablas, además de que primero tendría que obtener el nvo. valor idCliente (pues es autonumérico), y ya conociéndolo, actualizar la tabla EmpresaCliente.

Cabe mencionar que NO necesito saber que empresas tiene cada cliente, pero si necesito saber que clientes tiene cada empresa.

Tomando estas consideraciones, quisiera que me dieran su opinión sobre si el formato de 3 tablas tiene ventajas, de lo contrario, optaría por el diseño de 2, pues es más fácil hacer los queries y actualizar 1 tabla en vez de 2.

Gracias.
  #2 (permalink)  
Antiguo 17/05/2004, 17:22
Avatar de Avelar  
Fecha de Ingreso: noviembre-2002
Ubicación: Ensenada, Baja California, México
Mensajes: 673
Antigüedad: 21 años, 5 meses
Puntos: 1
Depende de si es una relación uno a varios. Generalmente la "tercer tabla" se utiliza para almacenar detalles y no tener qué repetir registros con la misma información y que sólo sea un campo el que cambie. Si crees que no es tu caso es posible que la tercer tabla si esté de más, pero si se van a estar repitiendo registros cambiando sólo un campo es mejor utilizar la tabla del detalle.
__________________
Ariel Avelar
  #3 (permalink)  
Antiguo 18/05/2004, 05:43
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola,
te cuento la diferencia entre implementar 2 o 3 tablas.
Si implementas 2 tablas (tal y como cuentas tu en tu post), estas indicando que una empresa puede tener muchos clientes pero un cliente solo puede estar relacionado con una empresa (que supongo que no es lo normal), seria una relacion uno a varios, lo normal es que una empresa tenga varios clientes y un cliente pueda estar relacionado con varias empresas, no? En este caso, seraia una realacion varios a varios, por lo que deberias crear 3 tablas, ya que en la tercera tabla es donde tendrias las relaciones entre los clientes y las empresas (la clave primaria seria los 2 campos -> idempresa e idcliente).
Espero que te haya quedado algo mas claro, todo depende del significado que tu quieras darle...
un saludo.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #4 (permalink)  
Antiguo 18/05/2004, 05:56
 
Fecha de Ingreso: mayo-2004
Mensajes: 24
Antigüedad: 20 años
Puntos: 0
Bueno, lo que pasa es que dije "Empresas y clientes" para no entrar a detalle, pero realmente se trata de Empresas y Anuncios

Una misma empresa puede tener cientos de anuncios, pero los anuncios solamente pueden tener una empresa (que fue la que los publicó), y todos los anuncios son distintos entre si (dos empresas distintas no pueden publicar el mismo anuncio).

Siendo así, creo que la relación es uno a varios, ¿no? Y de ser así, la tercera tabla sale sobrando...

Corríjanme si me equivoco. Todo lo que se de PHP, HTML o SQL lo sé por práctica, nunca he estudiado teoría detrás de BD ni nada por el estilo, así que confío más en la opinión de ustedes que saben más q yo.

Saludos.
  #5 (permalink)  
Antiguo 19/05/2004, 01:10
 
Fecha de Ingreso: mayo-2004
Mensajes: 4
Antigüedad: 20 años
Puntos: 0
Yo creo que según como lo cuentas, siendo la relacion 1-N, está muy claro, es lo que tu dices.

Te sobra la tercera tabla, otra cosa sería si hay una relación N-N,
así que yo te diría que dejes las dos tablas y pongas idempresa en la tabla anuncios, que así es más sencillo.

Si no quieres que en las consultas aparezca ese campo idempresa ya sabes que solo necesitas ocultarlo, o sea que ningún problema.

saludillos y espero que te hayamos aclarado algo.
  #6 (permalink)  
Antiguo 19/05/2004, 01:34
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola otra vez,

ahora esta todo mas claro, efectivamente es el caso de 1 a varios.
Con dos tablas tienes suficiente, y ademas añades la clave ajena (foreign key) idempresa en la tabla anuncios.

un saludo.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
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 21:23.