日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

生鲜网超MySQL_天天生鲜项目实战-思路 数据库设计

發布時間:2023/12/10 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生鲜网超MySQL_天天生鲜项目实战-思路 数据库设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網站首頁

登錄頁面

商品詳情頁

購物車頁

一、需求分析:

類似于京東的生鮮超市,對于用戶而言能夠實現登陸,注冊,商品瀏覽,購買等,對于商家而言,實現商品的管理,即添加,修改,刪除等。

平臺:管理員、業務員、用戶

一、業務員平臺

線下:負責商品的信息采集,購買。并將檢驗過的商品信息歸類后交于后臺管理人員

具體商品信息大致如下:

新鮮水果 商品的種類名稱|----草莓:具體商品名稱,價格,描述,單位|----蘋果等

海產海鮮

|----三文魚:價格,描述,單位

|----扇貝等

二、管理員

線下:與業務員對接商品信息,并在此進行審核

線上:利用后臺管理平臺進行商品信息的增刪改查。

三、用戶

線上:

具體功能身份驗證

|----用戶的注冊,登錄,用戶中心

商品瀏覽

|----購物網站首頁,某一類商品列表頁,具體商品頁

商品購買

|----商品加入購物車,訂單提交,購買

具體功能請參考:

二、實現方式

web app:

根據需求將web app分為四塊

daily_fresh_demo

----deily_fresh_demo

----df_cart #對商品購物車管理

----df_goods  #商品以及后臺管理

----df_user #用戶管理

----df_order #訂單管理

三、開發環境:

python>3.5

Django>2.0

pychram

navicate

mysql 5.7

四、model數據庫設計:

將具體數據表分化到具體的app中

“()”括號內為外鍵關聯,

(1)、當一對多關系時例如生鮮分類對生鮮具體商品, 將關系維護在多的那張表中,即在具體商品表中維護

(2)、當多對多關系,則新建一張表,在再第三張表中維護表關系

用戶表與商品表則將關系維護在購物車表中

app1、df_goods

商品分類信息 水果 海鮮等

TypeInfo:ttitle名稱

具體商品信息

GoodsInfo:gtitle名稱 gpic圖片 gprice價格 gunit庫存 gclick點擊量 gjianjie簡介 gkucun庫存 gcontent介紹 gtype分類(TypeInfo)2、df_user

用戶信息

Userinfo: uname名字 upwd密碼 uemail郵箱 ushou收貨地址 uaddress地址 uyoubian郵編 uphone電話

商品瀏覽:用戶瀏覽過的商品

GoodsBrowser: user用戶名(UserInfo) good商品(GoodsInfo)3、df_order

大訂單:比如一個大訂單中包含兩斤橘子,三斤蘋果等小訂單

OrderInfo:oid訂單號 user用戶名(UserInfo) odate訂單日期 oIspay是否支付 ototal訂單總價 oaddress訂單收貨地址

小訂單:兩斤橘子等

OrderDetailInfo:goods商品(GoodsInfo) order屬于哪個大訂單(OrderInfo) price價格 count數量4、df_cart

購物車

CartInfo

user用戶名(UserInfo) goods商品(GoodsInfo) count數量

五、項目生成:

添加環境變量

打開cmd進入工作空間執行命令:

django-admin.py startproject daily_fresh_demo

執行之后便可以看到工作空間里有兩層daily_fresh_demo文件

daily_fresh_demo----deily_fresh_demo

----__init__.py

----settings.py

----urls.py

----wsgi.py

當然直接在pycharm中生成工程更加方便

六、配置數據庫

6.1、使用sqlite

這里由于數據量較少的關系使用本地自帶的sqlite

#settings.py

DATABASES ={

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

},

'OPTIONS':{

'TIMEOUT': 20,

}

}

使用mysql:

前提是要在安裝pymsql,cmd中輸入

pip install pymysql

設置中:

#settings.py

DATABASES ={

'default': {

'ENGINE': 'django.db.backends.mysql', # 數據庫引擎

'NAME': '', # 你要存儲數據的庫名,事先要創建之

'USER': '', # 數據庫用戶名

'PASSWORD': '', # 密碼

'HOST': '', # 主機

'PORT': '', # 數據庫使用的端口

}

}

在項目文件夾下的__init__.py添加如下代碼,作用是每次啟動工程時都能啟動數據庫鏈接

#daily_fresh_demo

#  ----deily_fresh_demo

#    ----__init___.py

importpymysql

pymysql.install_as_MySQLdb()

另外在使用mysql需要保證,在mysql中你要使用的存在相應的數據庫。

七、創建相應的app

python manage.py startapp df_user

python manage.py startapp df_order

python manage.py startapp df_cart

python manage.py startapp df_goods

工程目錄結構如下

八、數據models建立

需要注意的是:開發過程中大多是首先設計用戶models的。

另外由于種種原因,請忽略什么PE8規范,pythonic寫法,變量命名規則,暫時看懂就好

