1. 程式人生 > >商城資料庫設計原則(二)-商品模型的設計

商城資料庫設計原則(二)-商品模型的設計

 在電商系統中,商品模型至關重要,是整個電商的核心,下面通過一個簡單的分析,設計一個基礎的商品模型。

商品模型的演化

    在以前,那時CMS很流行,最常見的模型是欄目-文章模型。於是做電商的時候,自然就繼承了這種一對多的關係。只是欄目變成了分類,文章變成了商品。商品也具備了獨特的業務屬性。現在很多電商網站上左側的選單,也就是這個分類。

後來我們慢慢發現一個問題,只有分類並不能適應所有的需求,比如nike鞋和nikeT恤,使用者可能希望先看nike的所有商品,這個模型就不能滿足。我們想在這個關係中,加入“品牌”概念。於是:

    這樣基本使用者可以在首頁上通過分類或者品牌找到自己想要的商品,也可以直接檢視熱門的商品和新上架的商品。但是問題也來了,使用者在進入分類後,展示在使用者面前的是很多很多商品,使用者希望再通過篩選查詢出更接近他目標的商品。於是優秀的產品設計師,設計出了類似這樣的UI:


    使用者可以通過這些篩選條件進一步縮小自己的目標範圍,那麼問題又來了,這樣的產品需求排在程式設計師面前,怎麼去實現它?經過分析,我們找出了一個方法,我們知道商品之間的屬性可能存在著較大的差別,比如牛仔褲它有版型、腰型、褲長等屬性;而電腦它有CPU、顯示卡等屬性,各類商品的屬性是不同的。再進一步想,休閒褲也版型、腰型、褲長等屬性;臺式電腦或者膝上型電腦都有CPU、顯示卡等屬性。所以我們得出:一個分類對應若干屬性,而一個屬性,對應若干屬性選項,而一個具體商品又對應若干屬性選項(例如具體一條牛仔褲,他的褲長:7分,褲型:直筒)。有點繞,仔細品味一下。

    從圖上可以看出,分類和屬性的關係(例如:“牛仔褲”分類下有褲型、褲長、版型等屬性)、屬性和屬性選項的關係(例如:褲長屬性有長款、九分褲、七分褲的選項)、商品和屬性選項的關係(例如某條牛仔褲的褲長是7分褲)。至此,我們知道一個商品的分類、品牌以及它有什麼屬性和對應的屬性值。那麼通過篩選條件,自然就可以查詢出指定的商品。這裡特別說一句,價格也是屬性,不要設想用商品表中的價格欄位去做計算。這不利於查詢也增加了複雜度,讓商家編輯人員用屬性來設定並保證他的正確性。

有了這個模型,我們大概就可以看到以下介面(請不要太關注左邊,重點在右邊和下面):

    這個頁面展示商品的所有資訊,按照之前的設計好像都可以滿足。但是我們似乎感覺錯過了什麼,在圖上右邊我們發現該商品當前的顏色和尺寸,並且允許使用者可以選擇其他的顏色和尺寸。這給我們帶來了疑惑,這裡的“顏色”和“尺寸”是什麼,一件商品的不同顏色不同尺寸是算一個商品還是多個商品。經過思考後,我們發現我們混淆了兩個概念——“商品”和“貨品”。不同規格的貨品作為獨立的商品。比如一條褲子的有L尺寸、M尺寸、一個U盤有16G還是32G的,都是同樣的貨品,不同規格的商品。可以認為貨品商品是一對多的關係。弄清了這個概念,處理這個需求就容易多了,這裡的“顏色”、“尺寸”我們就作為“規格”來處理,而紅色、黑色;L號、M號我們視為規格的選項或者說規格值。一件貨品對應若干規格,而具有某一規格值的貨品就是商品。


    好了,現在好像差不多了。基於這個模型可以滿足基本的商品搜尋、展示的需求。搜尋引擎也可以根據這個模型資料生成對應的商品索引,達到準確搜尋的目的。商品模組還會和其他模組一起協作,比如使用者系統、訂單系統、支付系統等。一般情況下我們會把商品業務獨立出來做成“商品中心”的服務,集中處理商品查詢、更新、釋出等業務,支撐其他業務。

原文轉載來源於此處點選開啟連結

相關推薦

商城資料庫設計原則-商品模型設計

 在電商系統中,商品模型至關重要,是整個電商的核心,下面通過一個簡單的分析,設計一個基礎的商品模型。 商品模型的演化     在以前,那時CMS很流行,最常見的模型是欄目-文章模型。於是做電商的時候,自然就繼承了這種一對多的關係。只是欄目變成了分類,文章變成了商品。商

設計模式之設計原則

font 通過 size 模式 span 通信 轉發 設計模式 其他 五:   接口分離原則:不應該強迫程序依賴它們不需要使用的方法。即,一個接口不需要提供太多的行為,一個接口應該只提供一種對外的功能,不應該把所有的操作都封裝到一個接口中。 六:   迪米特原則:一個對象應

(轉) 面向物件設計原則:開放-封閉原則OCP

原文:https://blog.csdn.net/tjiyu/article/details/57079927 面向物件設計原則(二):開放-封閉原則(OCP)        開放-封閉原則(Open-closed principle,OCP)也

