Ir para conteúdo

POWERED BY:

Arquivado

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

WallCarlos

PL/SQL Massa de dados

Recommended Posts

Bom dia a todos,

 

Estou com o seguinte problema para resolver.

Em meu modelo de dados eu tinha 4 tabelas: T_PROGRAMAS , T_USUARIOS , T_SISTEMAS e T_PROG_USU.

Onde a T_PROG_USU, possui apenas dois campos que são o IDPROG e IDUSU.

Porém eu já tinha uma tabela de sistemas T_SISTEMAS cujo usuário tem acesso que não fazia parte deste relacionamento e hoje irá fazer, pois os acessos a um determinado programa será dado por sistema para os usuários.

Resumindo: A tabela de relacionamento T_PROG_USU terá os seguintes campos: IDPROG , IDUSU e IDSIST. Isso já foi feito, e minha dúvida é a seguinte:

 

Preciso de um script em PL/SQL que mantenha a integridade dos dados atuais, ou seja, os relacionamentos entre usuário e programas devem ser mantidos como já funcionam, porém para todos os sistemas cadastrados para cada usuário.

 

Da forma como está abaixo acho q fica mais fácil de entender.

Alguém poderia dar uma ajuda?

 

T_USUARIO

ID   | NOME 
______________
1    |  pedro
2    |  joao
3    |  marcos

 

T_PROGRAMAS

ID   |  NOME
_______________
4    |  SENÇASÃO
5    |  MATRACA
6    |  PINDAMA

 

 

T_SISTEMAS

ID   |  NOME
_______________
7    |  PGP
8    |  ABC
9    |  DAO

 

T_USU_SIST

ID_USU   |  ID_SIST
_________________
1        |  7
2        |  8
3        |  9
1        |  8
3        |  7
1        |  9

 

 

T_PROG_USU (T_PROG_USU_SIST)

ID_USU   |  ID_PROG  |  ID_SIST
______________________________
1        | 4        |  null
2        | 4        |  null
3        | 4        |  null
1        | 5        |  null
3        | 5        |  null
2        | 5        |  null
3        | 6        |  null
1        | 6        |  null

 

 

Caso não tenha ficado claro eu posso tentar explicar de outra forma.

Obrigado desde já pela ajuda!

 

Wallace Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma FK pode ser criada em uma tabela já existente.

Basta dar um Alter Table

Veja exemplo abaixo.

 

ALTER TABLE employees

ADD ( CONSTRAINT emp_emp_id_pk

PRIMARY KEY (employee_id)

, CONSTRAINT emp_dept_fk

FOREIGN KEY (department_id)

REFERENCES departments

, CONSTRAINT emp_job_fk

FOREIGN KEY (job_id)

REFERENCES jobs (job_id)

, CONSTRAINT emp_manager_fk

FOREIGN KEY (manager_id)

REFERENCES employees

) ;

 

Fonte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta,

 

Acho que não entendeu o que eu quero, não se trata de mudar a estrutura.. e sim manter a integridade dos dados. Preciso manter os relacionamentos que estão na tabela T_PROG_USU por sistema com a criação do novo campo que está null.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi , mas me parece um caso em que a violação da 4ª Forma Normal, talvez você precise rever este modelo.

 

Senão como fazer este vínculo tripo Usuário/Programa e Sistema, ou Sistema depende de Programa vice-versa ?

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.