顯示廣告
隱藏 ✕
※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2017-12-03 20:34:21
看板 Soft_Job
作者 littlethe (東周流浪漢)
標題 [討論] 資料庫和SQL的專業是不是很不被重視?
時間 Mon Nov 27 02:24:33 2017


HI大家好,

小弟我是很喜歡研究資料庫的人,

但待過幾間公司後,

真的對資料庫或SQL看到好多很奇怪的事,

我不知道是不是我運氣太差一直遇到,

還是資料庫真的很不被重視,


我遇到狀況有:


1.主管只准許用left join來關連表,其他join不准用,

也不准用SP或變數或其他T-SQL的東西,只能在程式中拼接sql


2.表和欄位命名,用拼音的第一個字母組成,

例如客戶主檔就命名為KHZD,姓名就叫XM


3.時間全部都用字元存,而且有的存的方式是"2017/11/27 01:27:30"

都用字元存之前有板友聊過,但這種存法我相信比他看到的更誇張


4.做任何動作都塞好幾列log,幾天之內就加了幾千萬列log,把硬碟給塞爆


5.一個表搞到上百個欄位,大部份是沒用或重覆,或是可以分割


6.沒設主檔,主檔的資料全部寫在明細裡,

要秀主檔的資料時,

就把明細group by來找,

明細也非常非常的大


7.重要的表沒有欄位記錄修改時間


8.重要的表沒有加主鍵,重覆的資料可以直接加上去


9.在SP裡,把sql存在變數裡拼接,而不是直接寫sql跑,

例如

declare @sql varchar(500)

set @sql = 'select * from table_a'

exec(@sql)

而且這樣寫不是因為有特殊目的,是一般的sp對方也這樣寫,直接寫sql都可以跑的


10.欄位名字用a,b,c,d命名,各種資料都往裡面塞,

所以a有時候是姓名,有時候是物品名,有時候是其他東西


11.拿之前的資料庫改,但裡面表名和欄位名都不改,

有什麼就塞,變成部門資料塞的是門店資料,

銷售金額裡存的不是銷售金額,

客戶編號存的是票據單號


12.要用其他資料庫的表時(兩個資料庫在同一台伺服器上),不是直接連結,

而是定時把另一個資料庫的表複製到自己資料庫,再去讀取


如果只是一家公司資料庫亂設也就算了,

但我現在已經連續看到3家資料庫都亂七八糟,

我真的很好奇是不是一般公司是不重視資料庫?

也很少看到有人懂資料庫,

而且很多狀況其實已經不是不專業問題,

是沒常識了...


我自己是有做過web和app,

業界的web和app當然問題也很多,

但問題的誇張程度都沒有資料庫來得誇張,

資料庫不是非常重要的地方嗎?

怎麼會出現那麼多奇怪的事?

是我太大驚小怪了嗎?

還是是我運氣不好,

其實大部份公司的資料庫還算正常,不會這樣?