8.1、df_user

#df_user#----models.py

from django.db importmodels#Create your models here.

classUserInfo(models.Model):

uname=models.CharField(max_length=20)

upwd=models.CharField(max_length=40)

uemail=models.CharField(max_length=30)

ushou=models.CharField(max_length=20,default="")

uaddress=models.CharField(max_length=100,default="")

uyoubian=models.CharField(max_length=6,default="")

uphone=models.CharField(max_length=11,default="")#default,blank是python層面的約束,不影響數據庫表結構,修改時不需要遷移 python manage.py makemigrations

classGoodsBrowser(models.Model):

user=models.ForeignKey('UserInfo', on_delete=models.CASCADE)

good=models.ForeignKey('df_goods.GoodsInfo', on_delete=models.CASCADE)

8.2、df_goods

#df_goods

#----models.py

from django.db importmodelsfrom tinymce.models import HTMLField#使用富文本編輯框要在settings文件中安裝#將一對多的關系維護在GoodsInfo中維護,另外商品信息與分類信息都屬于重要信息需要使用邏輯刪除

#Create your models here.

class TypeInfo(models.Model):#商品分類信息 水果 海鮮等

isDelete = models.BooleanField(default=False)#邏輯刪除

ttitle = models.CharField(max_length=20)def __str__(self):#這里定義在admin中要顯示的內容

#return self.ttitle.encode('utf-8')

returnself.ttitleclass GoodsInfo(models.Model):#具體商品信息

isDelete = models.BooleanField(default=False)#邏輯刪除

gtitle = models.CharField(max_length=20)#商品的名稱

gpic = models.ImageField(upload_to='df_goods')#關聯圖片目錄

gprice = models.DecimalField(max_digits=5, decimal_places=2)#商品價格小數位為兩位,整數位為3位

gunit = models.CharField(max_length=20, default='500g')#商品單位kg或者個數

gclick = models.IntegerField()#商品點擊量

gjianjie = models.CharField(max_length=200)#商品簡介

gkucun = models.IntegerField()#商品庫存

gcontent = HTMLField()#商品介紹

gtype = models.ForeignKey(TypeInfo, on_delete=models.CASCADE)#外鍵關聯TypeInfo表

#gadv = models.BooleanField(default=False)#商品是否推薦

def __str__(self):#return self.gtitle.encode('utf-8')

returnself.gtitle#python3中 __str__ 不能接收bytes類型的數據,這和python2/3的編解碼方式是有關系的。

8.3、df_order

#df_order#----models.py

from django.db importmodels#Create your models here.

class OrderInfo(models.Model):#大訂單

oid = models.CharField(max_length=20, primary_key=True)#訂單號

user = models.ForeignKey('df_user.UserInfo', on_delete=models.CASCADE)#確定哪個用戶的訂單

odate = models.DateTimeField(auto_now=True)

oIsPay= models.BooleanField(default=False)#當前訂單是否支付,默認為否

ototal = models.DecimalField(max_digits=8, decimal_places=2)

oaddress= models.CharField(max_length=150)#雖然訂單總價可以由多個商品的單價以及數量求得,但是由于用戶訂單的總價的大量使用,忽略total的冗余度

#無法實現:真實支付,物流信息

class OrderDetailInfo(models.Model):#大訂單中的具體某一商品訂單

goods = models.ForeignKey('df_goods.GoodsInfo',on_delete=models.CASCADE)#關聯商品信息

order = models.ForeignKey('OrderInfo', on_delete=models.CASCADE)#關聯大訂單,確定屬于某一個大訂單中

price = models.DecimalField(max_digits=6, decimal_places=2)#某一類商品訂單的價格最高達9999.99

count = models.IntegerField()

8.4、df_cart

#df_cart#----models.pyfrom django.db importmodelsclassCartInfo(models.Model):

user= models.ForeignKey('df_user.UserInfo', on_delete=models.CASCADE)

goods= models.ForeignKey('df_goods.GoodsInfo', on_delete=models.CASCADE)#在同級工程目錄下引用外鍵

count = models.IntegerField()#記錄用戶買個多少單位的商品

8.5、執行遷移

最后在Terminal終端先后執行

python manage.py makemigrations

python manage.py migrate

進行遷移即可。

在pycharm的工具欄中Tools—>Run manage.py Task也可以逐個app進行遷移。

8.6、執行結果

在navicate就可以看到我們想要的結果,相應的數據表

以“df_”開頭的為我們自己創建的,其他為django系統自動生成的。

九:在線演示

賬號:weilanhanf

密碼:weilanhanf

賬號:root

密碼:rootroot

如果后臺管理賬號失效,請博客園私信博主

另:還有小問題沒有修復,您可以直接提交issue。非常感謝您的star。

十、源碼下載

總結

以上是生活随笔為你收集整理的生鲜网超MySQL_天天生鲜项目实战-思路 数据库设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。