Database Design for Mere Mortals – Michael J. Hernandez

我學懂寫SQL已經很多年,但我從來沒有正式地學習如何設計一個database,大多數只是隨便地上網找些SQL例子現炒現賣。這本課本是database設計的天書,已經有二十五年歷史出版至第四版。整本書內沒有教一句SQL語法,若果連SQL還未懂的話,恐怕這本書太過艱深了。

有三分一本書的篇幅,談論應該如何訪問database的用家,在開始設計database之前,先找出database需要儲存的資料和要做什麼類型的query。現在看完書後回顧重溫,覺得這部份有點是想當然爾的常識,但我初次閱讀那些章節時,很有增廣見聞的新鮮感。我工作上寫了程式幾十年,那些系統需求的規格,自問見過不少亦做過不少,但我始終是邊做邊學紅褲子出身,第一次接觸如此有系統寫系統需求的方法。

Relational database是什麼,說到底就是一個個table,寫著一行行的資料,每筆資料有很多field載著data,而每個table之間用key去互相連系。在看這本書前,我連什麼是normal form也不知道,不過看完書,其實我還是一知半解,因為normal form實在太深了。作者教用另一個設計方法,一步步把資料的fields組合為不同的tables。由細到大一層層建築上去,比起從一個大table開始,然後用normal form去分拆成不同的tables,雖然工序更多步驟更費神,但初學者比較容易明白。

Database設計最重要是資料的可靠性,「唯一」就是設計的關鍵,每一項資料只存在一個地方,每一個地方只儲存一項資料。可以計算出來的資料,就不要浪費地方去存放,有需要加速就建立view來暫存。聽起來好像很容易,實際設計database時,要很有耐心去逐項逐項校對,才不會不小心產生設計上的缺陷。

蜘蛛俠:飛躍蜘蛛宇宙

看電影前,我並不知道原來只有半套電影,真正結局要等待明年的第三集,如果早知道故事半天吊,我便索性等三部曲推出後,才一口氣觀看。不知不覺《蜘蛛俠:跳入蜘蛛宇宙》已經是五年前的出品,當年不單止奪下奧斯卡最佳動畫,更開創出讓人眼前一亮的動畫電影風格,有別於傳統Pixar迪士尼夢工場的動畫。因為上集拍得實在太好,第二集我基本上我完全沒有去看任何電影資訊下,就投下信心一票前來觀看。

上一集新穎的畫風,今集又更上一層樓。開始蜘蛛女世界的追逐戰,拍出把紙本漫畫分格動起來的視覺效果,畫面豐富得讓人目不矎昅,有讓人有想按定格停鏡把看清楚的衝動。如果在電影院大銀幕浸沉式地專心觀看,大慨充滿視覺效果刺激享受。可惜我在家中與小孩一起看,還有隻狗在梳化前恍恍來來去,導演原來的理想演出大打折扣,變得有點兒資訊負荷過量,眼睛跟不上。

由於故事只是說了一半,能否有圓滿結局還未能下定論。上集有六七個不同版本的蜘蛛俠出場,今集更是來個大集合,過千個不同版本的蜘蛛俠同場演出,玩了很多網絡迷因。新配角有印度蜘蛛俠和蜘蛛punk,上集的正常蜘蛛俠也有出場,生了個女變成湊仔公很搞笑。

是否一定要死了個叔叔,蜘蛛俠才會成為蜘蛛俠呢,編劇大慨是想玩打破官方設定的第四面牆。保護在眾多蜘蛛世界中,必然發生的官方事件的進行,所以Miles的父親必需要被殺。用來作故事推進器的劇情道具,令Miles與所有蜘蛛俠為敵,上演逃出蜘蛛俠總部,就不要深究其文學意義了。在商業掛帥的漫畫IP產業,官方設定的歷史連續性,早已被打得支離破碎,現在才來煞有介事地討論文本的本質,就未免太過虛偽了。

蜘蛛總部大逃亡拍得好笑又好看,但作為第二集的壓軸戲未免不足。至於本集的正印大奸角班點人,怎樣看也似是一個搞笑角色,下半部直情失人間蒸發。結尾Miles送錯去另一個宇宙,遇上邪惡版本的自已,故事就這樣未完待續。不過不論怎樣也好,第三集我是一定會看的。

閃電俠