--
和會你走到最後的人,
不是你最愛的人,
也不是最愛你的人,
而是和你最有緣的人

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 116.232.251.210
※ 文章代碼(AID): #1Q6mRgE6 (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1511720682.A.386.html
※ 編輯: littlethe (116.232.251.210), 11/27/2017 02:35:34
※ 編輯: littlethe (116.232.251.210), 11/27/2017 02:41:00
expup: 你遇到的是常態 看開點1F 11/27 02:46
aoksc: 應該算是你剛好都遇到技術都很low的公司吧…2F 11/27 02:46
aoksc: 我個人遇到的大概70~80%都算正常
aoksc: 我是有遇過單據流水號沒設pk 然後程式又寫超爛會重號
littlethe: 我的流水號是會跑出null值的5F 11/27 03:13
ripple0129: 不是不重視,是你在台灣6F 11/27 03:29
newversion: 因為還沒遇到 「每一秒鐘 38 萬筆交易」這種需求7F 11/27 03:44
deforest111: 我覺得有幾條是擔心資料外洩的保護方式(腦補?8F 11/27 05:24
evabioz: 古董級的技術債...9F 11/27 06:42
drajan: 就是一些連資料庫實務都完全不懂的門外漢10F 11/27 07:03
PasserDin: 411F 11/27 07:19
Beramode: 歷史共業12F 11/27 07:33
JUNYOU01: 一堆連正規化都不知道,以為加個pid欄位就是 …13F 11/27 07:35
ChungLi5566: 傳產很常見 系統能動就好14F 11/27 07:52
keyboard56: 一般狀況是程式能動就好,等有遇到問題再解就好,導致15F 11/27 07:53
keyboard56: 後續接手的人不好維護,規劃不好的地方因爲年代久遠也
keyboard56: 不會去動它,就這樣循環下去...
bill0205: 遇到很多前輩也是這種的+118F 11/27 07:57
dreamnook: 所謂技術債19F 11/27 08:11
knives: 因為你在台灣+120F 11/27 08:12
Hordor: 因為你只能進去這種公司21F 11/27 08:25
iamshiao: 這是常態,因為資料庫上線後才發現設計瑕疵但資料已經進22F 11/27 08:26
iamshiao: 了,回頭修正成本很高,很多人選擇將錯就錯。
testPtt: 用這種方式排擠高手自己位子才坐得穩24F 11/27 08:31
hotkt247: 是不是ㄧ路用Left join真的要看狀況耶,有時需要inner j25F 11/27 08:35
hotkt247: oin就不用再加where條件了。不能用SP也好奇怪呀@@,不過
hotkt247: 還好我們公司沒有你說的那些限制
ChoDino: 從沒看過你說的這些設計,加油點到知名公司吧。28F 11/27 08:38
GoalBased: 自己選技術差的公司再來怪公司技術差29F 11/27 08:44
oneheat: datetime會有null的問題的樣子30F 11/27 08:44
vi000246: 還沒遇過 有幾點都好扯31F 11/27 08:51
lgzenith: log這條很難說正不正確,很多時候是辦公室政治問題32F 11/27 09:04
johnny94: 看到你這篇我真的心有戚戚焉33F 11/27 09:06
fidelity77: 臺灣軟體很多都是能work 就好了,只注重成本低,做得34F 11/27 09:07
fidelity77: 快
fidelity77: 好不好維護誰管你
tedmax100: 台灣的管理高層,99%都沒有技術底37F 11/27 09:13
f124: 資料庫又沒專人在管 系統可以動不要掛掉就好了你還要要啥38F 11/27 09:16
ccc1001: 我覺得你這是第八手了,趕快逃吧39F 11/27 09:26
ccc1001: 從沒遇過這種
cheng19: 前公司有碰過不准用SP 不過我沒問原因就是了41F 11/27 09:35
earny: 聽朋友說:請主管開char(21) 但主管堅持開int,問題是資料42F 11/27 09:47
earny: 長度就是21碼!雖然都是數字,但Int就是無法存進去
earny: 朋友的主管請他回去想辦法,你知道int跟char(21)差多少嗎?
earny: 還拿出紙筆算給朋友看....
cpper:  如果你有Oracle資料庫管理師證照又去找Oracle資料庫的管理46F 11/27 10:05
cpper: 工作,就不會發生這種你遇到的事情了
jj0321: 某幾樓真愛講幹話48F 11/27 10:13
maxqq: 老闆通常都是,這個不重要以後再用。49F 11/27 10:13
maxqq: 問題發生:你怎麼沒弄,我覺得這個很重要啊
imlin01: 我遇過一些小公司還真的沒有專門管db的,主要是老闆不重51F 11/27 10:28
imlin01: 視,而且若是客戶又不懂,我就親眼看過某公家醫院外包的
imlin01: 系統table欄位全開成varchar(max)的
thinkniht: 那正常啊 對外包而言 能跑能驗收就好54F 11/27 10:37
abc0922001: 明明重視的話可以避免很多問題55F 11/27 10:47
fish0112: 很多是找寫java C#後端的人"兼"DB的 你覺得很專業嗎?56F 11/27 11:08
senjor: 你講的問題就算不是SQL專業的人其實只要有經驗就不會犯了57F 11/27 11:25
Hordor: 當資料庫不是需要每秒幾百幾千個交易的,BE 直接管就好,58F 11/27 11:32
Hordor: 幹嘛要DBA
JUNYOU01: 其實是資訊能力都不被重視60F 11/27 11:47
TAKADO: 公司不重視吧,你的問題如果是以資料庫當主力產品的公司61F 11/27 12:13
TAKADO: 應該就不會遇到,例如做data warehousing/mining的,至於
TAKADO: 其他很多都是產品會動就好,更別說其他慘業土法煉鋼的系
TAKADO: 統。我看過1x年年資的MIS被公司凹做出來的進銷存,整個系
TAKADO: 統就三個資料表,只有int跟varchar(max),令人不忍直視。
vi000246: 2.3.5點正常人都能避免吧 也不會花多少時間66F 11/27 12:13
vi000246: 會這樣做的大概程式也寫得很差
JUNYOU01: 反正現在只要介面美美的就好,後端根本不重要68F 11/27 12:44
NUKnigel: 我在銀行跟電信待過 都沒你說的問題69F 11/27 12:50
littlethe: to earny,你朋友和那主管怎麼不用decimal(21,0)?聽你70F 11/27 12:57
littlethe: 狀況是適合這個,char很佔空間
t64141: 不良的設計見過,但沒遇過這麼離譜的72F 11/27 13:00
littlethe: 我是走Ms sql,這麼說來oracle狀況會好很多?73F 11/27 13:01
ChungLi5566: 10年後 就換後輩抱怨前人的code都沒資安74F 11/27 13:36
ChungLi5566: 以前寫程式沒要求這麼多,小公司也不太會搞提升案
abccbaandy: @imlin01 那種用一次的專案全開varchar(max)很正常吧76F 11/27 14:00
abccbaandy: 在那邊慢慢設計才真的浪費時間
abccbaandy: 關鍵字(外包)
johnny94: 樓上這種觀念才是真的浪費時間79F 11/27 14:03
newways: 全沒遇過...80F 11/27 14:05
senjor: 應該說,浪費時間要看是浪費誰的,自己方便,後面的人麻煩81F 11/27 14:08
senjor: 對很多人來講還是會選擇自己方便的方式去做 XDD
oneheat: 文人相輕啊,自己的方法永遠最好。老早就說還是show薪資83F 11/27 14:27
oneheat: 單比薪水最快
edward13: 竹科大廠用oracle,也請的起dba,所以不會有上述問題(?85F 11/27 14:42
Dnight: 電信業沒遇過這狀況86F 11/27 15:03
elements: 就是篇抱怨文 拍拍 但是還是要乖乖去上班喔87F 11/27 15:16
abccbaandy: 就沒有"後面的人"啊,就說一次性了88F 11/27 15:19
abccbaandy: 不過老是做這種,真的對自己技術沒什麼幫助就是了...
abccbaandy: 有機會還是跑吧
Weky: 常態  請一個懂的只會資料庫沒價值91F 11/27 16:28
mentha39: 應該是說會投資oracle的比較可能會重視資料庫92F 11/27 16:37
Adonisy: 現在資料庫都不便宜啊...93F 11/27 16:53
ilay: 去錯地方了,換別的地方吧94F 11/27 17:03
Hordor: 投資 oracle/mssql 只是需要原廠 support 與背書而已XD95F 11/27 17:05
newversion: 我遇過連 order by 都不知道的. 用土砲法去sort @.@96F 11/27 17:24
newversion: 一般人覺得只要會select insert update delete 就可以
newversion: 出來行走江湖了 XD
johnny94: 樓上,那種人還會跟你說這樣效率比較好99F 11/27 17:30
nova06091: 4100F 11/27 18:32
eeyellow: 很多是前朝遺毒啦...後面接手的人要改發現工程浩大101F 11/27 18:49
eeyellow: 只好一起歷史共業了
ncwd1225: 這太扯,比大學畢業專案還弱103F 11/27 19:07
alian954: 遇過幾個工程師資料庫table都不改名 各種複製 改程式改104F 11/27 19:50
alian954: 到很火
neo5277: 鼎新表示106F 11/27 20:08
littlethe: 我還真的和老闆講過我們的產品比大學畢業專題還爛107F 11/27 20:25
littlethe: 所以各位大學生,你們要對自己有信心
bobju: 原po還在上海嗎? 客戶主檔就命名為KHZD,姓名就叫XM 這種的109F 11/27 20:50
bobju: 一看就知是大陸的漢語拼音的命名方式
mathrew: 習慣就好  我們公司早期的資料庫欄位名稱還是中文111F 11/27 21:13
mathrew: 根本快吐血
prag222: 你有這些問題代表你離DBA還遠的很咧113F 11/27 21:37
touurtn: 很多年紀很大的碼農根本不在乎這些原則 尤其駐點維護114F 11/27 23:35
littlethe: To bobju:那是我以前在越南遇到的事,開這表的人是大115F 11/28 00:49
littlethe: 陸人
littlethe: 我是在左岸沒錯,然後很多人說上海有多強,我看了結果
littlethe: 不過爾爾,應該是我待的地方太爛
littlethe: 大陸人素質的落差比台灣大很多
littlethe: 謝謝大家的心理輔導,我現在好一點了
giantwinter: 4121F 11/28 03:28
imlin01: 開varchar(max)代表那間公司完全沒人懂db,完全沒有專業,122F 11/28 09:54
imlin01: 可悲的是user不懂,所以完全沒意見
earny: to littlethe其實我有跟我朋友提到,但最後主管是加開另一124F 11/28 10:47
earny: 個欄位,char(21),保留原來的int。聽了之後完全被打敗。
earny: 朋友的主管就堅持int一定要存在...XD
earny: 真的令人搞不懂,堅持int,寧願加開另一個欄位XD
johnny94: 我覺得那是拉不下臉承認自己不懂128F 11/28 12:13
xo1100: 有遇過公司開發用C#不准用linq的129F 11/28 15:44
viper9709: 連續三家@@~這也太慘130F 11/28 23:10
littlethe: to earny:再加一個欄位哦...這真的就沒意義了131F 11/29 00:47
littlethe: 很多時候真的是對方拉不下臉,就利用權勢蠻幹或鬥爭
darkMood: 是的,因為會動就好,2萬筆資料和2億筆資料前者隨便就好133F 11/29 01:42
SY082022: 系統會動就好,有問題了,下面的工程師會抗,上面的老闆134F 11/29 13:40
SY082022: 也不懂,什麼都規劃的那麼好,怎麼有源源不絕的專案給老
SY082022: 闆報告,我現在的公司就是這樣
te426odin: 我也遇過同事看不懂Linq所以不能用LINQ (還不是Lambai137F 11/29 16:18
te426odin: 還不是(lamba表示式喔)
quickey: 你遇到的是垃圾場不是資料庫139F 11/29 16:33

--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 119 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