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

Diseño de una base de datos

Estas en el tema de Diseño de una base de datos en el foro de Mysql en Foros del Web. Buenos días, estoy realizando el diseño de una parte de mi base de datos y tengo algunas dudas. Mi intención es crear una serie de ...
  #1 (permalink)  
Antiguo 15/05/2010, 04:37
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 18 años, 4 meses
Puntos: 1
Diseño de una base de datos

Buenos días,

estoy realizando el diseño de una parte de mi base de datos y tengo algunas dudas.

Mi intención es crear una serie de tablas que me permita almacenar y trabajar con varios tipos de usuarios.
Ahora mismo tengo una tabla: tipos_usuario, con únicamente dos campos:

idTipo (Clave Primaria) y tipo

Por otro lado, tengo una tabla, denominada usuarios_particular con una serie de campos característicos de usuarios de tipo: "particular" y otra tabla usuarios_empresa con campos propios y, en algunos casos, diferentes a la anterior tabla.

Necesito relacionar todos estos tipos de usuarios en una única tabla: usuarios, compuesta únicamente por una clave primaria compuesta.

El esquema sería este:

tipos_usuario
idTipo int Primary Key
tipo varchar 30

usuarios_particular
idUsuario int Primary Key
Nombre varchar 100
DNI varchar 15
sexo bool
...


usuarios_empresa
idUsuario int Primary Key
Nombre varchar 100
CIF varchar 15
actividad varchar 100
...

Aquí podría crear una tabla por cada tipo de usuario. Cada una con sus campos bien diferenciados.

Finalmente y, he aquí mi duda, necesito una tabla que me relacione cada tipo de usuario con la tabla tipos_usuario. Sería algo así:

usuarios
idUsuario int PK
idTipo int PK

Ambos campos forman la clave primaria compuesta. Pero esto no sé muy bien si sería correcto puesto que, no sé cómo relacionarlo con las anteriores 3 tablas.
Quiero decir que, si no tuviera los usuarios_paticulares y usuarios_empresa y los tuviera todos en una misma tabla, pues de esta última, relacionaría con tipos_usuario por idTipo y con el resto de usuarios por idUsuario, pero al tener una tabla de usuarios para cada modelo, ya que tienen campos diferenciados, (no es lo mismo un particular que una empresa), pues no sé cómo relacionarlo.

Y si el día de mañana añado un tercer tipo y una tabla usuarios_morosos, pues necesito poder relacionarlo también y no sé cómo se configura esto.

Viendo un ejemplo con datos sería algo así

tipos_usuario
idTipo tipo
1 particular
2 empresa


usuarios_particular
idUsuario DNI sexo
1 43522343W 1
2 33241231T 0

usuarios_empresa
idUsuario CIF actividad
1 33423456q Industria
2 33242234r hostelería


usuarios
idUsuario idTipo
1 1
2 1
1 2
2 2



¿Pero cómo lo relaciono todo esto si tengo dos o más tablas con cada tipo de usuario?
Es lo que no sé hacer.

También estoy abierto a otras posibilidades por si alguien ha utilizado antes en su base de datos usuarios de varios tipos y ha utilizado otro diseño de tablas.

Un saludo

Última edición por Tarzan; 17/05/2010 a las 00:14
  #2 (permalink)  
Antiguo 17/05/2010, 16:36
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Diseño de una base de datos

buffff me parece que estas liándola mogollón tío

lo ideal seria que hicieses una unica tabla para todos con un campo añadido que les de la propiedad de tipo asi cualquier dia puedes añadir una mas

si cada ususario tiene unicamente ciertos datos requeridos no pasa nada, tu en la tabla los tienes todos, dejas en blanco los que no interesen y exiges por medio de la aplicación unicamente los que interesan.

Y si te preocupa dejar huecos en blanco en una base de datos, que no sea eso lo que te quite el sueño, ya que será mas eficiente y muchísimo mas cómodo que tener 4 tablas relacionadas.
  #3 (permalink)  
Antiguo 19/05/2010, 04:55
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Diseño de una base de datos

Ok,

gracias Juanito.
Investigaré un poco más sobre el asunto pero la solución que propones tampoco es mala.

Un saludo.

Etiquetas: diseño
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:00.