Saludos comunidad, hoy vengo con una pequeña duda que espero me colaboren estoy realizando una base de datos relacional, el problema surge en que tengo 4 tablas que son :
create table funcionariocargo(
funcionariocargo_id int not null,
funcionario_id int not null,
cargo_id int not null,
numero_item int(2) not null,
obsevaciones varchar(70),
perfil_id int not null,
primary key(funcionariocargo_id),
foreign key(funcionario_id)references funcionario(funcionario_id),
foreign key(cargo_id)references cargo(cargo_id)
foreign key(perfil_id)references perfil(perfil_id)
);
-------
create table perfil(
perfil_id int not null,
funcionariocargo_id int not null,
nombre_perfil varchar(35) not null,
descripcion varchar(50),
primary key(perfil_id),
);
----------
create table rol(
rol_id int not null,
perfil_id int not null,
nombre_rol varchar(35) not null,
descripcion varchar(35),
primary key(rol_id),
);
-----
CREATE detalleperfilrol (
`perfil_id` int(11) NOT NULL,
`rol_id` int(11) NOT NULL,
KEY `rol_id` (`rol_id`),
KEY `perfil_id` (`perfil_id`)
) ;
la cuestion es que como pueden observar un funcionariocargo tiene un perfil y este perfil contiene mucho roles y viceseversa, como no puede repetir el PK de perfil para que se asocie con la tabla rol, como por ejem. el perfil base puede contener al rol x,y,z , y el perfil base1 puede contener al rol x,y.
Entonces cree otra tabla detalleperfilrol que contiene los Pk de ambos, quiero obtener criticas sobre este planteamiento, gracias de antemano