iT邦幫忙

2

[關聯式資料庫]_Web 頁面內的資料對應至資料庫table時,該以加欄位橫向儲存好? 還是以行之垂直儲存好?

各位大大好,小弟現在遇到一個難題。

因為在開發Web App頁面時,一個頁面中除了有幾項固定資料(像是生日、性別)需填之外,另外頁面上會有一個表單,橫著的欄位約有4欄(假設是A, B, C, D)是需要填的,縱向(垂直)的行數會有22個項目(假設項目名是1,2,3...,22)要填。

也就是說,一個表單內會有88個格子可以填資料(不一定都是必填)。

而每行(資料庫table中)資料也會有基本的欄位是一定會有的,例如,序列號、單位、資料的擁有人、輸入資料的人、輸入資料的日期等等。

現在問題來了,由於網頁表單縱向的數量目前看起來是很固定的 - 22行項目要填,橫向的欄位的4個也是固定的,在關聯式資料庫table的設計上,應該是同一個頁面的資料所有的儲存在相同一行之中好? (可能一個table裡面定義90多~100個欄位)

還是,在table schema設計會拆成兩個tables (T1, T2),一個table (T1)是基本資料外加獨立性資料的儲存,另外一個table (T2) 儲存那網頁中表單內所有的資料(定義A,B, C, D欄<column>跟幾個基本固定欄<column>,資料垂直的長,在該網頁按下儲存按鈕時,會在T1上有一筆資料,在T2會存有22筆資料),並再加一個foreign key與T1的某一行資料產生關聯這樣的方式好?

請高人指點。感恩~

看更多先前的討論...收起先前的討論...
Luke iT邦新手 4 級 ‧ 2018-12-06 17:58:45 檢舉
資料垂直的長 ?? 為什麼?這樣設計?
小魚 iT邦高手 1 級 ‧ 2018-12-06 19:15:55 檢舉
這種表單設計, 乾脆直接用 Excel匯入吧 XD
yenct iT邦新手 5 級 ‧ 2018-12-06 19:45:06 檢舉
@Luke大,您的意思是,一頁網頁裡面所有欄位的資料,存入資料庫時只存於一table,頁面有多少欄位,資料庫table裡就定義相同的欄位數,這樣的儲存方式才對的意思嗎?
yenct iT邦新手 5 級 ‧ 2018-12-06 19:47:22 檢舉
@小魚大您好,目前沒有轉換的需求;僅能讓操作者透過網頁上填妥。
fillano iT邦超人 1 級 ‧ 2018-12-07 10:22:21 檢舉
先不要管資料在網頁上面長怎樣,先考慮資料的關聯性,然後把table設計出來吧。

1 個回答

0
海綿寶寶
iT邦超人 1 級 ‧ 2018-12-07 12:41:36

最基本的一對多定義法
參考看看

序列號 姓名 性別 單位 資料的擁有人 輸入資料的人 輸入資料的日期
1 李大華 FIN 李大華 李大華 20181207
2 張小明 FIN 李大華 李大華 20181207
序列號 表單欄位鍵值 表單欄位內容
1 D1 Y
1 C6 Y
1 B17 N
1 A22 N
2 B1 Y
2 B3 Y
2 B8 Y
2 D1 N

李大華的頁面呈現如下

  A B C D
1       Y
2
3
4
5
6     Y
7
8
9
10
11
12
13
14
15
16
17   N
18
19
20
21
22 N

這樣的做法原因之一是
我不相信這幾句話
「四欄是固定的」
「22個項目是固定的」
「一個表單內會有88個格子可以填資料」

fillano iT邦超人 1 級 ‧ 2018-12-07 14:16:47 檢舉

我覺得他提出所謂頁面上的資料,其實還只是「需求」。之後需要分析跟設計來確定資料庫長怎樣,最後再來看需求怎麼實現(也就是最後頁面真的要長怎樣)。

/images/emoticon/emoticon12.gif

我要發表回答

立即登入回答