[MYSQL] Modelagem de banco

Boa noite galera,
não seria uma duvida, e sim uma ajuda que estou precisando, estou criando um sistema de boletim’s e gostaria de sabia algumas opniões sobre como esta o banco, se existe redundancia entre outras coisas, qualquer critica, comentário ou outra coisa, sera bem vinda.
Esta em anexo a imagem do banco, desculpa se estou postando no lugar errado.

Att. Gustavo Fontolan


Cara, deu pra entender, acredito que esta bacana, bem lógico.

Relações de 1-1 geralmente são um erro de modelagem. Relações 1-1 geralmente podem ser transformadas em uma única tabela do banco.

Agora, talvez você quisesse representar ali uma relação de herança.
Bem, essa relação está incorreta. O que acontece se você tiver um aluno que também é um professor? Ele será filho de Aluno ou de Professor? E se, além das duas coisas, ele também for um Pai?

O ideal é modelar através de composição. Em sua escola, você poderá ter usuários do seu sistema educacional. Esses usuários podem ter diferentes papéis: professor, aluno, colaborador, pai, visitante, etc.
Portanto, cada Usuario possui uma lista de papéis, o que representa uma relação de composição.

No banco, isso fica modelado através da tabela Usuario (no lugar de Pessoa), da tabela Papel e da tabela UsuarioPapel (uma vez que a relação é de N-N).

xcod

O que posso falar é que a Normalização ou seja a estruturação das tabelas estão totalmente fora do padrão.
Modela seu banco com o modelo ER - Entidade Relacionamento.

Assim, voce pode ter uma Entidade Escola que relaciona com Entidade Alunos, Entidade Professores, etc.

Qualquer dúvida http://javaaberto.blogspot.com.br/2012/09/normalizacao-de-banco-de-dados.html

Bom dia a todos,
obrigado pela respostas e pela ajuda, remodelei acredito eu, segundo as Formas de Normalização, deem uma olhada para ver como ficou e digam se estou fazendo certo, e uma outra duvida, por padrão, o MYSQL passa o id_pessoa para outras tabelas, por exemplo no relacionamento, Pessoa -> Aluno -> Certidão, seria normal a tabela certidão estar recebendo o id_pessoa? ou o correto seria ela receber somente o id_aluno? Mais uma duvida, na tabela Aluno e Professor que são especialização de Pessoa, essas tabelas deveriam conter uma chave primeira alem da gerada com o relacionamento entre Pessoa?
Segue em anexo a imagem como o banco esta agora.

Obrigado pela atenção e a ajuda.


Deixa eu fazer um pergunta, qual o motivo da criação da tabela Pessoa?

Pense bem, acredito eu que você esteja criando a tabela Pessoas para não haver campos repetidos em outra tabela certo?
Se assim for, você está fazendo isso de modo errado. Você tem que se basear por categoria, exemplo.
Você pode criar uma tabela que contém “Outras informações ou informações Adicionais”

Olha um item que acabei enxergando na sua tabela, a tabela pessoas e a tabela alunos contém campos repetidos, por exemplo o CPF.
Nessa situação segundo a primeira regra normal, você deve criar uma tabela que vai guardar esses dados.
(Primeira regra normal, todos os campos que podem conter mais de uma informação, voce cria uma nova tabela.
CPF no seu caso na tabela alunos tem dois campos iguais.)

Ficaria deste modo:

TB_OUTRAS_INFORMAÇÕES
CPF (CHAVE PRIMARIA)
ID_PESSOA (CHAVE ESTRANGEIRA)

*essa chave estrangeira pode ser relacionada com qualquer Tabela que voce criar.
Ou seja, com a tabela pessoa, tabela alunos, professores, funcionarios, etc… tanto vai servir para qualquer tabela
nova que voce criar que vai precisar ter um cpf.

*a chave primaria vc pode criar um novo campo como ID_CPF, de qualquer forma vai funcionar sem duplicação…

Deste jeito, voce evita duplicação de campos;