摘要:思路上次換工作,面試遇到一道面試題,如下請設計數據庫,用來存放老師學生等人員的信息,盡量滿足以后的擴展。
————因為懶惰,所以思索
影響我們有多種類型訂單:實物訂單、特享商戶訂單、核銷訂單、生活繳費訂單、電影票訂單、機票訂單、以及以后會持續新增的未知類型訂單,它們都存放在不同的訂單類型表中
導致有些業務做起來會比較痛苦
比如:
統計當前用戶未付款訂單總數
統計各類訂單中該用戶未支付的訂單數
計算總數量
在列表中顯示當前用戶在某個時間段內所有未支付訂單的信息(實現方式如上)
統計各類訂單中該用戶在這個時間段內所有未支付的訂單信息
在業務代碼里面進行按時間排序(這里還會有各種訂單里面的相同字段信息可能會不同命名造成業務代碼里面的轉換[如:核銷訂單叫order_id,生活繳費訂單叫orderId],將要根據訂單類型來分別判斷..............各種痛苦)
例外還會有個未知因素:持續新增的未知類型訂單
每新增一種內型訂單,上面的實現都將隨之新增業務代碼。各種蛋疼。
上次換工作,面試遇到一道面試題,如下:
請設計數據庫,用來存放 老師、學生等人員的信息,盡量滿足以后的擴展。(提示:請寫出3種方式,并分別寫出優缺點)
入門實現
思路:設計一張表,用來存放人員信息,定義type字段,用來區分老師 和 學生
優點:簡單,能應對以后的各種查詢
缺點:數據冗余字段太多,查詢速度慢
常見的實現
思路:設計兩張表:一張存放老師、一張存放學生(最常見的方式)
優點:都這樣搞,優點自然多多
缺點:某些查詢有些難以實現。(如:查詢最近一個時間段的新加入的老師和學生并按時間排序)
面向對象的方式來實現
思路:設計3張表:人員表、老師特有屬性表、學什特有屬性表
優點:以上兩種方式的優點總和
缺點:未知
解決方案轉回來看 我們商城的訂單表跟上面的無比相識,目前是使用第二種方式來實現,導致有些業務做起來有些不是很爽
如果換種方式按第三種方式來實現,一切又將美好起來。
第三種方式使用面向對象的方式來實現:
先把所有訂單的公有的屬性抽象集合起來(如:訂單編號、下單時間、訂單狀態、訂單類型等)創建一張父訂單表
創建各種訂單專有屬性表(各類訂單特有屬性)
關系:父類訂單表 與 訂單表 一對一的關系(每張訂單表里面都能在父訂單表里面有1條與之對應)
以上方式將能滿足絕大多數業務情況
如上面的兩種查詢情況:
統計各類訂單中該用戶未支付的訂單數
在列表中顯示當前用戶在某個時間段內所有未支付訂單的信息
這里實現起來因為都能在父訂單表中獲取到,將會無比 easy,業務代碼里面的排序、字段轉換等問題也迎刃而解
優點實現業務需求能力強
可擴展性的特點,以后新增一種內型訂單,只需要在父訂單表中給訂單類型新增個值,在新增加張訂單特有屬性表
業務代碼將改動小或者不用改動
發布于個人站點:http://www.webdevs.cn/article/92.html
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/17468.html
showImg(https://segmentfault.com/img/remote/1460000007103938?w=391&h=247); 文章最初發表于我的個人博客非典型性程序猿 對于剛接觸JAVA或者其他面向對象編程語言的朋友們來說,可能一開始都很難理解面向對象的概念以及類和對象的關系。筆者曾經帶過一個短期培訓班教授java入門基礎,在最后結束課程的時候,還有很多同學不太理解面向對象...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
閱讀 635·2021-11-22 15:32
閱讀 2723·2021-11-19 09:40
閱讀 2318·2021-11-17 09:33
閱讀 1274·2021-11-15 11:36
閱讀 1870·2021-10-11 10:59
閱讀 1482·2019-08-29 16:41
閱讀 1785·2019-08-29 13:45
閱讀 2155·2019-08-26 13:36