RELACIONAMENTO

GREGO 03/10/2006 11:53:53
#175249
Existe a Tabela para o cadastro de Funcionários:

id - bigint(12) PRIMARI KEY
nome - char(50) default ''
carcha - char(12) default ''

Existe tbm a tabela para o cadastro de equipamentos:

id - int(2) PRIMARI KEY
nome - char(50) default ''

tá é o seguinte, preciso armazena de o funcionario tem acesso ou não tem acesso ao equipamento
estava fazendo o seguinte:

toda vez que fosse add um novo equipamento
era criado um novo campo na tabela funcionarios
dizendo se aquele determinado funci tem acesso
no equipamento, e quando eu excluo o equip. ele
apaga o campo da tabela funcionario.

existe uma forma de fazer este relacionamento mais fácil?

uso mysql 5.0 e ADO
USUARIO.EXCLUIDOS 03/10/2006 12:02:28
#175257
Amigo vc nao pode criar uma tabela relacional ?

Onde conste Id do equipamento e ID do funcionario que possui acessso.

Assim ficaria mais rapido e facil nao ?
USUARIO.EXCLUIDOS 03/10/2006 12:10:31
#175261
Crie uma tabela "PERMISSAO"

CREATE TABLE PERMISSAO (
idFunc bigint(12) NOT NULL,
idEquip int(2) NOT NULL,
PRIMARY KEY(idFunc,idEquip));

A cada insersão de Funcionário, tu relaciona com os equipamentos que ele pode ter acesso, preenchendo essa tabela "PERMISSAO".

Att

Charles

GREGO 03/10/2006 13:01:16
#175276
isso funciona sim... e é bem mais rápido, mas na hora do relatório tenho que exibi assim

funcionario equipamento1 equipamento2 equipamento3
fulano de tal s n s
USUARIO.EXCLUIDOS 03/10/2006 13:44:56
#175283
Na hora de montar o relatorio vc tera que realizar um select pegando todos os equipamentos quando ID for igual a X depois salve os resultados em variaveis e\ou exiba-as diretamente.
USUARIO.EXCLUIDOS 03/10/2006 15:02:55
#175306
No caso do relatório, não vejo dificuldade em fazer do jeito q tu tá falando. O layout do relatório tanto faz, a sua query na tabela "PERMISSAO", trará para vc apenas os registro na qual o funcionário tem permissão. Vc teria q fazer um UNION com os registro q NÃO atende tem permissão.

Ou se tu preferir, tu muda a tabela para:

CREATE TABLE PERMISSAO (
idFunc bigint(12) NOT NULL,
idEquip int(2) NOT NULL,
permitido_uso bit not null,
PRIMARY KEY(idFunc,idEquip));

E faz uma trigger para que a cada inclusão de funcionário ele preencha essa tabela com o campo "permitido_uso" = 0 (Não por exemplo) .

E a partir daí sua interface q faria a exibição dos equipamentos para que vc marque qual está permitido. Resumindo, a query ficaria mais fácil de fazer, porém tu teria q fazer uma trigger na inclusão de um novo funcionário e equipamento.

Att

Charles


GREGO 03/10/2006 21:44:31
#175414
essa forma é a que ja é feito... tava pensando se teria uma forma de criar um relacionamento e na hora do relatorio eu desse um select so


Tópico encerrado , respostas não são mais permitidas