Jump to content

Modelação de Diagrama de Classes para uma BD


te-x
 Share

Recommended Posts

Olá, tenho que criar um diagrama de classes para uma BD e gostava de saber como se deve representar um atributo que não pode nunca ser nulo. A minha ideia era uma coisa deste género, em que um teste só tem classificação se for marcado como finalizado:

testes.png

É esta a melhor alternativa para representar esta situação?

Link to comment
Share on other sites

Esse não propriamente um modelo de BD, porque não tem PK's new FK's. Onde estão?

Para todos os efeitos marcas o campo como NOT NULL.

Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Link to comment
Share on other sites

Não, isto é um modelo de classes que vai servir como base para um BD. O modelo físico (o tal com PK, AK e FK) ainda não comecei sequer. Mas o NOT NULL não resolve o problema. Como está funciona, mas não sei se será a melhor maneira que existe.

Link to comment
Share on other sites

Como não tens as PKs e FKs, não sei a que te referes. Se colocares um FK na tabela classificacao, não tens nenhum campo que possa ser nulo.

Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Link to comment
Share on other sites

Isto não é um Modelo Físico, é um diagrama de classes ainda. O meu problema é este: eu crio um teste que vai ser realizado, como é óbvio ainda não sei a classificação final pelo que o campo teria que ficar a NULL ou outro valor default, que eu não queria. Como está feito o modelo na imagem ao criar um Teste posso não ter nenhuma classificação associada e só quando o teste acabar é que lhe associaria uma classificação.

Link to comment
Share on other sites

Acabaste de responder à tua pergunta. Se o item de classificacao for apenas criado quando finalizas o teste, não precisas de colocar nenhum valor default.

Não tens nenhum campo nulo, qual é a dúvida? O teu modelo serve perfeitamente.

Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Link to comment
Share on other sites

Eu pessoalmente não sou extremista em relação aos nulos. E se fosse eu juntava tudo numa classe "Teste", já que tens uma relação de 1 para 1.

Removia o campo "finalizado" e utilizava uma função tipo isFinalizado() para verificar se o campo de "classificacao" está a null.

Também colocava umas datas para saber pelo menos quando foi efectuado o exame.

O campo "disciplina" mudava-o para "nome" e para uma classe "disciplina". Tendo a disciplina uma relação de 1 para muitos como o teste.

Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Link to comment
Share on other sites

Sim sim, eu sei que ainda falta bastantes coisas mas queria esclarecer só esta duvida. Ainda vou decidir se passo o campo para o teste, mas em príncipio devo deixar como está. Obrigado pela ajuda 👍

Link to comment
Share on other sites

A nota que colocaste no diagrama de classes não tem informação relevante para a BD.

O teu problema é que queres obrigatoriamente que cada Teste esteja associado a uma Nota, mas obviamente isso só pode ser feito depois da avaliação.

Essa situação é representada exactamente com a cardinalidade que colocaste correctamente: 1------0..1.

Indicares que a associação não é obrigatória é tudo o que é relevante no diagrama de classes. Essa situação é muito frequente nos diagramas de classes e do ponto de vista da base de dados podemos ficar por ai quanto a detalhes.

Cabe a quem faz o diagrama ter cuidado com cada associação obrigatória porque, a base de dados não permitirá que sejam introduzidos dados de cada entidade sem que exista uma associação entre elas. O motivo para "obrigar" uma associação a ser opcional às vezes até pode ser simplesmente por ser um requisito que a informação das duas entidades seja introduzida em formulários diferentes; no teu caso é a mesma coisa, há um intervalo de tempo em que não é possível criar a associação porque ainda não se conhecem as duas entidades. Mas a associação até pode ser mesmo opcional, o motivo é irrelevante. A pergunta que eu faço é:

Como é que a informação que adicionaste naquela caixa muda o desenho da base de dados? Não está tudo o que é importante na cardinalidade da associação?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.