Viper33 1 Denunciar post Postado Abril 4, 2014 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. O salário ficaria na tabela funcionário ou haveria um relacionamento N:M entre a tabela cargo e uma tabela salário? Como faria o relacionamento entre salário e funcionário já que o mesmo pode desempenhar vários cargos na empresa? 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? 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
Motta 645 Denunciar post Postado Abril 4, 2014 http://pt.wikipedia.org/wiki/Normaliza%C3%A7%C3%A3o_de_dados#Quarta_Forma_Normal Compartilhar este post Link para o post Compartilhar em outros sites