<刁鑽專業-程式設計SQL-2> 沈源有 2025.1223

更新 發佈閱讀 4 分鐘

<刁鑽專業-程式設計SQL-2> 沈源有 2025.1223

在 SQL Server, 能夠設定變數型別 numeric(n,0),是「SQL Server 設計欠周到的bug」。

以我程式設計的經驗:

- 只要user能誤用而我的程式卻毫無作為, 那就是bug。

- 系統設計者若只顧標準,不顧防呆,就是欠周到。



--

# 問: 系統設計的兩難?

- 標準遵循:SQL Server必須符合 ANSI SQL 標準,標準允許 numeric(p, s),即使 s=0。

- 防呆設計:如果系統強制阻止「不合理」的用法,就能避免半吊子誤用,但同時也限制了專業人士的特殊需求。

- 專業要求 → 要user自己做正確選擇, 要知道什麼時候用整數,什麼時候用精確小數。


答:

完全沒有問題, 可以用 byte, small int, int, big int 加上 約束條件(上限, 下限.)

byte, small int, int, big int:原生整數型別,效能最佳。

CHECK 約束:直接定義上下限,符合業務邏輯。

結果:既保留了專業人士的精準控制,又避免了半吊子誤用 numeric(n,0)。


系統防呆可能方式:

1. 直接限制, 顯示警告訊息. 規則: type numeric(n, m) - 限制 m > 0 且 m < n

2. SQL Server 看到 numeric(n, 0), 在內部儲存, 運算時, 要自動改為 smallint / int / bigint 加上 限制



--

# 問: 潛在挑戰

- 透明度:使用者可能不知道系統已自動轉換,導致預期與實際不一致。

- 跨平台相容性:其他資料庫可能仍保留 numeric(5,0),移植時會出現差異。

- 設計哲學:SQL Server目前選擇「自由優先」,而不是「防呆優先」。


答:

全部都不成立.

透明度:不需要USER知道, 如果USER要知道, 自己讀文件.

或者完全可以在系統層面顯示「內部最佳化為 int/smallint/bigint」,讓使用者知道,不存在「不一致」問題。

跨平台相容性:如果 SQL Server 在內部最佳化,但對外仍維持 numeric(5,0) 的宣告,跨平台移植時依然相容,差異根本不存在。

設計哲學:說「自由優先」只是藉口。真正周到的設計應該是「自由 + 防呆 + 最佳化」三者並存,並不是二選一。



--

# 車子 vs 系統設計

系統設計:如果程式有一個功能,使用者一旦誤用就會造成隱性危險,而系統卻毫無防呆,那就是程式設計者的 Bug。

車子設計:就像車子, 你不能莫名其妙做一個開關會讓車子出問題, 然後要駕駛不要去按. 這是設計者的責任.

只要使用者能誤用而程式卻毫無作為,那就是 Bug,是「程式設計者的錯」, 而不是「使用者的錯」。

程式設計者的責任不只是「能跑」,也要能「能防止誤跑」。

程式設計就像造車,不能把危險交給使用者自己避免。



---

後記:

我承認我也是半吊子.

現在知識爆炸的世界, 誰不是半吊子?


