王柯夢 王瑞平
(1.商丘工學院 河南 商丘 476000;2.鄭州商學院 河南 鞏義 451200)
近年來,隨著“互聯網+”、“大數據”等技術的快速普及,網上商城也進入了發展迅猛期。電子商務的出現顯然已經對人們的購物方式產生了巨大的影響,從原來的店鋪購物轉移到在線購物。B2C網上商城系統是指在網絡上創建一個虛擬的購物商城,實現用戶線上購物需求。目前,各式各樣的電子商務網站層出不窮,系統功能的實現已經相對成熟,但這些系統一般偏向于整個項目功能的設計與實現,而忽視了數據庫設計。在數據庫設計方面,僅僅給出了數據表結構的說明,缺少了數據庫的概念設計和邏輯設計。基于此,本文以一個網上購物網站為例,探析電子商城前臺系統數據庫的設計問題,以期能為系統功能實現提供數據庫設計的有力支撐。
對用戶網上購物行為進行調查,可以得出,目前主流的網上商城系統主要分為前臺商品銷售和后臺數據管理兩大模塊,本文主要對前臺商品銷售模塊,進行數據庫的分析與設計。會員進入到商城首頁,可以瀏覽各種商品,或者根據自己感興趣的商品類別、商品信息等搜索、查詢商品。系統規定,游客在注冊成為網站會員以后才能夠對商品進行購買。
通過上述需求分析,網站主要能夠實現的功能如下:開發具有強大搜索和高級查詢功能,能夠讓用戶快檢索出自己所喜歡的商品;實現網上購物流程:瀏覽商品—訂購商品—提交訂單—支付貨款;用戶查詢服務功能,可以查詢訂單詳情。由上述分析可得出,用戶具有的功能包括:瀏覽商品、按類別檢索商品、查看商品詳細信息;訂購商品、生成訂單、查看訂單;查詢、修改個人信息;評價商品等。
概念設計是指對系統需求分析中得到的信息,進行分類、組織和總結,歸納得出系統中的實體、實體的屬性、實體與實體之間的聯系等,使用E-R模型,設計得出系統的概念模型。
(1)系統實體
根據需求分析,網上商城前臺系統的實體集可抽象為:用戶、商品類別、商品,每一個實體應該具有以下屬性,下劃線標記的為主鍵,繪制的系統實體圖如圖1所示。

圖1 系統實體圖
用戶:用戶編號、用戶昵稱、密碼、電話、地址等。
商品類別:類別編號、類別名稱。
商品:商品編號、商品名、簡介、定價、庫存數量等。
(2)實體與實體之間的聯系
一種商品只屬于一個商品類別,而一個商品類別中可以包含多個商品,即商品類別和商品之間是一對多的聯系。
用戶通過訂購商品生成訂單聯系,一個用戶可以訂購多個商品,每個商品也可以被多個用戶訂購,即用戶和商品之間的訂購聯系是多對多的。
用戶購買收到商品以后,可以對商品進行評價,一個用戶可以評價自己所購買的多種商品,同時一種商品也可以被多個用戶所評價,派生評價內容、評價時間兩個屬性,因此用戶和商品之間還存在一個多對多的評價聯系。
(3)E-R模型
通過對系統實體、實體屬性、實體與實體之間聯系進行分析,可以得到系統的E-R圖(省略了實體屬性),如圖2所示。

