Como posso resolver uma associação polimórfica de três vias?
Primeiro, deixe-me dizer que estou usando o MySQL (não transacional) e que isso não pode ser alterado. Além disso, simplifiquei as tabelas aqui para brevidade e clareza.
Neste exemplo, uma "Lição" é composta por seus atributos internos e seus atributos externos com seus próprios atributos "Leituras". 'Readings' tem seus próprios atributos dependentes de chave e três atributos externos distintos (as fontes de leitura).
Eu quero evitar a associação polimórfica que surge aqui, mas não consigo envolver minha cabeça em torno dela. Neste exemplo, 'sourceId' na tabela 'Reading' conteria o id de uma das três tabelas "ExternalURL", "InternalURL" e "Book". Além disso, o campo "polytable" conteria o nome da tabela da qual o "id" mencionado veio.
Alguém pode ter um momento para explicar como resolver esta manutenção RI ou é possível que no interesse da eficiência que deve ser deixado?
Obrigado pelo seu tempo e consideração
Tim
-------------
| ExternalURL |
-------------
| id |
| badlink |
| url |
| |
| |
-------------
|
|
|
/ \
------------ ------------- -------------
| Lesson |-------<| Reading |>-------| InternalURL |
------------ ------------- -------------
| id | | id | | id |
| label | | lessonId | | url |
| summary | | sourceId | | |
| lessonOrder| | polytable | | |
| active | | label | | |
------------ ------------- -------------
\ /
|
|
------------
| Book |
------------
| id |
| label |
| summary |
| lessonOrder|
| active |
------------