1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Duvida sobre como estruturar algumas tabelas

Boa noite pessoal, estou com uma duvida sobre como montar uma estrutura de banco de dadospara um determinado trabalho, acredito que talvez alguem possa me ajudar aqui.

O que acontece é o seguinte: eu tenho uma tabela PERSONAGEM, uma tabela TALENTO e umatabela HABILIDADE.

Na minha lógica de negócio, um PERSONAGEM pode ter N TALENTOS. Até aí tudo bem.Só que existem alguns TALENTOS que têm pré-requisitos. Esses pré-requisitos podem seroutros TALENTOS ou então HABILIDADES. E o grande problema aqui é que eu não sei comoestruturar tabelas para guardar essas dependências. Na minha cabeça eu teria que fazeruma tabela relacional entre TALENTO e TALENTO, mas isso é impossível (certo?).

Além disso, essa tabela relacional teria que guardar não só a FK da tabela TALENTO,mas também poderia ser a FK da tabela HABILIDADE, tendo em vista que habilidadestambém podem ser pré-requisito.

Pensei em fazer uma tabela mais ou menos nesse estilo:

Tabela: REQUISITO

||| PK idRequisito - Identificador da tabela||| FK idTalento - Chave Estrangeira do Talento que possui requisitos||| FK idTalentoReq - Chave Estrangeira do Talento que é pré-requisito||| FK idHabilidadeReq - Chave Estrangeira da Habilidade que é pré-requisito||| tipoRequisito - Uma string simplesmente para dizer qual o tipo de requisito||| foi cadastrado nessa entrada (Talento, Habilidade ou algum outro)

O problema dessa tabela é que estou achando-a muito esquisita, não me agrada aestrutura dela. É uma tabela que possui 2 FKs que nunca serão utilizadas nomesmo registro (idTalentoReq e idHabilidadeReq), e ainda podem ter registrosque não utilizem nenhuma das 2 FKs.

Resumindo, alguem sabe me dizer se isso que pensei seria funcional? Ou alguempoderia me dizer uma forma melhor de trabalhar isso?

Agradeço desde já.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags sql estrutura-de-dados ou faça a sua própria pergunta.