SQL - Relacionamento entre tabelas

Olá a todos estou literalmente queimando os miolos aqui, sou iniciante em SQL estou desenvolvendo um banco de dados com a seguinte estrutura:
Funcionário > Cargo > Função > Treinamentos
Todo funcionário cadastrado tem apenas 1 cargo, mais esse cargo pode desenvolver diversas funções e cada uma dessas funções tem que receber um treinamento especifico.

Ex:
Funcionário: Robison
Cargo: Analista de Sistema
Função - 1: Administrador de Redes.
Treinamento - 1: Redes
Função - 2: Coordenador
Treinamento - 1: Coordenação
Função ? 3: Help Desk
Treinamento - 1: Suporte

Detalhe não necessariamente todos os Analistas de Sistemas terão as mesmas Funções.
Segue abaixo o diagrama que desenvolvi mais como já havia dito sou iniciante, não sei se é a melhor solução(Nem sei se é uma solução). Quem puder me ajudar agradeço.
http://img218.imageshack.us/img218/5412/desenho1.jpg
Abraço

Funcionário tem várias funções, então é melhor você criar uma tabela que relacione o código do funcionário com o código da função:

Se uma função tem um único treinamento, função deve ter código do treinamento.
Se um treinamento é de apenas uma função, treinamento deve ter o código da função.
Se um treinamento é de uma função e uma função é de um treinamento, você tem que criar uma PK que seja (codFuncao,codTreinamento).

Deve ter mais alguma coisa que eu deixei passar, mas assim rápido só foi isso que vi. Espero q ajude…XD

Olá luciano@@, obrigado pela ajuda.

O maior problema que estou encontarndo é relacionar as 3 funções da tabela funcionário com a ID tabela de função.

Como no diagrama postado fiz o seguinte:
Na tabela funcionário criei 3 campos com atributos únicos: Funcao1, Funcao2, Funcao3
Cada um desses campos abre um relacionamento, (3 relacionamentos ao todo) com a IDfuncao na tabela Funcao.

Não sei se isso é o correto pois eu mesmo nunca vi algo do gênero. :shock:

Abraço

Oi brother…
Estou estudando o mesmo (mesma dificuldade) que vc… rs… Se eu achar algo te dou um toque…

abs,
:smiley:

AS

Cara pelo que estou vendo acho que a melhor solução é esse diagrama que montei mesmo.

Percebi algo que seria interessante constar nesse banco de dados também, caso o funcionário mude de cargo ou função seria legal ter um controle com a data e motivo da modificação…

kkkkkkkkk nossa vou ficar louco com esse banco de dados :roll: . Estou tentando montar o mais próximo da realidade possível.

Abraço

Estou a Fazer um projecto de Base de Dados e preciso da vossa ajuda na elaboração do modelo conceptual

Cada Aquário vai estar registado com informações quanto á sua localização no oceanario(8 pontos cardeais), nome, a capaciade em litros, e uma percentagem de adequação a cada um dos habitats previstos para o Oceanário. Cada um destes habitats é registado com um nome e um conjunhto de caracteristicas considerados ideais: o iluminamento(em lx), a salinidade(de 0 a 30%o = gramas de sal/litros de água), o pH(de 3 a 10), a dureza em ppm (0 a 500 ppm = partes por milhão de CaCO^3), oxigenação(%) e a temperatura (de 1 a 50º Celsius ) da água.

Não consigo fazer o modelo conceptual destes dados. Por favor Preciso URGENTEMENTE desta resolução visto que ja fiz outra parte e me falta fazer esta parte
o dado pede:
a) Obtenha o diagrama E/A que o modelo
b) COntrua o esuquema relacional do Modelo Conceptual
c) Defina o script SQL-DDL
me ajude por favor

robison.Aleixo

Isso é meio complicado, pq tudo depende do tipo de relacionamento.

Se funcionario tem apenas uma função, o funcionário deve ter o código da função.
Se o funcionário tem várias funções, a função deve ter o código do funcionário.
Se o funcionário tem varias funções e outros funcionários podem ter as mesmas funções, então você deve criar uma nova tabela funcionárioXfunção que tenha código do funcionário e código da função.

explique como é o relacionamento para que eu possa te ajudar melhor.

passwordvc

Seria interessante que você cria-se outro tópico com sua duvida para não confundir esse. de qualquer forma vou tentar ajudar

luciano@@
Cara muito obrigado mesmo pela ajuda.

Pois bem de acordo com sua explicação a opção que se enquadra no que pretendo fazer é:

"Se o funcionário tem varias funções e outros funcionários podem ter as mesmas funções, então você deve criar uma nova tabela funcionárioXfunção que tenha código do funcionário e código da função. "

Fiz um diagrama da mesma, segue ele abaixo:
http://img696.imageshack.us/img696/2584/semttuloyjf.jpg

De acordo com a minha pesquisa seria um relacionamento N:N. Realmente fica algo muito mais agradável desse jeito. Só que como eu faria para ter um controle de quando ocorresse alguma modificação nesses dados,
Ex: Fulano mudou de função/cargo Y para X na data: 01/01/2010

O funcionário pode ter N funções. Estas funções não estão ligadas ao cargo então dessa forma para ter um controle das funções do funcionário, é bom você ter uma data inicio e data fim na tabela funcionário função. quando o funcionário ganha uma nova função esta função é inserida na tabela funcionário função com a data inicio. Quando ele sai da função deve ser colocada a data fim. Dessa forma essa tabela mantém um histórico. As funções do funcionário são somente as que tem a data fim nula.

Quando ao controle de funcionário X cargo pode seguir o mesmo modelo.

Cara muito obrigado, acho que entendi finalmente o conceito de relacionamento de tabelas.
Segue o meu Diagrama atual.

http://img215.imageshack.us/i/diagramabancodedados.png/

Abraço

Está legal mais tem umas coisas que eu não consegui entender porque você fez.

Ex: Funcionário_treinamentoFuncao

Se funcionario se relaciona com funcionarioFuncao, que se relaciona com funcao, que se relaciona com TreinamentoFuncao, que se relaciona com trienamento , logo a partir de funcionário você consegue chegar nos trienamentos da função dele sem precisar criar a tabela Funcionário_treinamentoFuncao

Na minha visão ela se torna desnecessária, se existe outro motivo para você manter essa tabela ai tudo bem.

O resto ta legal !!!

Verdade cara além de diminuir uma tabela fica muito mais fácil o entendimento.

Às vezes dá um “nó no cérebro e sai essas coisas” :smiley:

Abraço