初級資料庫設計

這裡的內容來自我的老師 David White 的課以及他的書 Data Modelling The Foundation of Information Systems。目前沒有附 ERD 圖,所以可能有些地方不是很容易懂。

命名

當命名物件跟屬性時需符合以下規則:

  • 使用單數詞作名字,不用複數詞。這樣子能更容易自動產生正確的描述句(程式可以自動判斷把單數詞改為複數詞)。
  • 只使用一種命名規則(CamelCase 或者 Underscore_Naming),不要混用。
  • 名字要能描述功能,比如說一個紀錄元件安裝時間的欄位該命名為 WhenComponentInstalled 而不只是 WhenInstalled ,不然在範圍外會跟其他要安裝的欄位造成混淆。試著讓文法正確。
  • 當使用某些通用的詞(如 description),應該在詞前面添加形容詞(如 ProductDescription)

當命名屬性時需符合以下規則:

  • 人名欄位的命名使用 GivenName(名)與 FamilyName(姓),這兩個命名沒有文化隔閡,也沒有宗教或禮俗上的含意。使用一般常見的 FirstName 或 LastName 則會導致不同文化上的理解錯誤。
    (註:也可考慮提供使用者另外一個欄位,專門存放使用者自己想要看到的姓名)
  • 多添加形容詞以避免混淆。但是在那些 Foreign Key 的欄位,還是該前置該 Key 原來的名字,以便識別。
  • 不要使用像是 "Count" 這樣的 SQL 保留字來命名,因為資料庫不能接受這些名字。
  • 非必要不要用 "Date" 來命名。資料庫系統有 date/time 類型的欄位,而原本設計是 Date 的欄位常會後來要改成 date/time 。使用 WhenXxxYyy 來命名 date/time 欄位,比如說 WhenEnrolled、WhenContractStarts、WhenContractEnds。

常見的命名問題

  • 使用複數詞作名字
  • 沒有依照大眾普遍接受的方式縮寫
  • 英文大小寫方式不一致
  • 英文動詞時態不一致,如 WhenXxxBegan 相對於 WhenXxxEnds。
  • 名字不夠清楚,如 WhenInstalled 沒有標示安裝什麼東西。
  • 使用太過廣義的詞,如 Description 。
  • 名字欄位使用 LastName、ChristianName 等有文化差異性的命名法。
  • Foreign Key 的命名沒有前置原表的名字。比如說 Customer 應該改為 AnybodyCustomer ,才能一看就知道這欄位由 Anybody 這個 table 而來。

表格 table 設計

表格應該代表一個物件不會改變的本質,而不是會改變的狀態。舉例來說,一個學校管理資料庫常常會有學生 Student 與職員 Employee 兩個表格,但是這樣子的設計沒有考量到職員也能來修課當學生的狀況,學生與職員都是一種可變動的身份,所以不應該拿來當作表格名稱。在這個情況使用「人 Person」當作表格的設計會更有彈性,因為「人」是本質,不會隨著時間改變。而會改變的狀態,通常使用一個欄位來表示。

繼承與類別

「人」這個概念也有狹義的時候,比如說交易時對象不一定會是人,有時候也是會有公司機關之類的,所以在民法上有「自然人」以及「法人」這兩種概念。在這個時候,使用「Anybody 主體」這個母類別表格,然後下面繼承「Person自然人」「Organization法人」兩種子類別表格,能夠做出更加有彈性的架構。當使用繼承這種機制的時候,要注意幾個事項:

  1. 子類別必須是永久性的,就如自然人永遠不會變成法人。
  2. 子類別必須是母類別之內的,如 Person 跟 Organization 都是 Anybody。
  3. 各個子類別的欄位不能完全相同,不然就失去分開類別的意義了。
  4. 各個子類別必須有本質上的不同,如自然人是活著的,而法人是概念上的,雖然兩者都能成為簽署合約。

相同的繼承概念也能夠使用在「交通工具→汽車、飛機」上。

時間概念

萬事都會隨著時間而改變,而資料庫最好是設計成會紀錄這些改變,以便將來能查訊。通常一個事件有開頭也有結尾,以 WhenBegan 還有 WhenEnded 來命名。WhenEnded不會是主鍵,因為主鍵不能為 null。

對自身的關聯 Recursive Association