六大設計原則LSP裏氏替換原則

參數類型 錯誤 所有 類方法 放大 狙擊手 strong pub tps 裏氏替換原則LSP(Liskov Subsituation Principle) 裏氏替換原則定義 所有父類出現的地方可以使用子類替換並不會出現錯誤或異常,但是反之子類出現的地方不一定能用父類替換。

電商專案--------商品資料結構以及資料庫表結構的分析和整理

       隨著專案的深入,你會發現如果對於資料結構沒有一個準確的把握和理解,那麼如同瞎子過河,全靠蒙。所以在這裡我將自己的一些看法和認識用文字的方式記錄下來,一方面給讀者看,一方面讓我發現自己的不足。 作為一個傳統的電商專案,最難的地方也就在於資料庫中表的關聯,以及

資料庫設計原則簡明

本文摘錄自http://blog.csdn.net/haiross/article/details/50427382  原文有更詳細講解。 正規化標準 知乎 https://www.zhihu.com/question/24696366 基本表及其欄位之間的關係,應儘量滿

設計模式--里氏替換原則Java的繼承規範

昨天有說到單一職責原則是針對介面的思維拓展,有沒看過的,可以看看!https://blog.csdn.net/newlifemai

大型Java進階專題() 軟體架構設計原則

## 前言 ​ 今天開始我們專題的第一課了,也是我開始進階學習的第一天,我們先從經典設計思想開始,看看大牛市如何寫程式碼的,提升技術審美、提高核心競爭力。本章節參考資料書籍《Spring 5核心原理》中的第一篇 Spring 內功心法(沒有電子檔,都是我取其精華並結合自己的理解,一個字一個字手敲出來的)。

SQL Server 查詢性能優化——創建索引原則

技術分享 dex ble 銷售 得到 with 9.png ron 條件 三:索引的建立原則   一般來說,建立索引要看數據使用的場景,換句話來說哪些訪問數據的SQL語句是常用的,而這些語句是否因為缺少索引(也有可能是索引過多)變的效率低下。但絕不是所有的SQL語句都要建

設計模式: 工廠模式

dem blank hibernate 執行 oid code 做出 void actor 工廠模式 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。 在工廠模式中,我們在創建

數字IC低功耗設計入門——功耗的分析

layout 變化 監視 merge obj source divide 傳播 總結   前面學習了進行低功耗的目的個功耗的構成,今天就來分享一下功耗的分析。由於是面向數字IC前端設計的學習,所以這裏的功耗分析是基於DC中的power compiler工具;更精確的功耗分析

MVC實戰之排球計分—— 構架概要設計

eight med 語言 fusion 詳情 插入數據 輸出數據 one 交互界面 本程序主要基於MVC4框架,使應用程序的輸入,處理和輸出強制性分開,使得軟件可維護性,可擴展性,靈活性以及封裝性得到提高, MVC應用程序分為三個核心部件:Model,View, Contr

MVC之排球比賽計分程序 ——架構概要設計

重要 cor 擴展 arch 接收 strong 這樣的 images 軟件 本程序主要基於MVC4框架,使應用程序的輸入,處理和輸出強制性分開,使得軟件可維護性,可擴展性,靈活性以及封裝性得到提高, MVC應用程序分為三個核心部件:Model,View, Controll

java設計模式工廠模式

額外 mod 通過反射 pat 擴展 簡單實現 需要 factory actor   工廠模式是最常見的實例化對象的模式,用來替代new操作。采用這種模式創建對象會有一些額外的操作,但他會帶給系統更大的擴展性和更少的修改量。典型的應用spring bean容器。下面簡單實現

設計模式---工廠方法模式

ack cto sys alt 修改 spa 抽象類 .com desc 1、簡介:工廠方法模式是類的創建模式,又叫虛擬構造子模式或是多態性工廠模式,它的實現方式是創建一個工廠接口,將實際創建對象的的工作轉移到工廠子類中,在系統的擴展中,可以在不修改工廠角色的情況下引進新的

設計模式之設計原則

擴展 原因 依賴 設計原則 細節 面向接口 編程 面向 size 一:   單一職責原則:就一個類而言,應該只有一個引起它變化的原因。 二:   開閉原則:軟件實體對擴展開放,對修改關閉。 三:   裏式代換原則:子類型必須能夠替換掉它們的父類型。 四:   依賴倒轉原則:

設計模式觀察者監聽者模式

blog virtual ack memory message efault share default IT 基於MAP線程安全的觀察者監聽者模式 1 #include<map> 2 #include<string> 3 #i

設計模式—— 工廠方法

源碼下載 工廠方法模式 ati \n end 註意 con 流程 pie 工廠方法 模式簡介 工廠方法模式(Factory Method Pattern)又被稱為工廠模式,也叫虛構造器(Virtual Constructor)模式或多態工廠(Polymorphic Fact

常用的JavaScript設計模式Factory(工廠)模式

asc 我們 對象實例 actor 通過 汽車 對象 UNC cti Factory通過提供一個通用的接口來創建對象,同時,我們還可以指定我們想要創建的對象實例的類型。 假設現在有一個汽車工廠VehicleFactory,支持創建Car和Truck類型的對象實例,現在需要通