Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Viper33

relacionamento

Recommended Posts

Gostaria de esclarecer algumas dúvidas na questão de relacionamento entre as entidades Funcionário/Cargo, Funcionário/Salário.

Suponhamos que uma empresa possua os cargos com os devidos salários para cada cargo. E que o funcionário tenha salário atual e salário inicial e possa assumir vários cargos na empresa, mas não ao mesmo tempo.

  1. O salário ficaria na tabela funcionário ou haveria um relacionamento N:M entre a tabela cargo e uma tabela salário?
  2. Como faria o relacionamento entre salário e funcionário já que o mesmo pode desempenhar vários cargos na empresa?
  3. Entre as tabelas cargo e funcionário, o relacionamento seria N:M, já que um funcionário pode mudar de cargo dentro da empresa e no cargo de analista, por exemplo, posso ter vários funcionários? E essa tabela N:M guardaria a data de demissão?
  4. Quais atributos colocaria nas tabelas N:M?

Até agora, estou fazendo assim, mas com muita dúvida:

 

Create table tb_funcionario (
id Int NOT NULL AUTO_INCREMENT COMMENT 'Id do funcionário',
nm_funcionario Varchar(50) NOT NULL COMMENT 'Nome do funcionario',
dt_adm Date NOT NULL COMMENT 'Data de Admissao',
dt_dem Date COMMENT 'Data de demissão',
status Int NOT NULL COMMENT 'Status de atividade do funcionário',
UNIQUE (id),
Index AI_id (id),
Primary Key (id)) ENGINE = MyISAM;
Create table tb_cargo (
id_cargo Int NOT NULL AUTO_INCREMENT COMMENT 'Id do cargo',
cargo Varchar(40) NOT NULL COMMENT 'Cargo do funcionario',
salario Float NOT NULL COMMENT 'salario referente ao cargo',
UNIQUE (id_cargo),
UNIQUE (cargo),
Index AI_id_cargo (id_cargo),
Primary Key (id_cargo)) ENGINE = MyISAM;
Create table tb_func_cargo (
id Int NOT NULL,
id_cargo Int NOT NULL,
Primary Key (id,id_cargo)) ENGINE = MyISAM;
Create table tb_salario (
id Int NOT NULL AUTO_INCREMENT COMMENT 'Id do salario',
salario_base Float NOT NULL COMMENT 'Salario base',
salario_teto Float NOT NULL COMMENT 'Salario teto',
UNIQUE (id),
Index AI_id (id),
Primary Key (id)) ENGINE = MyISAM;
Create table tb_cargo_salario (
id_cargo Int NOT NULL,
id Int NOT NULL,
Primary Key (id_cargo,id)) ENGINE = MyISAM;
Alter table tb_func_cargo add Foreign Key (id) references tb_funcionario (id) on delete restrict on update restrict;
Alter table tb_func_cargo add Foreign Key (id_cargo) references tb_cargo (id_cargo) on delete restrict on update restrict;
Alter table tb_cargo_salario add Foreign Key (id_cargo) references tb_cargo (id_cargo) on delete restrict on update restrict;
Alter table tb_cargo_salario add Foreign Key (id) references tb_salario (id) on delete restrict on update restrict;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.