iT邦幫忙

0

資料庫的模式選擇

各位大大好,承接上一個問題,我思考了以下事情
上一個問題是,MySQL的SQL mode是否要保留no zero in data/no zero date,這兩個選項保留起來的作用是甚麼?
https://ithelp.ithome.com.tw/questions/10202144

經過此次的事件後,原本打算使用STRICT_TRANS_TABLES當成global sql_mode
但想到其實在insert資料的時候,我並沒有辦法確定每一次的資料都會是很規律的符合我的table設定
若資料筆數一多的時候,使用嚴格模式幾乎就可以預見會有一定比例的資料筆數遺失
請問各位前輩,在這樣的狀況下,各位會怎麼思考/規劃資料庫?

2 個回答

1
㊣浩瀚星空㊣
iT邦超人 1 級 ‧ 2021-02-06 23:33:58
最佳解答

一般使用嚴格模式的sql模式下。
就得搭配嚴格模式的程式語法處理。

所有的欄位處理、參數都要事先宣告好類型。不得一個參數可以字串又可以數值的情況。
只要程式規劃有做好。
自然就不用擔心嚴格模式的sql。

ps:我sql也是用嚴格模式。
我家工程師對我的要求很感冒。
但這就是我要逼他們程式得要宣告好寫法。

看更多先前的回應...收起先前的回應...
ckp6250 iT邦研究生 1 級 ‧ 2021-02-07 06:03:08 檢舉

我在替一個客戶寫轉檔程式時發現,某國內軟體公司就很偷懶,所有的欄位都只用文字欄位,因此,出現了【05/32】這種日期。

我請公司去電該軟體公司要求做好防呆措施,軟體公司表示這是使用者的問題,明知沒有05/32,怎麼可以輸入05/32呢?若要防呆,還要加錢。

當然,也不止日期不防呆,幾乎任何欄位都不防呆,比如【發票號碼】可以有9個字的,也可以有11個字,民國2385年出生也可以。

從此以後,我對該軟體公司,一點敬意也沒有。

這是事實。軟體的使用度情況依價格不同處理。
不能怪軟體公司不做防呆。

to 浩瀚星空
就我對上面的理解,應該是會發生下面的情況:

在使用嚴格模式下,做大筆資料輸入時,就會設計檢測或是防呆以防資料輸入有誤,或是先使用可以看資料的工具(像是openrefine)

可以這麼理解嗎?

froce iT邦大師 1 級 ‧ 2021-02-08 08:09:20 檢舉

不能怪軟體公司不做防呆

這我就不認同了...
sql明明就有date,你偏偏要用str,難用就算了,還不防呆。
這種軟體公司早早拒絕往來比較好。

資料規劃跟防呆是扯不上關係的。

但有些情況下又非得要用str。
主要是看規劃設計。

而且有時做防呆,還會被客戶給「靠xx」

0
ckp6250
iT邦研究生 1 級 ‧ 2021-02-06 21:09:10

「嚴官府,出厚賊,嚴父母,出阿里不達」

我要發表回答

立即登入回答