2023年版的《閃電俠》票房失利,完全是意料中事,主角閃電俠本身在正義聯盟中最弱氣,而這部電影的主題多重宇宙,近年已經被對家Marvel玩爛玩厭。如果不是因為對蝙蝠俠的情意結,我一定不會看這套電影,大慨看這電影的大部份觀眾,都是因為蝙蝠俠才進場吧。

雖然蝙蝠俠早己被重啟數次,每次都各有特色各自精彩,但Tim Burton版本永遠是我最喜愛的蝙蝠俠。在電影中Michael Keaton重出江湖演蝙蝠俠,還有初代蝙蝠車蝙蝠洞,蝙蝠戰機大顯神威,算是對蝙蝠迷交足功課。片尾四代Geroge Clooney客串出場更是神來之筆,可惜沒有三代Val Kilmer。

閃電俠跑得快過光速,可以回到未來去改變歷史。這天他心血來潮,跑回過去救了被殺的媽媽,不單止改寫了未來,甚至跑到了另一條時間線的平衝宇宙。在新宇宙中他遇見了年輕的自已,於是有一老一少兩個閃電俠。這個新宇宙沒有神奇女俠、水行俠和鋼骨,而超人則變了性做女人(噢,不對,那個其實是表妹超少女)。人腳不齊但有兩個閃電俠的正義聯盟,要對付前來毀滅地球超人的死對頭薩德將軍。

劇本的最大敗筆,是就算可以時光逆轉,主角們始終打不贏薩德將軍,超少女和蝙蝠俠命中注定必死,新平衝宇宙的地球難逃被毀滅的命運。老閃電俠才不過試了兩次,就放棄治療打算投降,再次回到過去讓媽媽被殺還原歷史好了。反而少閃電俠更像是正印主角,堅持永不放棄,不斷回到過去,誓要找出拯救地球的方法。

不知經過多少次輪迴,少閃電俠外表是黑化了,不過他似乎又沒有做什麼壞事,算不上是人格上的黑化,可能只是太久沒有洗澡身上有很多老泥。不停修改歷史讓多個平衝宇宙相撞,見到不同版本的超人和閃電俠。接下去會是全部宇宙毀滅,還是大融合產生新的大統一宇宙,電影似乎忘記了說。打了幾回嘴炮,黑閃電俠忽然想殺老閃電俠,少閃電俠挺身擋刀掛了,未來的黑閃電俠就消失了,於是老閃電俠可以回到過去殺媽媽。我看遍歷來眾多時光旅行電影,這套戲的時間旅行理論完全狗屁不通。反正也要是回去重寫歷史,為什麼不先打敗薩德將軍呢,我還以為其他世界的超人會走過來幫忙,誰知他們只是站在那兒看。救不到超少女和蝙蝠俠,黑閃電和少閃電又自殺,結局非常反高潮,完全不是味兒,觀眾實在很難喜歡這電影。

好吧,超級英雄電影劇情差也算了,但這套電影的特效和動作場面,同樣也是不合格。閃電俠開超能力,其他人定鏡初看時很有趣,開場拯救從天掉下來的嬰兒就很好笑,但看多幾次就沒有新鮮感,甚至有點悶。時光屋入面的電腦繪圖很粗糙,人物的臉相表情非常生硬古怪,怎麼不用Stable Diffusion或者Midjournery去執番靚佢。最不合理是為什麼少閃電俠打不贏薩德將軍,閃電俠的速度可以別人的停止時間,又有無敵的頻率震動,他又入手了可以切開敵軍裝甲的臂刃,才剛剛輕鬆地殺了薩德的副手,為什麼不能照版煮碗對付薩德?

《閃電俠》後由超人開始舖排到正義聯盟的DC宇宙正式玩完。反正超級英雄電影不停拍了十幾二十年,觀眾早已看厭了續集再續集,然後又重啟再續集,是時候讓原創電影做主流了。

加拿大現金投資

自從零八金融海嘯以後,歐美央行推行量化寬鬆,長期零利率的金融政策。股神Ray Dailo曾說過「現金是垃圾」,因為手持現金沒有任何利息收入。隨著疫情過後,各國央行大幅加息對抗通脹,一年連加五厘幾息,2022年大熊市更出現股債齊跌,傳統的60/40投資佈局失效,現金再度重拾投資價值。

