多対多の関係はBoyce-Codd Normal Formに違反しているため、適切なリレーショナル データベース スキーマに違反しているというのが私の印象です。
したがって、データをリンク テーブルに関連付けることは、実際には BCNF を実現するために必要であり、したがって有効です。データ更新の異常を回避するのが良い場合。
あなたが提示した特定のスキーマの例に進みます。これらの論理テーブル (またはエンティティ) が必要だと思いますが、
-----------------------
EventClass
-----------------------
Id
Name
... Other attributes common to every instance
-
-----------------------
TimeSlot
-----------------------
Id
Start
End
-
-----------------------
Place
-----------------------
Id
Name
Address
MaxAttendance
... etc
-
----------------------
EventInstance
-----------------------
Id
EventClassId
TimeSlotId
PlaceId
PresenterName
...Other attributes specific to the instance
EventInstance
はとの間の関係EventClass
です。に固有の属性はすべて、そのエンティティに格納する必要があります。関連するイベントのグループに共通する属性は、その属性に格納する必要があります。TimeSlot
Place
EventInstance
EventClass
それはすべてデータベースの正規化の問題であり、一般的に言えば、データが正規化されているほど良いです。ただし、パフォーマンスが懸念される場合は妥協する場合があります。必要なデータが出力形式で格納されている場合、選択クエリがよりシンプルで高速になりますが、更新は地獄になる可能性があります。
適切な Indecies、Materialized Views、およびMaterialized Views の indecies を使用すると、両方の世界を最大限に活用できることを示唆することで、妥協のケースに対抗します。パフォーマンスの速度で完全に正規化されたデータの保守性。ただし、適切なスキーマを作成するには、ある程度のスキルと考慮が必要です。