一個表格可以對本身作關聯,比如說管理人這種關係。如果每個人只能有一個管理人,那麼可以直接對表格本身的 PK 作關聯,這被稱為樹狀自身關聯(Tree Recursion)。如果一個人能有複數的管理人,那就必須新增一個 Supervision (管理)表格,有兩個 FK :PersonBeingSupervised 以及 PersonSupervisor ,這被稱為網路自身關聯(Network Recursion)。

狀態

如先前所探討的,事物除了能用不變的本質來區分外,也能用他們的行為或是發生在他們的事情等等依著時間發生的「狀態」來區分。就如同犯罪的人可被歸類為罪犯,簽了員工合約的人成為員工,繳了學費的成為學生。這些被視為狀態的改變,而要對這些狀態作區分就必須紀錄狀態改變的事件。

舉學生報名作為例子,也許我們必須紀錄以下的事件:遞交日、審核日、核可日、取消日等等。如果這些都放在 StudentEnroll 的表格上,那麼以後要增加新的狀態就必須更改整個 ERD 。為了改善這種問題,我們可以把事件集中放在另一個表格中,並且新增一個事件類別的表格。這樣子能讓狀態轉移事件有更大的彈性。

Mozilla 徵求嶄新的使用者留言概念

Mozilla Drumbeat | Beyond Comment Threads

Mozilla 基金會最近舉辦網路上公開徵選活動,徵求創新的未來網路新聞概念。這幾個禮拜進入第二個議題:嶄新的使用者留言概念,讓未來的網路新聞的使用者留言能夠更加進化。只要有任何奇特的想法、原型、影片等等都能上傳。而且議題也不限定於科技面,對於社群互動面也是很重要的考慮因素(比如說過濾沒有價值的留言,或者讓少數人的聲音能夠不被多數人掩蓋掉)。甚至只要有新的方法能夠讓使用者與新聞內容互動都可以提出來。

有沒有人有興趣一起想想有什麼好點子,截止日期是5月22日,我可以幫忙翻譯。

畫圖相關書籍小評

這是最近幾年讀過的畫畫相關書籍小評,許多是簡體書,有興趣可以去台北的天龍書店二樓看看,因為最近幾年大陸代理的日文教學書籍有許多都很棒,價格也不錯:

日本漫画名家的艺术世界1

代理日本Comickers Art Style,出版於2005年。第一部分是一一介紹各種畫材(如水彩及麥克筆)並請名家一步步示範上色方法。當中最有名的當然就是由大暮維人繪製的封面 圖。第二部分則是到處穿插的插畫家訪談,如村田蓮爾等有知名度的人物,可以讓讀者了解這些插畫家頭腦裡到底在想些什麼。第三部分是構思漫畫的教學。最後則 是讀者投稿的評論。
整本書讓我印象最深的就是「25歲之後漫畫出道是十分困難的」這個十分嚴苛的評論。也許這就是業界的現實,但是不得不讓我聯想到「本書只賣給25歲以下的人喔」。

動感 Comic 素描我最行!

本書分為兩部份,第一部份是人物的描繪,算是間單明瞭,並加上十分詳盡的肌肉構造圖,不虧是專業動畫家需要注意的地方。
第二部份著重於取景鏡頭,一般的書會告訴讀者使用透視跟消失點來營造真實的畫面,不過這本書反過來告訴讀者說為要達到電影般的鏡頭,使用遠景鏡頭(消除透 視)才會更真實。這部份算是十分寶貴的資料,這應該只是在電影攝影相關教材才會看得到,所以出現在動漫參考書算是十分寶貴的資訊。
作者是已經到導演等級的專業動畫師,所以很多觀點十分獨到,十分推薦一讀。

漫畫企劃講座2

透過兩人對話的方式討論各篇投稿作品的優缺點,分析應該能有所幫助。投稿作品品質約在同人誌上下,所以評論的語氣也不是以「商業化的週刊連載」為前題,而是更多鼓勵新手的寬容角度來看帶作品。
對話的方式雖然輕鬆,但是也導致有些部份用了更多的字數來說明。

漫画人物CG技巧提升版
最於使用電腦繪圖的初級至中級者來說很有用,主要注重於著色的部份,包括人物以及背景兩大主題。有些例子有些簡單或者難理解,但是總體來說是個很好得系統性教材