留言
avatar-img
Louis Shen的沙龍
0會員
18內容數
刁鑽地刁鑽刁鑽. 刁鑽嗎? 理解刁鑽,透視刁鑽, 驗證刁鑽,實踐刁鑽, 駕馭刁鑽,遊戲刁鑽, 化身刁鑽,刁鑽我。
Louis Shen的沙龍的其他內容
2025/12/24
<刁鑽專業-程式設計SQL-1> 沈源有 2025.1223 在 SQL Server, 用以下 command 建立一個table CREATE TABLE [PERSON]( [Id] [bigint] IDENTITY(1,1) NOT NULL, [NAME] [va
2025/12/24
<刁鑽專業-程式設計SQL-1> 沈源有 2025.1223 在 SQL Server, 用以下 command 建立一個table CREATE TABLE [PERSON]( [Id] [bigint] IDENTITY(1,1) NOT NULL, [NAME] [va
2025/12/22
<刁鑽哲學-通透> 沈源有 2025.1222 老子: 道可道, 非常道. 讓我沈源來補充我的理解: 道不道, 不知道. 孔子: 知我者春秋, 罪我者春秋. 依我沈源有的理解替老子說: 老子: 道德經是明知不可說, 但又不得不說. 所以老子才要莫名其妙地"道"出"
2025/12/22
<刁鑽哲學-通透> 沈源有 2025.1222 老子: 道可道, 非常道. 讓我沈源來補充我的理解: 道不道, 不知道. 孔子: 知我者春秋, 罪我者春秋. 依我沈源有的理解替老子說: 老子: 道德經是明知不可說, 但又不得不說. 所以老子才要莫名其妙地"道"出"
2025/12/19
<刁鑽歷史-律與率> 沈源有 2025.1219 律與率 這二字, 古人用相同/相似發音, 不像是巧合, 對嗎? 🔹 律 - 音律, 法律, 規律, 定律 - 外在的秩序, 規範, 法則。 - 限制與控制, 約束, 框架。 - 是「框架」, 建立秩序的規範。
2025/12/19
<刁鑽歷史-律與率> 沈源有 2025.1219 律與率 這二字, 古人用相同/相似發音, 不像是巧合, 對嗎? 🔹 律 - 音律, 法律, 規律, 定律 - 外在的秩序, 規範, 法則。 - 限制與控制, 約束, 框架。 - 是「框架」, 建立秩序的規範。
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
市場經驗拉長之後,很多投資人都會遇到同一個問題:不是方向看錯,而是部位太集中個股,常常跟大趨勢脫節。 早年的台股環境,中小股非常吃香,反而權值股不動,但QE量化寬鬆後,特別是疫情之後,後疫情時代,鈔票大量在股市走動,這些大資金只能往權值股走,因此早年小P的策略偏向中小型個股,但近年AI興起,高技術
Thumbnail
市場經驗拉長之後,很多投資人都會遇到同一個問題:不是方向看錯,而是部位太集中個股,常常跟大趨勢脫節。 早年的台股環境,中小股非常吃香,反而權值股不動,但QE量化寬鬆後,特別是疫情之後,後疫情時代,鈔票大量在股市走動,這些大資金只能往權值股走,因此早年小P的策略偏向中小型個股,但近年AI興起,高技術
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
2025年精選21位大屌師傅,最大值21,絕對讓您享受一整年! 文末有贊助內容,可解鎖完整師傅與武器配對,感謝您的贊助,讓我們許願池能永續經營下去,我們成立七年來,大大的減少同志朋友在按摩時被詐騙的數量,讓大家減少踩雷的,讓督促店家提供更高的服務品質。 SSB SPA 小羊 170CM
Thumbnail
2025年精選21位大屌師傅,最大值21,絕對讓您享受一整年! 文末有贊助內容,可解鎖完整師傅與武器配對,感謝您的贊助,讓我們許願池能永續經營下去,我們成立七年來,大大的減少同志朋友在按摩時被詐騙的數量,讓大家減少踩雷的,讓督促店家提供更高的服務品質。 SSB SPA 小羊 170CM
Thumbnail
之前改裝升級Dahon Vitesse D7時發現,Dahon的機構設計工程師專業素養非常高,各種組裝尺寸拿捏得異常緊湊;此次則見證到另一個更古老的版本,如下圖所示,而且是連型號都查不到的單速版本,只知道在社群內都稱呼其為老貂。透過老貂的拆裝,再次證明了,Dahon的細節拿捏顯然是一脈相承的,很可能
Thumbnail
之前改裝升級Dahon Vitesse D7時發現,Dahon的機構設計工程師專業素養非常高,各種組裝尺寸拿捏得異常緊湊;此次則見證到另一個更古老的版本,如下圖所示,而且是連型號都查不到的單速版本,只知道在社群內都稱呼其為老貂。透過老貂的拆裝,再次證明了,Dahon的細節拿捏顯然是一脈相承的,很可能
Thumbnail
宰我問曰:『仁者,雖告之曰:「井有仁焉。」其從之也?』子曰:『何為其然也?君子可逝也,不可陷也;可欺也,不可罔也』(雍也第六)。  井,不能狹義地僅理解為井,而是比喻危險的境地。逝,去;罔,迷惑。   宰我有很強的獨立思考能力,有懷疑精神,不人云亦云,不盲從權威。這
Thumbnail
宰我問曰:『仁者,雖告之曰:「井有仁焉。」其從之也?』子曰:『何為其然也?君子可逝也,不可陷也;可欺也,不可罔也』(雍也第六)。  井,不能狹義地僅理解為井,而是比喻危險的境地。逝,去;罔,迷惑。   宰我有很強的獨立思考能力,有懷疑精神,不人云亦云,不盲從權威。這
Thumbnail
自從開始玩直播和拍開箱影片以後深深覺得房間的光源不足 我們小孩房因為只有小小的大約四五坪,為了擴大使用空間,當初是設計高架床,現在都在床底下拍攝節目,不過透過螢幕就會覺得床底下的燈源略顯不足,不夠亮的話就會使得拍攝的畫質顆粒比較粗,模模糊糊得很難看… 還有一個問題是在床上沒有辦法關燈,雖然當初有
Thumbnail
自從開始玩直播和拍開箱影片以後深深覺得房間的光源不足 我們小孩房因為只有小小的大約四五坪,為了擴大使用空間,當初是設計高架床,現在都在床底下拍攝節目,不過透過螢幕就會覺得床底下的燈源略顯不足,不夠亮的話就會使得拍攝的畫質顆粒比較粗,模模糊糊得很難看… 還有一個問題是在床上沒有辦法關燈,雖然當初有
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News