2010-07-31 128 views
1

我正在製作在線日曆。數據庫表格規範化問題

一個將能夠創建en事件,然後有可能選擇添加「無限」或「從」到「結束」日期時間。如果您選擇添加「從」到「結束」,您可以選擇不重複或每天,每週或每月重複一次。

我想知道創建這些關係的最佳方式是什麼。

這裏是我的表我有現在:

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,因爲它有一個外鍵約束。我如何讓用戶選擇不指定任何日期時間,只需將其設置爲無限。

對於重複也是如此。如果用戶設置了日期時間,我想給出將重複設置爲無的可能性。

有人可以指引我進入正確的方向。

感謝

+0

你可以發佈你使用的DDL嗎?通常外鍵不需要指定它們... – 2010-07-31 11:08:30

+0

我不知道DDL的含義。我安裝了Mysql,並使用SQL進行即時通訊。 – 2010-07-31 12:06:20

+0

創建表的SQL語句:) – 2010-07-31 12:15:45

回答

2

我會建議重新考慮架構,我的建議是這樣的:

編輯:,因爲事件可能有不超過一個週期,它是更好地使用作爲列,如果它們爲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"