簡單十步!教您學會畫漫畫
涵蓋故事構思以及真正的漫畫製作,也包涵了畫材介紹、投稿發表甚至是職業漫畫加的生活之類的資訊。是本很全面性的漫畫初學者用教材。本書只注重於漫畫特有的知識,而沒有包含關於人體構圖或是透視之類等美術通用的知識,適合對美術有基礎,想往漫畫故事發展的人閱讀。
非常深入的是介紹各種品牌的畫材特性,像是圓筆尖就介紹了五款品牌。對於想成為職業漫畫家可能是很棒的資訊,但是對新手來說也許有些走火入魔。
由於涵蓋的範圍很大,所以故事構思方面也只是大略的提到重點,畫畫方面也比較沒有細節或撇步之類的,可能需要找些其他的輔助教材加以補充。
有幾個漫畫家(包跨大暮唯人)的製作步驟講解以及簡單訪談。比較有趣的是某篇漫畫從草圖一版,二版到完成的比較講解,可以瞭解職業漫畫家對於構圖修改的想法。

漫画的创作/故事情节篇/卡通漫画绘画技法
關於改版出版的方面:翻譯很差,不知所云的地方不少。而且有些地方插畫似乎放錯了位置,或者是改版的時候弄出許多小錯誤(像是漫畫舉例的部份左右對調)最後關於劇本的寫作方面因為是手寫而沒翻譯,十分偷懶。
關於原來內容的方面,本書是以劇本內容為中心的。書中空白地方不少,也有很多沒有意義的插畫來佔空間,其實應該作成小本的更薄的書才是。分段的地方也有不少的混亂,標題跟內文有些不搭的地方也不少。順序上更是沒有好好安排。
內容比較偏向於傳統一般漫畫的劇情發展,所以最好不要全盤接受,而是邊讀邊思考這些是否適合現代的眼光。
本書零零散散提到的一些要點或者提醒還是有可取之處,只是感覺不值得花錢買。

キラ☆キラ

キラ☆キラ(Kira☆Kira)是 Overdrive 在 2008 年發表的電子小說,主題圍繞著一個由學校社團所成立的樂團,這篇是關於 iPhone 上的英文版。

4/14

看完了第一部分,也就是學園祭的演出,算是中規中矩沒有多大震撼的劇情,唯一的亮點應該是屬於搞笑情節的生活髒話訓練吧,裡面連文靜的紗理奈都說出了「這茶真的 fuckin’ 佷好喝的,非常謝謝你 fuck」。不過其他方面實在沒什麼。到了第二部分,終於到了第一個 bad ending ,似乎在受記者採訪時沒有選擇開玩笑的話就會這樣,卻沒有什麼因果關係,讓人十分摸不著頭緒,難道教訓就是龐克大神看你不夠龐克就會處罰你嗎?

遊戲中的bug不少,比如說讀取進度時不時會讀到第一格或跳回標題,有些字少了空白符號,調整顯示速度的控制條標示相反(最快那端呈現的效果反而是最慢的),或者是對話內容跟語音沒有搭配,不過都不影響遊戲的進行。唯一最令我討厭的還是遊戲的控制介面。比如說要兩點同時觸控才會打開選項,要是使用者剛開始先沒有在標題閱讀使用說明,那麼進去以後就會像我一樣卡在遊戲中不知胡和才能存檔。雙點同時觸擊是佷困難的,往往會導致使用者多按好幾個對話。遊戲還有比較糟糕的是一些日本名詞都是直接音譯,對於不懂日文的人說應該都是看的一頭霧水。

4/15

終於到達劇情的第一個衝突點,也是從開場以來主角們第一次遇到挫折。

昨天跟人討論時也有討論到 Kira Kira 開頭像是白飯,不過搭配的萌份還是不大夠,所以跑劇情的動力較低。也有劇作家對於角色描寫較弱,但是劇情設想瘸是很強的(尤其是bad end),就待以後自己印證。

4/22

進入紗理奈路線並且結束了第二章,主角懷疑對方的告白(替對方設想?)還真是奇怪,另一半告白了沒有聽到回應還是傻傻的繼續日常生活routine也很奇怪。而主角的鹹豬手作為也是十分突然,第三章開始慢慢地把主角的過去攤開來了。

遊戲雖然說是全年齡版,不過其實更該被稱為閹割版,因為在工口劇情出現時,通常前戲還是會描述一點(全黑畫面但是有語音及文字),然後一跳就到結尾。這樣子的剪接佷容易讓我懷疑出版商就是要釣你上鉤去買完整版。

4/25

