まず、MySQL(トランザクションではない)を使用していて、これを変更できないとしましょう。また、簡潔さと明確さのために、ここでは表を簡略化しました。
この例では、「レッスン」は、その内部属性と、それ自体の属性「読み取り値」を持つ外部属性で構成されています。「リーディング」には、独自のキー依存属性と3つの異なる外部属性(リーディングソース)があります。
ここに到着するポリモーフィックな関連性を避けたいのですが、頭を包み込むことができません。この例では、テーブル「Reading」の「sourceId」には、「ExternalURL」、「InternalURL」、「Book」の3つのテーブルのいずれかからのIDが含まれます。また、フィールド「polytable」には、前述の「id」の元となったテーブル名が含まれます。
誰かがこの維持RIを解決する方法を説明するために少し時間をとることができますか、それとも効率のためにそれを残す必要がある可能性がありますか?
あなたの時間と配慮していただきありがとうございます、
ティム
-------------
| 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 |
------------