Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/03/2014, 01:46
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Definir tablas con relaciones many-to-many

El problema es este

Cita:
2 roles distintos en el mismo departamento
o

2 veces el mismo rol en un departamento?


Usuarios
idUsu
....

Departementos
idDep
....

Perfiles
idPerfil

RelUsuDepPerf
idRel
idUsu
idDep
idPerfil

Ahora debes definir un indice único compuesto de los tres identificadores (idUsu,idDep,idPerfil), idRel será la PK. Podrias no poner esa PK simple y definir una PK compuesta de los tres campos (idUsu,idDep,idPerfil), con lo que ya tendrías el indice unico. Yo prefiero la PK simple, pero el modelo relacional puro diria que es incorrecta.

https://dev.mysql.com/doc/refman/5.0...ate-index.html


Código MySQL:
Ver original
  1. CREATE UNIQUE INDEX index_usu_dep_rol ON RelUsuDepPerf (idUsu,idDep,idPerfil);

Este indice evita que alguien tenga el mismo rol varias veces en el mismo departamento pero puede tener mas de un rol en el mismo departameto, si solo se puede tener un rol en un departamento quita el tercer campo

Código MySQL:
Ver original
  1. CREATE UNIQUE INDEX index_usu_dep ON RelUsuDepPerf (idUsu,idDep);
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 31/03/2014 a las 01:59