有些朋友移民加拿大,把香港那層樓賣掉,帶了一大舊錢過來。誰也不知道今年的反彈是牛市重臨,還是熊市終極一跌前的回光返照,手持現金無驚無險每年也有5%回報,大可以耐心看準合適時機才入市。這篇文章為你介紹在加拿大投資現金的各種選擇。

1。銀行

銀行有分支票戶口和儲蓄戶口,支票戶口仍然接近零利率,基本上只是用來出糧,放足夠找各種卡數的金額。一般儲蓄戶口也很低利率,只有一兩厘,除非遇上銀行吸引新客戶,做五厘以上的限時優惠,基本上可以不用理會。GIC是有政府保障的定期存款,可以通過銀行購買,不怕銀行倒閉拿不回錢,但缺點是不能提早提款,否則會被充公利息。一年定期息口很好,有5.5%甚至5.75%,由於息口倒掛,兩年定期息口比一年低,不建議做多於一年的定期。但自從零八金融海嘯後,加拿大推行銀行金融改革,銀行體系非常健康。再者加拿大只有幾間大到不能倒的銀行,銀行有事政府一定會出手相救,GIC的政府保證意義不大,反而資金被鎖死,如果股市大跌就無法能趁低吸納了。

2。Money Market Fund (MMF)

MMF同樣也可以在銀行購買,不需要開投資戶口。MMF基本上等於現金,基金入面主要持有短期國債或投資級別企業的債,亦會放入央行的特別戶口淨收息。MMF經由加拿大政府監管,雖然不似GIC有保證,理論上MMF是可以爆煲,但實際上是不可能發生的事。買賣MMF非常簡單,可以隨時把本金和利息領回。MMF的缺點是基金有管理費,而MMF利息雖然貼近央行厘率,但還有更高厘率的選擇。

3。High Interest Savings Account ETF (HISA)

HISA要有股票戶口才可以購買,基本上就是直接在TSX交易的EFT基金,若果是老人家或不懂英語,會比買MMF困難少少,但這個年頭誰人沒有股票戶口。HISA同樣也是有政府監管,持有的內容與MMF大同小異,也是理論上可以爆煲,實際上不可能有事。最大幾隻的股票代號是CSAV,HISA,CASH,PSA。HISA的利率比MMF好少少,遇有一個最大的優點,每個月派息前賣出,派息後再買入,可以把利息收入變為資產增值,後者的稅率比較低,要計算扣除買賣手續費後是否除笨有精。HISA缺點是不能在些某銀行(TD,RY,BMO)的股票戶口購買,因為禁止與自家的MMF爭生意,HSBC,CIBC或IB的股票戶口才可以購買。

4。短期國債

國債是零風險的投資,因為國家是不可能破產的,央行可以無限量地印銀總去還債。投資長期國債的風險是如果加息,就會出現掙息蝕價的情況,很簡單的discount rate的計算,中學數學科學複息課時有教,短期國債就沒有這個問題。購買加拿大國債的選擇不多,開價也不靚,如果不怕美金匯率波動,美國國債有很更多選擇。主要是買國債ETF,BILS是一籃子3-12個月,TBIL是3個月,XBIL是6個月,OBIL是一年期,再遠那些會受加息影響,不能歸類為零風險百份百保本的現金投資。與HISA一樣,國債ETF也可以每月買賣把利息收入變為產增值,但會有美元匯價的風險。

也許你會說,在加息接近尾聲時,才說現金投資,是不是遲了點。當市場主流將目光放在央行何時開始減息,不是應該手持長債搏升值嗎?這篇文章我是2022年頭,剛開始加息時已經打算寫,結果一拖再拖,拖到我開始把手持的HISA和XBIL逐步分段轉去長債才動筆。如果過兩年通脹重臨,央行又要開始加息抗通脹,到時把這篇文拿出來重溫吧。

奢侈名牌的價值基本分析

當一個人有錢到某個程度,購買慾就會從講求純實用性的名牌,把目光轉移至奢侈品牌上。若果源用分析低價貨和中價貨的角度,追求高CP值性價比例,只會得出買奢侈品牌是非理性的荒謬結論。不計洗錢唔抹腳的二世祖,大部份購買奢移品牌的人,都是社會上的成功人仕,他們用辛苦工作賺到的錢,去換取讓他們開心的物質生活,在經濟學上是可以作出合理的解釋。

