Estava fazendo a modelagem de um projeto onde precisava fazer tanto o diagrama de classes (UML) quanto o MER (Modelo Entidade Relacionamento)
e surgiu a dúvida:
Digamos que eu tenha um relacionamento um para muitos: um cinema possui varias salas. cada sala pertence a um unico cinema
então no MER fiz assim (estou ocultando alguns atributos que não vem ao caso):
CINEMA
id_cinema
SALA
id_sala
id_cinema
porém no diagrama de classes fiz o contrário
CINEMA
Sala
SALA
Conclusão é que no diagrama estou dizendo que o cinema possui sala (faz sentido, não?),
porém no MER eu fiz sala possui cinema (afinal eu vou precisar repetir ids de um mesmo cinema para a várias salas).
Isso está correto? fazer a modelagem dessa forma funcionaria? com bom desempenho?
Obrigado desde já.
Diagrama de classes pode abstrair algumas coisas.
No caso, eu sugiro que use List, afinal, um cinema possui uma lista de salas.
Você pode criar um atributo List<Sala> salas;
em Cinema.
Dai no diagrama de classes você vai ter que um cinema possui varia salas.
E em Sala no Diagrama de Classes você coloca que Sala tem um cinema, afinal, uma sala pertence a um cinema.
O relacionamento vai depender do seu modelo de negócio, sua implementação está correta colocando uma lista de sala no cinema, mais como o romarcio disse vc também pode colocar na sala o cinema o que é mais usado.
Pensei mais sobre o assunto e acho que cheguei onde eu queria
Ok pessoal, então usarei uma lista de salas, faz sentido.
Quanto a colocar no diagrama de classes a sala como um atributo de cinema e o cinema como atributo de me parece reduntante.
Acredito que falhei ao afirmar que com esse modelo de MER (o id_cinema dentro de SALA) significa que a SALA tem CINEMA, pois afinal o que resultaria dessa tabela ( tabela sala com id_cinema) seria algo assim:
id_sala id_cinema
1 1
2 1
3 1
4 2
5 2
Dessa forma, fica mais claro observar que na verdade: cada cinema possui várias salas!
…e não o contrário, como pode nos enganar o modelo:
SALA
id_cinema
Conclusão que tirei: nunca tentar decifrar os relacionamentos do MER desse modo que eu fiz como se fosse uma classe de java;
Se alguém quiser adicionar ou corrigir algo, por favor o faça.
Obrigado a todos!