圖2 系統E-R圖
數據庫設計中的邏輯設計是指將概念設計中的E-R模型轉換為關系模式的過程。
(1)實體轉換為關系模式
用戶(用戶編號,用戶昵稱,密碼,電話,地址)PK:用戶編號。
商品類別(類別編號,類別名稱)PK:類別編號。
商品(商品編號,商品名,簡介,定價,庫存數量)PK:商品編號。
(2)聯系轉換為關系模式
E-R模型中共設計了四個聯系:商品和商品類別之間屬于聯系、用戶下訂單聯系、商品和訂單之間的聯系以及用戶評價商品聯系。前三個聯系是1:N的聯系,在轉換為關系模式時,只需要將1端的主鍵及其派生出的屬性放到N端即可。最后一個M:N的聯系,必須轉換成一個新的關系模式。
商品(商品編號,商品名,簡介,定價,庫存數量,類別編號)PK:商品編號,FK:類別編號。
訂單(訂單編號,下單時間,用戶編號,商品編號,收貨人,電話,地址)PK:訂單編號,FK:用戶編號、商品編號。
評價(評價編號,用戶編號,商品編號,內容,時間)PK:評價編號,FK:用戶編號、商品編號。
綜上可知,網上商城前臺系統可以轉換為用戶、商品類別、商品、訂單、評價5個關系模式。
用戶表(User)用來儲存用戶注冊時的基本信息,包括用戶編號(UID,int(4),主鍵)、昵稱(UName,varchar(20))、登錄密碼(Upwd,varchar(16))、電話(Utel,char(11))、地址(Uadd,varchar(25))等信息。
商品類別表(Type)用來儲存商品類別的基本信息,包括類別編號(TID,int(4),主鍵)、類別名稱(TName,varchar(20))等信息。
商品表(Product)用來儲存商品的基本信息,包括商品編號(PID,int(4),主鍵)、商品名稱(PName,varchar(25))、簡介(Pjianjie,text)、定價(Price,Decimal(10,2))、庫存數量(Pnum,int)、商品類別(TID,int(4),外鍵)等信息。
訂單表(Order)用來儲存用戶訂購商品的基本信息,包括訂單編號(OID,int(4),主鍵)、下單時間(Otime,datetime)、用戶編號(UID,int(4),外鍵)、商品編號(PID,int(4),外鍵)、收貨人姓名(Oname,varchar(20))、地址(Oadd,varchar(40))、電話(Otel,char(11))等信息。
評價表(Appraise)用來儲存用戶評價商品的基本信息,包括評價編號(AID,int(4),主鍵)、用戶編號(UID,int(4),外鍵)、商品編號(PID,int(4),外鍵)、內容(Acon,text)、評價時間(Atime,datetime)等信息。
在創建數據庫之前,首先要根據系統的實際應用情況來分析和估算數據庫所占用的內存大小、存儲位置、數據文件和日志文件的增長速度,使用CREATE DATABASE語句實現數據庫的創建。經過對數據庫的設計可知,網上商城的前臺系統主要包括用戶、商品類別、商品、訂單和評價5張基本表,使用CREATE TABLE實現基本表的創建,并應用PRIMARY KEY、FOREIGN KEY(<字段名>)REFERENCES <主鍵表(字段名)>、CHECK等關鍵詞實現數據庫的完整性。在創建表時,需要特別注意,應該先創建主鍵表,然后再創建外鍵表,如創建完商品類別表之后,才能創建商品表,創建完用戶表和商品表后,才能夠創建訂單表和評價表。隨著應用的需要和環境的變化,如若需要修改已經創建好的表結構,可以采用ALTER TABLE語句實現。
在系統實現的過程中,連接數據庫是其主要的操作之一,本部分以PHP連接SQL SERVER數據庫為例來闡述數據庫的連接問題。在連接數據庫之前,首先要明確集成環境是否支持SQL SERVER。如若不支持,首先需要下載Microsoft SQL Server PHP 驅動程序,然后配置php和apache兩個目錄下的php.ini文件。重啟apache后,使用sqlsrv_connect(“數據庫服務器地址”,array(“UID”?“數據庫用戶名”“PWD”?“數據庫密碼”,“Database”?“數據庫名”))實現數據庫的連接。
數據庫連接是一種較為關鍵的、有限的、昂貴的資源類型,對數據庫的連接管理直接影響到整個系統的健壯性及程序實施的性能。數據庫使用完之后,需要在合適的時間釋放數據庫資源,避免因沒有釋放數據庫連接而引起的數據庫連接漏洞問題。
數據庫作為程序中數據的主要載體,在整個系統的實現過程中發揮著重要的作用。經過不斷的完善和修正,本數據庫的概念設計、邏輯設計及物理實施,能夠供學生的課程設計、畢業設計及企事業單位系統的基本需求。在對網上商城后臺系統進行數據庫設計,或者在此基礎上添加部分功能時,可以在本設計上進行添加和修改。在對其他系統進行數據庫設計時,本設計也可以為其提供借鑒。