Web サイトのドメイン モデルの特定の部分を設計しようとしています。
私が抱えている問題は、曜日 ( Day
) と時間枠 ( TimeSlot
)で一種の可用性マトリックスを表すことです。
可能な値は次のDay
とおりです。
- 月曜日
- 火曜日
- 水曜日
- ...
可能な値は次のTimeSlot
とおりです。
- 学校の前
- 朝
- 昼
- 午後
- 放課後
- 夜
- 夜間
Day
現在、上記の 2 つの列挙型 (およびTimeSlot
) をフィールドとして持つ JPA エンティティがあります。
@Entity
public class DayToTimeSlot {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@NotNull(groups = { Default.class, Validation.AdvertisementCreation.class })
@Enumerated
private Day day;
@NotNull(groups = { Default.class, Validation.AdvertisementCreation.class })
@Enumerated
private TimeSlot timeSlot;
}
次にDayToTimeSlot
、すべての可能な値/組み合わせを参照テーブルに入力します。
最後に、次のようなインスタンスAdvertisement
を持つエンティティがあります。@ManyToMany
java.util.Set
DayToTimeSlot
@ManyToMany
private Set<DayToTimeSlot> dayToTimeSlots;
これにより、非常に急速に拡大する可能性advertisement_day_to_time_slots
のある結合テーブルが作成されます。
この可用性マトリックスをモデル化するためのより良い方法はありませんか?