iT邦幫忙

2

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

  • 分享至 

  • xImage

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

因為在開發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邦研究生 5 級 ‧ 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設計出來吧。
yenct iT邦新手 5 級 ‧ 2019-01-24 11:08:00 檢舉
是啊,頁面怎麼呈現是一回事,基本上要符合客戶的需求跟實際操作需要;只是比較傷腦筋的是資料關聯性該怎麼設計會比較好。這88格子的資料是代表某一個項目指標的各種數值,只是裡面會細分為22指標分類。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

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

yenct iT邦新手 5 級 ‧ 2019-01-24 11:04:50 檢舉

各位大大們您們好,不好意思回應晚了。
確實是88格資料欄位要填哦。。。而且還不只一頁的forms要填。像這種還是固定欄位的,只是資料非必要一定都得填。

有些還是動態要產生的行。不過動態產生的背後資料欄位設計到還明確,反倒是這種要填的值超多,但又固定的,就有點為難該把所有欄位值放入同一行(88欄值)裡好,還是分層次,一筆資料記載四個欄位值外加這個值所對應的項目,然後這一頁填寫實,最多在DB table上會產生22筆資料這樣的設計方式好。

蠻同意fillano大大所說的,頁面呈現倒是其次,主要是資料table怎麼設計比較好。

我要發表回答

立即登入回答