分析中低價貨的性價比的最大盲點,是用法定貨幣作為換算單位,計算多少美元或多少港元,去換取多某物件的多少功用。可是貨幣對於每個人的價值也不同,一萬元對升斗市民可能是一個月的收入,但對億萬富翁來說,只不過是掉落地上也不在意的零錢。上天在另一處是很公平的,每個人每天就只有廿四小時,因此計算奢侈品的性價比時,應該以購物者付出的勞動時間作為基數。換一句話說每個人的性價比計算也不相同,當你越有錢就越不介付出更高的價格,去換取那尖端接近吹毛求疵的品質。

一些品質上有客觀性差異的奢侈品牌,而物件的高價格源自製高昂的造成本,如超級跑車和名錶等,兩件價位等級相近的品牌,是比較容易決定那件比較優勝,是否值得付出那個時間以位單位的價格。奢侈品的二手價和限量版炒賣價,很大程度上基於普通版的全新價格去決定,所以不論是以投資角度,還是用抵唔抵買的心態,也要懂對通販新貨的定價格作基本分析。

一件商品的售價,可以大至分為四個部份。一,製造設計開發的成本,只要廠商沒有亂來,生產出一些價值消耗的垃圾(如Vertu電話),基本上就是一分錢一分貨。二,提供服務的成本,這部份的價值有些是付帶在商品上,如維修,有些則是買家在享受了購買過程時而價值消散,如名店的服務,不應計算在商品的價值之內,特別是計算二手轉賣的價格。三,廠商市場推廣行銷的費用,這部份消費者完全沒法享用,對消費者而言只是純萃不必要的成本。四,最後就是廠商的利潤了,這部份比較特別,因為利潤量化了消費者的主觀需求。越多人想要的東西,廠商越有議價能力,產生出更多的利潤。會蝕錢的奢侈品的品牌,大慨是正在衰落,消費者應該避之則吉吧。

說完名牌基本分析的理論,引用些實際例子去看看。詳細準確的數字,可以從公司年報或行內的專業資訊找到,現在只是寫遊戲文章,貪方便數字我直接問ChatGPT,不一定百份百準確。先來看名車的數字

CompanyProfit MarginMarketing Cost
Lamborghini28.9%13.5%
Ferrari23.61%12.5%
Porsche17.7%10.0%
BMW10.1%5.0%
Mercedes9.2%4.5%
Toyota6.61%3.5%

基本上越高檔的名車盈利能力越高,但同時花費在宣傳市場推廣亦越高。再來看看名錶的數字

CompanyProfit MarginMarketing Cost
Omega23.61%12.5%
Rolex28.9%13.5%
Seiko10.1%5.0%
Patek Philippe20.0%10.0%
Vacheron Constantin17.5%8.5%
Audemars Piguet15.0%7.5%

精工錶不是名牌,利潤最低完全不意外。但三大名錶的利潤,竟然比勞力士低,是三大名錶相對上物有所值,還是勞士力太受歡迎呢?再來看看手袋的數字

CompanyProfit MarginMarketing Cost
Hermès28.0%18.0%
Louis Vuitton25.0%15.0%
Gucci22.0%13.0%
Prada20.0%12.0%
Burberry18.0%10.0%
Coach16.0%9.0%

我完全不懂名牌手袋的行程,從利潤高低來看排名,似乎與我所知手袋階級差不多,只是Burberry比Gucci排名低有點意外,我認為Burberry的格仔袋比較好看。最後看看有什麼名牌正在蝕錢,這些牌子我是聽過的,但它們是否正在人氣衰退,要有勞懂行情的朋友代我求證了。

CompanyLoss
Ralph Lauren$617 million
Michael Kors$227 million
Kate Spade$70 million
Brooks Brothers$30 million

有人會說,千金難買心頭好,只要買到喜愛的東西,就不要計較它的價格。亦有人說,付擔不起就不要學人買名牌。實情是除非你是億萬富翁,上述所有名牌對你來說都只是零錢,不然你在選擇購買的過程中,也是要作出取捨的。到底買三隻勞力士好,還是買一隻PP好呢?又或者買了一隻PP,只好放棄法拉利改開波子。若果是結了婚的男仕,給自己買了一隻奧米加後,應該要買那個級數的手袋給老婆,才不會厚此薄彼呢?奢侈牌子的品味就是如何用最有效率地運用相同的金錢(以時間為單位),換取最高價值的物件或服務,得到最大程度的炫燿,不只是財大氣粗看到價格最高就去買。要比較誰更有錢的話,直接看銀行戶口不是更方便嗎?