Re: [請益] 這是個很低級的錯誤嗎?

作者
看板 Soft_job
時間
留言 27則留言,12人參與討論
推噓 11 ( 11推 0噓 16→ )
討論串 4
既然提到id這件事 沒人帶的本菜鳥就想借問一下相關的問題 可能也發生了很低能的錯誤 (PHP + MYSQL) 給大家笑笑 1.目前我手上的資料庫大多數table都用mysql的auto increment int來當id。 然後 因為目前table間的relationships 都是用php去取 (laravel的ORM) 而不是用sql的foreign key 直接delete單一會讓系統崩潰,網頁500。 所以我在有可能要刪除的table 都會加一個名為status的tinyinteger 來判斷這筆資料是不是被刪掉了 ((想說日後可能可以做個資源回收桶之類的功能 目前公司沒有人會直接刪除資料 但如果之後有了 那我這種做法有什麼解套的方式嗎? ================== 2.方才提到大部分是increment integer 事實上有一個table的id是char 而且更糟糕的是這個id還兼當名稱使用 然後此id也被其他table用來建立關係 想請問各位大大 先前因為塞入的字串太大讓這個id 溢位 導致使用php的ORM建立的relationships時 直接觸發SQL Exception,讓系統掛掉 最後直接在前後端都設定名稱長度限制解決這個問題 除了這個情況之外 還有可能會遇到什麼問題? 是不是要想辦法修改資料庫的架構比較好 =================== 3.最近公司想要做一個動態表單的功能 我發現MYSQL有json型態可以用 就大膽放心地把所有表單的內容全都塞到這個欄位中 測試下來沒遇到什麼大問題 請問這個是合理的做法嗎? 小的目前基本上是一人做前後端 畢業不滿一年,所以還真很多東西不知道 拜託各位給個意見,面對日後越來越多人用我真心怕自己踩到什麼雷 ----- Sent from JPTT on my Asus ASUS_Z017DA. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.119.119 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1557917474.A.0F8.html
1Fstevekevin10: 1.這是設計問題,要馬不要用ORM的關聯不然就不要隨 05/15 19:19
2Fstevekevin10: 意删資料,大型的系統建議都不要有FK 05/15 19:19
3Fstevekevin10: 2.建議pk就乖乖做pk的事情就好 05/15 19:20
4Fstevekevin10: 3.可能的問題在於你之後改表單json內容改變時,過去 05/15 19:21
5Fstevekevin10: 的資料跟新的資料用同一個邏輯層去跑可能會出錯。 05/15 19:21
1.我該慶幸當初因為覺得fk在laravel不好管才不用嗎哈哈 2.好的。之後另外寫邏輯將其矯正過來 3.會用json的地方不多。且目前系統不打算讓使用者更動舊的資料,所以還可以應付 謝謝您的建議
6Fashlikewing: 沒事不要用fk,用狀態值記錄刪除是可以的,但是如果 05/15 19:36
7Fashlikewing: 你的資料成長級數太快那最好評估一下這些留滯的資料 05/15 19:36
8Fashlikewing: 比例有沒有意義 ,表大是會影響效能的 05/15 19:36
效能問題之後可能會慢慢浮現。謝謝建議。
9Flocalhost: 都用ajax最簡單 05/15 19:38
10Fashlikewing: 不確定MYSQL的json支不支援索引,如果你要拉裡面的 05/15 19:39
11Fashlikewing: 資料做join要小心 05/15 19:39
12Fzelda123: 1. Laravel 有支援 deleted_at 做 soft delete 05/15 22:15
目前預計整個系統僅有表單資料庫與其格式的設定檔的儲存會是json,能不用我也不想再用,畢竟用起來沒其他預設類別順
13Fzelda123: 3. JSON 之後很難維護,不建議濫用 05/15 22:15
14Fpseudoman: 沒事不用fk?資料庫都不正規化嗎@@ 05/15 22:49
15Flemon651: 大型系統不用fk的話,那用關連式資料庫的用意何在? 05/15 23:52
16Fashlikewing: 正規化和fk有什麼必要關係嗎?沒有fk就不能做了? 05/16 00:30
17Fashlikewing: 這篇文章 http://bit.ly/2Ypz2o2 參考一下 05/16 00:30
18Fblackie1019: 大型資料庫真的不要亂用與濫用FK,懂得就懂。不懂硬 05/16 01:12
19Fblackie1019: 要來學術派戰文字的就對他笑笑就好 05/16 01:12
20Fyaya517: 看過很多大型CRM確實都沒有在用FK的 05/16 07:15
21Falan3100: soft delete是基本,join key是長字串在某些情況效能很差 05/16 07:23
好的。我會看看soft delete. 目前系統沒啥用到join.日後有需求時會多注意 ※ 編輯: newhandfun (223.136.119.119), 05/16/2019 08:31:00 ※ 編輯: newhandfun (223.136.119.119), 05/16/2019 08:35:05 ※ 編輯: newhandfun (223.136.119.119), 05/16/2019 08:37:57 ※ 編輯: newhandfun (223.136.119.119), 05/16/2019 08:40:06
22Fsilent5566: 大型系統不推薦設FK 表格間相關太多時會被FK制肘 05/16 10:46
23Flwtech: 他掛掉的原因一定有Log,然後優化它 05/16 11:24
24Flwtech: 通常都是人下錯SQL,導致很慢,然後mySQL只能玩到GB級 05/16 11:27
謝謝您的數據。 之後如果有要儲存大量資料,打算換成postgresSQL ※ 編輯: newhandfun (223.136.119.119), 05/16/2019 22:32:24
25Flwtech: PSQL一樣,高併發高可用高網路本來就是三個不一樣的選擇 05/16 23:26
26Flwtech: 你要會db tunning 才重要,所以才會需要DBA 05/16 23:27
27FTony427: 正規化用久了,還會聽過反正規化喔XD 05/28 17:57

完整討論串

留言數 標題 作者 日期
143 [請益] 這是個很低級的錯誤嗎? a88241050 2019/05/07 20:42:01
2 Re: [請益] 這是個很低級的錯誤嗎? vi000246 2019/05/07 23:40:52
18 Re: [請益] 這是個很低級的錯誤嗎? Label 2019/05/08 01:28:01
27 >> Re: [請益] 這是個很低級的錯誤嗎? newhandfun 2019/05/15 18:51:12

最新熱門文章