Closed intrepidocabral closed 6 years ago
Para as classes principais, tudo está relacionado a tudo de 0 até N vezes. Vocês podem dizer a melhor maneira de construir isso no nosso stack. Me digam se faz sentido esse palpite:
Se toda classe tem um UUID, podemos criar uma única tabela de relacionamentos, que funciona como uma classe associativa. Nessa tabela podemos ter atributos dizendo o papel de cada relacionamento, e a partir desses tipos criar visualizações específicas. Pode exemplo:
id |
UUID 1 |
UUID 2 |
tipo_relacionamento |
other_data |
---|---|---|---|---|
0123 | 01d02.. | 09d33k... | exhibition_publication | informação não estruturada |
0124 | 01d02.. | 12f32b... | collection_publication | ... |
Na página de detalhe da Publicação 01d02..
conseguiríamos criar um box para ver os relacionamentos com aquela instância, que pode apresentar uma listagem simples com Exposição 09d33k..
, Coleção 12f32b..
, Evento ABC..
, etc.
O que vocês acham?
Acho que a primeira coisa é analisar a relevância lógica dessas associações para a instituição. Se tudo for verdadeiro, ótimo. Se alguma coisa soar, ainda que de longe, non-sense ou pouco provável, devemos ser criteriosos em adotar ou não essa modelagem. Relendo aqui as opções, acho que todas podem ser válidas, ainda que algumas tenham ocorrências mais raras.
Eu acho essas afirmações bastante realistas:
[x] 1 Exposição pode ter 0 até N Eventos Aqui eu posso querer recuperar no futuro quais eventos compuseram uma determinada exposição ao longo de sua permanência (nenhum, um ou vários eventos).
[x] 1 Evento pode ter 0 até N Exposições Aqui, posso pensar num cenário mais abrangente. Uma Semana Modernista pode ter diversas exposições (Ev[1] -> Ex[N]). Posso ter um lançamento de um livro ou um evento de premiação, mas que não é ligado a nenhuma exposição(EV1 -> Ex[0]). E posso ter o evento de inauguração da exposição (Ev[1] -> Ex[1])
[x] 1 Publicação pode estar vinculada a 0 ou N Eventos Esse cenário também me parece intuitivo, isto é, eu posso ter uma publicação registrada e não vinculada a nenhum evento. Posso ter uma publicação e um evento de lançamento. E por fim posso ter uma publicação e vários eventos de lançamento, um em cada cidade ou um em cada contexto.
[x] 1 Evento pode gerar 0 ou N Publicações Esse cenário me parece menos pragmático em sua totalidade, mas ainda assim possível. Talvez sejam mais raras as ocorrências 1 para n. Um evento pode gerar uma publicação? (Ev[1] -> Pu[1]) Creio que sim. Uma mesa de debates e/ou um seminário pode gerar uma publicação com o compilado de textos que foram usados nas 'falas' dos debatedores. Um evento pode não gerar nenhuma publicação? Pode! Não é todo evento que resulta numa publicação (Ev[1] -> Pu[0]) . Um evento pode gerar mais de uma publicação (uma publicação em série, ou uma série de publicações)? Não sei se há evidencia empírica desse tipo de situação, mas acho que é possível organizar publicações em volumes e considerar um conjunto de publicações para determinado evento (Ev[1] -> Pu[N]) .
[x] 1 Exposição pode gerar 0 até N Publicações Esse exemplo é igual ao exemplo anterior, então não vou me repetir.
[x] 1 Publicação pode estar vinculada a 0 ou N Exposições. Exemplos que mostram a validade:
(Pu[1] -> Ex[0]) IMS faz uma publicação sobre fotografia de mulheres no século XX, sem vincular essa publicação a nenhuma exposição em específico;
(Pu[1] -> Ex[1]) IMS faz uma publicação sobre a exposição 'Rio primeiras imagens";
(Pu[1] -> Ex[N]) IMS faz uma publicação sobre todas as exposições feitas na antiga sede da rua Buenos Aires;
Um exemplo fácil usando as classes Exposição e Eventos:
Exposição
ID (PK) |
UUID |
name |
---|---|---|
ex01 | ex01-abcdefghijklmnopqrsquvxywz | Rio Primeiras Imagens |
ex02 | ex02-abcdefghijklmnopqrsquvxywz | ROBERT FRANK: OS AMERICANOS |
Eventos
ID (PK) |
UUID |
name |
---|---|---|
ev01 | ev01-abcdefghijklmnopqrsquvxywz | Inauguração da exibição Rio Primeiras Imagens |
ev02 | ev02-abcdefghijklmnopqrsquvxywz | Seminário de abertura da exposição Robert Frank |
ev03 | ev03-abcdefghijklmnopqrsquvxywz | Debate de encerramento da exposição Robert Frank |
ExposiçãoEventos
ID (pk) |
IDExposição (FK) |
IDEventos (FK) |
---|---|---|
ee01 | ex01 | ev01 |
ee02 | ex02 | ev02 |
ee03 | ex02 | ev03 |
Realmente, o exemplo mais improvável é um evento gerar uma publicação (considerando o critério que folder não é publicação, mas documento anexo). Mas um evento pode estar relacionado a mais de uma publicação.
Exemplos
Evento: Palestra de Maria Inez Turazzi
tem como tema a Pessoa: Marc Ferrez
, integra a programação da Exposição: Rio Primeiras Poses
, tem como referência bibliográfica a Publicação: Rio by Marc Ferrez
e a Publicação: O Brasil De Marc Ferrez
, e discute itens da Coleção: Gilberto Ferrez
.
Evento: Retrospectiva Sergio Oksman (Cinema)
tem como tema a Pessoa: Sergio Oksman
, e tem relação a Publicação: O Futebol (DVD)
e a Publicação: A teoria do impostor (Blog do Cinema)
.
Tem alguma relação que você considera pouco provável? Reunir exemplos como esses é algo que ajuda? Posso organizar outros para dar um panorama dos nossos dados
Eu estava em dúvida sobre a validade de todas essas opções, mas o exercício de escrever a dúvida e de pensar exemplos sobre isso me trouxe mais clareza da modelagem. Eu acho que essa questão esta fechada para mim, todos os modelos são logicamente válidos e devem ser implementados. Obrigado pela tabelinha @buccalon , falei aqui com o @vitor-kato e concordamos que essa é a melhor escolha.
Qual é de fato a relação entre estes pares? Todas as alternativas são verdadeiras? @buccalon
Exposição <-> Evento Publicação <-> Evento Exposição <-> Publicações