2010-07-31 4 views
1

Я делаю онлайн-календарь.Вопрос о нормализации таблицы базы данных

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

Интересно, что является лучшим способом создания этих отношений.

Вот мои таблицы я имею сейчас:

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" 

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

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

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

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

Благодаря

+0

Можете ли вы разместить DDL, который вы использовали? Обычно внешние ключи не требуют указать их ... –

+0

Я понятия не имею, что означает DDL. Я установил Mysql и im, используя SQL. –

+0

Операторы SQL для создания таблиц :) –

ответ

2

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

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

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" 
Смежные вопросы