iT邦幫忙

DAY 10
5

網站系統規劃實務系列 第 10

網站系統規劃 - 資料的成長與分化?續談資料邏輯

本篇文章作為第二週的第三篇,我們將繼續用 Excel ,
來說明為何常常會從一個資料表推成多個資料表,這中間的操作過程。

--------系列簡介--------

網站系統可說是現在最多學子與新人想要入門的一個領域,
這個原本屬於新興的領域,這幾年來也累積許多年的知識與 pattern ,
在有限的環境(stateless)與有限的伺服器端、瀏覽器資源下,
成為許多人進入程式的一塊入門鐵板(?)。

這個系列希望能夠就網站系統設計幾個門檻著手,
這是設定給初心者作為學習,給同好們作為回顧,

重新認識有關網站系統的每個環節。
昨天的文章裡面,我們談到一個用 Excel 模擬資料表的簡易情況,
今天我們要接續昨天的例題,繼續探討操作資料中更多的細節。

這是我們昨天留言板最後的結果:

接下來我們會碰到下一個問題,名字是偶爾會碰到重複的,
於是我們接續昨天的情境,繼續往底下探討。


我有另一個也叫小王的朋友,他在 2012/10/2 17:00 時問我,
「晚上有沒有空?一起去吃飯?」

首先我們還是先把資料紀錄上去:


接下來我們撞到資料紀錄時的第一個雷,
從資料上顯然的我們無法區隔兩個不同的小王。
這時小王就變成 ambiguous (模糊不清的)了。

一般而言我們需要避免這種問題,
所以我們可能會考慮增加紀錄的資料,來確保我們能夠辨識出小王。

因為我們是用暱稱,所以常用的作法可能會改用全名紀錄,
或是改名叫"另一個小王"、"小王2",但是這樣還是很難識別,且全名還是很有可能重複,
所以通常我們會再加上 email 或電話這種比較不會重複的資訊。

這裡為求接近真實的留言板,我們採用 email 紀錄。
至於資料,就從兩位小王的名片中取得就好!

PS. 一般而言這個問題在設計或者資料測試時,
就要盡量考慮到,否則資料上線後重新更動欄位的成本是很高的。

接下來讓我們更新資料如下:


接下來因為開始有越來越多事情,除了私事也有公事,
扣掉這個以外,也有不同圈子的好友聊不同圈子的事情,

讓我們為這個留言板加上類別欄位,以利我們追蹤。


接下來我們又陸陸續續的紀錄許多留言,在紀錄的過程中我們發現幾個問題,
第一個問題是每次紀錄留言的過程中,我們都要重新輸入暱稱跟 email 實在是太麻煩了,

我們應該只要能對照資料就好了,沒有必要每次都重新輸入,
而且偶爾還會打錯大小寫,無法讓資料一致。


這時候我們開始將使用者的資料整理到另一張資料表(sheet),
並且改用編號的方式來標記他們,
為了留言板的閱讀方便起見,我們還沒有將姓名的部份去除。

如下圖


透過編號,即使名稱重複,我們仍能清楚識別這是不同的使用者或是相同使用者。
(記得我們求學過程中的學號嗎? 學號也是一個類似這樣的規則。)

所謂的資料都有「識別」的需求,也就是判斷哪些資料是一樣的,
哪些資料是不一樣的,這個識別稱之為 identify 。

如果資料看起來一樣,但實際上我們認知上他是不一樣的,
這表示這資料識別度是不夠的,而這資料是不可靠的。

此時就需要增加資料來作為區隔。

剛剛的資料中,可以發現我們實際上將原本做為使用者識別值的姓名,
在兩次的代換中換成了使用者編號,而原本的姓名只成為顯示用的資料。

@ 抽成兩張表格有什麼好處?

1.可以將相關的資料集中進行處理,

比方說如果我想額外紀錄這些朋友的生日跟電話以利平常聯絡,
把它記在留言板裡面很怪,對吧?

2.減少重複的資料,假設今天小王(1)換了 email ,我得要修改三個欄位,

如果是一千次對話裡面,我要找到所有欄位並取代,
比起之後設定使用者資料表只需要修改一筆的狀況下,就會是一個相對辛苦的事情。

@ 抽成兩張表格有什麼壞處?

讀資料時需要對照,我必須要同時參考兩張表格才能瞭解完整的訊息,
像是如果我沒有標注姓名的話,我要從使用者編號查詢姓名的話,

必須一邊翻閱使用者表格才知道,這種方式是不利於人腦閱讀表格。

@ 既然要減少重複的資料,那為什麼我們還要留著姓名欄位呢?

因為我們畢竟還是要瀏覽留言板(view),適當地使用者減低瀏覽的負擔是必要的;
而且 Excel 並沒有一個好得方式讓我們進行對照與參考。


如果說有一個 Excel function ,可以自動幫我們抓出 ID 對應姓名的話,
那我們就完全沒有必要留著姓名欄位了,對吧?


事實上在資料庫的觀念中,分成資料表的儲存跟資料的存取兩個部份。

如果今天我們是在用真正的資料庫,我們可將留言板的姓名欄位去掉,

並且透過查詢語法,拿出「留言板」這張表格所有的欄位,
並且加上「使用者」這張表格中編號對應的姓名。


這是資料庫跟 Excel 的差別,資料庫可以將資料的儲存與資料的讀取分離,
讓表格可以再以不同的方式呈現。

這點在之後幾天中正式進入資料庫的環境建設與 SQL 操練時,會更加瞭解。


@ 要減少重複的資料,好像還有一個可以減少吧?

是的,類別欄位也是可能會重複的資料,在真正的資料操作時,
我們也會將其獨立成資料表,並且用編號的方式與留言板進行對應。

如下圖:

今天我們開始從一張資料表進入到多張得資料表,
從 Excel 的世界慢慢進入資料庫的世界,接下來我們就會正式進入 SQL 的世界囉。

那麼,明天見。;)


上一篇
網站系統規劃 - 資料管理初探(以 Excel 為例)
下一篇
網站系統規劃 - 資料庫聽起來很複雜很可怕?談資料庫環境建置
系列文
網站系統規劃實務27

2 則留言

0
SunAllen
iT邦高手 1 級 ‧ 2012-10-04 00:02:25

沙發今天又坐到了

鐵殼心 iT邦高手 1 級 ‧ 2012-10-04 00:20:30 檢舉

歡迎太陽大加入沙發組的選手區開心

SunAllen iT邦高手 1 級 ‧ 2012-10-04 00:28:51 檢舉

讚

0
ted99tw
iT邦高手 1 級 ‧ 2012-10-04 06:47:43

跟在太陽大後面推準沒錯!
讚讚

我要留言

立即登入留言