Храните их в 3 отдельных таблицах и сделайте UNION ALL
в представлении, если вам нужно объединить данные в один набор результатов для потребления. То, как вы храните данные на диске, не обязательно должно совпадать с тем, как вам нужно использовать данные, если производительность достаточна.
Как у вас есть сейчас, нет столбцов, которые не применяются ни к одной из представленных сущностей. Если бы вам пришлось объединить 3 таблицы в одну, вам нужно было бы как минимум добавить поле, чтобы знать, какие столбцы следует заполнить, и снизить производительность. Теперь, когда вы запрашиваете только один выходной, вы переходите к подмножеству данных, которые вам нужно будет просмотреть / index, чтобы получить те же данные в объединенной таблице хранения.
Если вы еще не определили эти таблицы, вы можете создать одну таблицу со следующей подписью ...
create table EventBase (
Id int PRIMARY KEY,
Date date,
Name varchar(50)
)
... и, скажем, праздничный стол со следующей подписью.
create table holiday (
Id int PRIMARY KEY,
EventId int,
Location varchar(50),
CalendarId int
)
... и присоединяйтесь к ним, когда вам нужно это сделать. Выбор между этой и 3-мя отдельными таблицами, которые у вас уже есть, зависит от того, как вы планируете использовать таблицы и объем, но я бы определенно не бросил все в одну таблицу как есть и сделал бы вещи менее понятными для того, кто смотрит на определение таблицы без других инициация.