結束了紗理奈路線,最後的一章可以說是很老梗的「有錢岳父大人請成全吧」橋段,不過主角的選擇十分正確,沒有使用旁門左道等方法,整章讀起來算是十分爽快。因為是閹割版,所以最後只能推論出有很「精采」的工口場景。

5/1

きらり第二章結束,煞車沒了沿著路肩不要採油門就會停下來啦,怎麼大家都這麼笨?跑第三章目前還沒什麼興趣。

5/5

啊哈哈看太快,原來きらり已經(默)。因為這不是 true ending 所以不知道要怎麼評論,也許該說這個 ending 道出了現實失敗的一面?
只好繼續跑 Chie-nee 線,跑完了第二章,可以說有些拖戲,沒事把黑道牽扯進來其實沒多有趣,而且作者比較喜歡細細地描述一個狀況,所以常常會讀的很無聊。

5/9

結束!真難寫感想~可能要一段時間才會貼上總體感想。

延伸閱讀

Ruby 的 Method, lambda, Proc 跟 block

中文翻譯 所屬類別 意義 宣告例子 呼叫法 return的效果 參數數量檢查
Method 方法 Method 有名字的 Method def square(n)
n ** 2
end
method(:square) call 裡面的 return 不會造成上層的方法 return
(diminutive returns)
有,數量不同會出現 error
lambda Method 無名字的 Method
square = lambda { |n| n ** 2 }
call 裡面的 return 不會造成上層的方法 return
(diminutive returns)
有,數量不同會出現 error
Proc 程序片段 Proc 有名字的 Proc
在很多地方時重複呼叫用
square = Proc.new do |n|
  n ** 2
end
call
裡面的 return 會造成上層的方法 return
(因為return成為上層類別的一部分)
block Proc 無名字的 Proc
只在一個地方時用
{|n|
 n ** 2
}
yield
用 Proc 的 call 呼叫法
裡面的 return 會造成上層的方法 return
(因為return成為上層類別的一部分)

英雄傳說 VI 空之軌跡 SC 感想

英雄傳說 系列文章 8 之 8

SC 中文版還未上市前我就預購了,那時我連 FC 都還沒買到,只是因為看到網路上佳評如潮,然後中文初回限定版的內容又很華麗,所以怕以後買不到就敗家了。想不到買了三年後才破關XD

我之前只接觸過海之檻歌的前面一點點劇情,所以對於「英雄傳說」整個的系列的特色還不大瞭解,在玩了空之軌跡後,才知道這些特色,比如說:

  • 村民的對話常常會更新,也有自己的小故事。
  • 買賣的介面一樣方便,可以一次更改到十位數百位數。

過了三年才破關的理由很簡單,因為我認定這是大作,所以決定一定要完美破關,把每個支線任務解決,甚至要跟每個村民對話,所以無形中有了很大的壓力,時時刻刻手握著攻略本不放,不過還是不小心 miss 了一次支線任務,那次忘了存檔,要回朔個兩個小時,所以心灰意冷後一年沒碰。

展現在玩家眼前的世界觀設定很精緻完善,而劇情中又不時提到視線外其他國家的蛛絲馬跡,讓世界觀外部有擴增的空間。遊戲中提到的各種設定都只是冰山一角,例如「七至寶」「執行者」都有編號的存在,而組織如也有許多,給人大時代多種勢力互相角力的壯闊感。設定龐大(或者說設定架構出來的空白空間寬廣)所以要繼續出系列作也很方便。

遊戲中也有著各種要素,如任務、書籍、料理、釣魚等等,可以說遊戲性完善。這些設計跟主線劇情沒有很大的關係,不過卻能增加世界觀的深度。喜歡蒐集的玩家或是喜歡浸淫在架空世界的玩家應該都會很滿足。

空之軌跡中的 NPC 都有著自己的生活跟想法,可以看到老太太要找媳婦周遊各城,也可以看到情侶從相識到婚禮的支線事件,真的讓人有種活在那個世界的感覺。對我來說,要跟每個村民說話是一種甜蜜的負擔,雖然常常驚嘆於文編細膩的心思,賦予每個小角色生命,不過還是會覺得花得時間還是不夠划算,要是能有什麼辦法節省重複拜訪的時間就好了。不過這也許是因為我年紀已長的關係,在以前玩阿貓阿狗的時候,我曾會有「真希望有更多路人的對話」的期望,也不會覺得時間花的不值得,所以也許年紀跟遊玩的浸淫度真的有差。

