Вопрос нормализации таблицы базы данных - PullRequest
1 голос
/ 31 июля 2010

Я делаю онлайн календарь.

Можно создать событие, а затем иметь возможность выбрать добавление «бесконечного» или «от» до «конечного» даты и времени. И если вы решите добавить «от» до «конца», вы можете выбрать, чтобы он не повторялся или повторялся каждый день, каждую неделю или каждый месяц.

Интересно, как лучше создать эти отношения?

Вот мои столы, которые у меня сейчас есть:

Table: Events
Columns: name, description, date_time (foreign key)

Table: Date_time
Columns: from, to, repeat (foreign key)

Table: Repeat
Columns: mode, days
1: "daily", "every 2nd day"
2: "weekly", "Monday, Wednesday"
3: "monthly", "1st, 12th, 19th"

С этим я сталкиваюсь с некоторыми проблемами.

Здесь я должен указать Events.date_time, потому что он имеет ограничение внешнего ключа. Как я могу позволить пользователю выбрать не указывать дату и время, просто установить бесконечное.

И то же самое касается повторения. Если пользователь установил дату и время, я хочу дать возможность установить повтор в значение none.

Может ли кто-нибудь указать мне правильное направление.

Спасибо

1 Ответ

2 голосов
/ 31 июля 2010

Я бы предложил пересмотреть схему, мое предложение таково:

РЕДАКТИРОВАТЬ: , поскольку событие может иметь не более одного периода, лучше использовать из и до как столбцы, если они равны NULL, то событие действует бесконечно.

Table: Events
Columns: id, name, description, from (nullable), to (nullable)

Table: Repeat
Columns: mode, days, event_id (foreign key to Event)
1: "daily", "every 2nd day"
2: "weekly", "Monday, Wednesday"
3: "monthly", "1st, 12th, 19th"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...