Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/05/2010, 04:37
Tarzan
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 18 años, 5 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