再回到編劇,遊戲的文本龐大,而且還因狀況而有分支,讓玩家能體驗到不同角色產生不同對話的樂趣。這樣子的設計能讓玩家有處於真實世界的自由度,而要體驗不同的劇情可以再玩兩三次。玩家要是選對隊伍的話能看到驚喜(如送餅乾事件),有自由度跟沒自由度的設計感覺是有差別的。不過這就像是雙刃的劍,有時候卻能讓追求完美的玩家浪費許多時間,比如說最終戰每個中 boss 都與我方特定角色有特殊對話,可是最終戰的迷宮卻離換角色的基地隔了約三分鐘的距離,所以為了看到所有精彩對話,我必須來回兩地跑三四次。而且交通工具雖然有飛艇,但劇情上如果要達到完美,玩家卻得要走上繞國境兩圈半的路才行達成,看到其他的鎮民在最後一章的對話是很有趣啦,不過這樣子繞應該也多花了五小時吧,算是嚴重地浪費時間。

空之軌跡特別在意營造細膩的真實感,這在英雄傳說系列算是優點,令人稱道。比如說遊戲中並沒有能瞬間傳送的道具,因為設定中最快的交通辦法便是使用飛船,不然便是親自用雙腳旅行。而且在最終戰還特別溜達換角色也是很煞風景的(如同玩 FF VII 時在最終戰還在養陸行鳥),所以這也許是如此限制玩家的原因。不過期望玩家重玩兩三次遊戲本來就太一廂情願,某些時候我還是希望 Falcom 能折衷點,與其給玩家現實世界的可能性,蒐集玩一遍還蒐集不完的東西,還是最多以玩兩遍為極限作設計,體貼寸秒寸金的現在玩家。其他如書籍的蒐集,感覺還是得需要攻略才能完成,導致我在每個劇情段落都得戰戰兢兢地查攻略以免遺漏,不過最後拿到獎勵的興奮感其實只有半分鐘而已,實在有些不值得。

談到這裡也想離題一下,學kanashimi談談遊戲的本質。我在 FC 的時候有說過「我要玩遊戲,不要被遊戲玩」,所以在最終戰時還是決定用修改的方式節省時間。不過在此作時最後卻還是有種被遊戲玩的感覺。遊戲帶給我們什麼呢?我覺得在二十年後,這款遊戲給我值得記得的印象還是龐大的人物跟設定以及精美的劇情,但是我大概不會記得我得到了什麼神兵利器或是蒐集了多少料理。也許最「體諒沒有時間的人」的遊戲,是那種只把會留下記憶的地方加強,而不會留下印象的地方就盡量給玩家方便的遊戲。遊戲性跟劇情兩大元素在這裡也許是相斥的。話說回來我在 FC 花了 58 小時,SC 更是花了 89 小時,如果能保持超然的觀點玩遊戲,應該能靠忽略支線、使用修改器等等方式節省很多時間呀(懺悔中)。

本遊戲在劇情上最厲害的就是融合了推理的元素,讓玩家必須在關鍵劇情中運用腦袋才行得到獎勵。我最有印象的幾個任務有尋找兇手的以及靠對話說服公爵的那個,這種細膩的設計讓我感覺到這個世界並不只是依編劇需要而運作的無腦世界,而是需要靠智慧理解的真實世界,是讓作品的真實度增加的很大元素。不過也因為我太追求完美了,所以全程靠攻略過關所以喪失了許多樂趣,某種程度來看是本末倒置呀。

視覺設計很完美,尤其是最後的白色系天空之城,不但玩家沒有最終決戰的壓迫感,各處都有的補完設定的資訊讓逛迷宮反而是令人期待的。在音樂上,比起 SC 的開頭及結尾曲,我還是喜歡 FC 的結尾曲。最終 boss 戰的一系列音樂則是十分熱血,融合了聖樂與現代感覺得取豐,在情境的融合度上我直接打滿分。

本遊戲十分適合給想浸淫在架空世界的人玩,因為整個世界觀是這麼的可信,又這麼的有擴增性,算是所有世界觀設定者想抵達的目標。遊戲性豐富而且劇情品質成熟,搭配不錯的畫面以及音樂,可以說是很完美的 RPG ,我在此挑出來的問題也可以說是我個人的問題,或者是更加形而上的問題,沒有共鳴證明你是正常人。

我應該暫時不會碰 3rd 吧XD 春宵苦短,一寸光陰一寸金呀。

相關閱讀