2010-05-29 266 views
1

我有一個名爲ActivityRecording的表。該表目前有500,000條記錄。我需要添加許多與活動記錄表相關的新輸入。活動記錄與這些新輸入字段的關係是1到0,1。數據庫結構

因此,屏幕上會發生什麼情況是當用戶填充ActivityRecording數據時,他將被帶到新頁面,並且此頁面將顯示基於用戶輸入(來自下拉命名服務)的活動記錄中的表單。將有6種不同的形式(每種形式將有7-8個輸入,其中包括大小5kb的textareas,文本框和複選框)。因此,對於一個活動記錄用戶將填寫6個表格中的一個。

有兩種方法,我知道(可能有更多),我可以設計數據結構:

  1. 從所有這些形式的6成activityrecording表添加所有的投入。因此,屬於這些表格中的5個的列將在此表中爲空,只有屬於其中一個表格的列將具有值

  2. 另一種方式是添加6個新表(每個表格一個)並添加6個活動記錄表的外鍵列。因此,在6個外鍵中,5個將爲空,其中一個將實際指向一個表格

哪種方法是更好的數據結構設計?請注意,此表中的行數爲500,000,預計現在將以更快的速度增長。

回答

2

你應該問自己:「如果我需要一個表單,會發生什麼。」 (你必須創建一個新表)。在我看來,第一種方法會更好,因爲我不喜歡創建新表格(你必須更新你的linq類等)。

還有第3個,爲表單創建一個表並將它們鏈接到輸入表。 表單1 ----- n輸入

+0

第三種方法聽起來不錯,我實際上是 ActivityRecording外鍵字段,因爲那時我有我的activityrecording和形式的分離。 – 2010-05-29 20:20:00

+0

是的,這就是我會怎麼做,畢竟它有點mvc,你有視圖(表單)從表(模型)分開,如果你改變視圖,你不會改變任何模型table) – 2010-05-30 16:13:04

+0

因此,如果我用所有這些字段(來自所有6種形式)製作單獨的表格,那麼這是一個很好的設計,因爲對於每一行我都會有80%的列始終爲空。 – 2010-06-03 03:02:14

2

表單和用戶界面與聲音數據庫設計無關。

遵守基本設計規則,如正常形式和理解您試圖存儲的數據的基本屬性。在你的問題中幾乎沒有關於數據的信息 - 這都是關於表單的!因此不可能就特定的設計給出一個好的答案。

+0

以下是關於數據的一些信息:我有ActivityRecording表,它現在存儲關於所提供服務(僅服務代碼)的數據,服務時間,提供服務的工作人員以及此類信息。現在,我們需要捕獲有關此服務的詳細信息(現在我們沒有捕獲有關此服務的任何詳細信息),例如客戶的迴應,員工的意見和一些複選框等。不同的服務具有不同類型的表單(部分他們共享相同的形式),我們擁有的是6種不同的形式。 – 2010-05-30 16:35:06

2

您錯過了另一個選項。

對ActivityRecording表沒有任何更改。在每個 補充表

+0

是的,這是另一種選擇,儘管它沒有任何區別。 – 2010-05-30 16:40:17