2011-04-05 123 views
0

目前我正在研究一個項目,乍一看,將需要在數據庫中的許多表。大多數表格非常簡單,但我確實有一個問題。其中一張表格將成爲該網站的會員名單,其中包括用戶名,密碼,聯繫方式,生物,教育等內容。這是一個簡單的設計,但是,每個成員也需要輸入其可用性並將其存儲在數據庫中。可用性被定義爲日期和時間範圍。如在2011年4月5日美國東部時間下午1點到6點提供,或者在美國東部時間晚上8點以後的每個星期五都不提供。對於單個用戶來說,這可能是一個表格,但對於許多用戶來說,我不知道如何以可管理的方式組織數據。首先想到的是讓代碼爲每個用戶創建一個表,但這可能意味着數據庫中的許多表除了少數我用於其他網站功能的表之外。從邏輯上講,我可以使用附加到Avail_的用戶名或者表名即:Avail_UserBob,然後根據需要查詢。但我很好奇,如果任何人都可以想到一個更好的選擇,而不是在單個數據庫中有數百個表的潛力。Mysql數據庫設計

編輯 因此,一般的協議是爲成員設置一個表,例如唯一的鍵是ID。然後有可用性的第二個表格(日期,開始時間,結束時間,可用或不可用的布爾值,以及適用的成員ID)。 Django聽起來不錯,而且工作得很好,但是我沒有時間在這個項目上工作時花費學習另一個框架。 2表方法似乎是可行的,但我擔心需要使用可用時間的功能所需的額外編碼A)構建像頁面一樣的日曆以添加,編輯或刪除輸入的值,以及B)將可用性與另一個表中的條目進行匹配列出遊戲。雖然我可能有更多的編碼,但只要數據庫是健全的,功能強大的,而且不那麼混亂,我就能忍受。感謝輸入的人。

+0

你也應該爲每個用戶製作一個新的程序副本。 – 2011-04-05 16:34:20

回答

0

創建一個表來存儲用戶。將其主鍵用作其他表中的外鍵。

1

不要聽起來像一個巨魔,但你應該看看使用Web框架來爲你構建大部分。我建議看看Django。有了它,您可以定義您希望存儲的字段的類型(以及它們如何相關),並且Django構建所有SQL語句以實現它。你可以免費獲得一個漂亮的管理界面,這樣工作人員可以登錄和添加/編輯/等。

您也不必擔心構建登錄/授權/更改密碼等表單。所有會議內容都由Django負責。你會專注於什麼使你的項目/應用程序獨特。

它可以讓你建立你的項目真的非常快。

djangoproject.org

我沒有符合要求的任何其他框架的建議。我確實......但我認爲Django會符合這項法案。

+0

一點都不討厭! – 2011-04-05 16:48:02

+0

Idunno!這就是我一直在解決這個問題,一次又一次地與我的每個客戶解決問題的方式。我覺得我應該成爲一名Django推銷員或其他東西。但真的......它是一個很棒的框架。當我第一次開始時,我不知道一小撮Python。所以我的模板包含了大量的邏輯......隨着我在Python上的進展越來越好,我將自己的邏輯進一步推回到視圖,模型方法,管理人員等等。現在,我是str8 pimpin。這個孩子也可以。 – Flowpoke 2011-04-05 16:59:27

0

數據庫被寫入來保存表中的許多行。沒有針對表格創建進行優化。因此,爲每個用戶創建一個新表並不是一個好主意。而是給每個用戶一個唯一的標識符,並把可用性放在一個單獨的表中。提供一個附加標誌以使輸入有效或無效。

0

創建用戶表;然後爲每個用戶創建一個可用性表。不要試圖將可用性限制在用戶表中:這將保證你以後對你的巨大悲痛;你會發現你然後創建一個可用性表。

谷歌數據庫規範化,以瞭解爲什麼。

從一個遭受這種自我傷害的人身上可以看出來:-)