2011-12-27 67 views
0

我正在製作一個網站,允許用戶創建活動,與之關聯的人員和待辦事項列表。對於人們來說,會有名字/電話/標題。對於待辦事項列表,會有一個任務和一個布爾值來表示它是否已完成。在數據庫中存儲用戶自定義列表

我的問題是,我只是在數據庫中的表(事件)中的一個字段中輸入一個數組來表示人,或者我爲「關聯人」創建單獨的表並將它們與JOIN鏈接起來。我擔心的是,所有這些人都是用戶創建的,創建一個完整的其他表似乎是一種浪費。同樣,我可以創建一個帶有ID,任務名稱,用戶標識和布爾值的「待辦事項」表,但這些列表中的每一個很可能都不會與數據庫中的其他任何內容相關聯,除了創建它們的用戶和列表他們屬於。我可以創建To_Do_Lists表格,然後創建表格項目,並與人員一起執行操作,但是我不確定這是否是最佳方式,如果這些值不在屬於特定用戶的特定事件之外。

最好是有更多的表,將數據存儲爲數組,將數據存儲爲xml作爲blob,還是什麼?

回答

1

存儲東西,使每個有形的物體都在自己的表中。這將導致關係數據庫。你想爭取第三範式。有很多理由要遵循這個既定的公約。數據庫和編程工具可以用這種形式處理數據,您將節省時間和麻煩,爲未來的變化和擴展留下很大的靈活性。

例如,如果您將人員保留在PEOPLE表中,您會發現事件很容易引發重疊人員。因此,您的系統變得社交化,而不必廢棄數據庫並重新開始。

抵制偷工減料的誘惑。它不會在短期或長期內爲你節省任何東西。

1

如果您將爲此應用程序使用數據庫,遵循最佳實踐確實會爲您節省時間。

這是我如何可能會設計數據庫:

百姓餐桌 的peopleid,姓名等

事件表 事件ID,事件名稱,說明等

ToDoList表 TodoListID,EventID,OrderKey,Task等 此表是一個關鍵ot表。 EventID是事件表的外鍵。要查找事件的所有任務,您必須加入這些密鑰。

表與會者 AttendeeID,的peopleid,事件ID,等等 這也是一個透視表。加入EventID會爲您找到所有與會者。加入PeopleID會爲您找到一個人參加的所有活動。

相關問題