Django-2.播客系統數據庫模型設計

Django-2.播客系統數據庫模型設計

分析

  • 多人使用播客系統。採用BS架構實現。市面上多數某某系統歸根結底都是這種設計。
  • 播客系統,核心模塊有:
    1. 用戶管理
      • 註冊、登錄
      • 刪除查用戶
    2. 博文管理
      • 增刪改查博文
  • 需要數據庫,本次使用Mysql5.5,InnoDB引擎。
  • 需要支持多用戶登錄,各自可以管理自己的博文(增刪改查),管理是不公開的,但是博文是不需要登錄就可以公開預覽的。
  • 先不要思考過多的功能,先完成最小的核心需求代碼。

數據庫設計

創建數據庫

CREATE DATABASE IF NOT EXISTS blog;

需要用戶表、文章表

用戶表user

字段 說明
id 主鍵,唯一標識
name 用戶姓名,描述性字段
email 電子郵箱,註冊用信息,應該唯一。可用作登錄名、可用於密碼找回
password 密碼存儲。注意,不能明文存儲密碼。一般採用單向加密算法,如MD5
CREATE TABLE `user` (
    `id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR ( 48 ) NOT NULL,
    `email` VARCHAR ( 64 ) NOT NULL,
    `password` VARCHAR ( 128 ) NOT NULL,
    PRIMARY KEY ( `id` ),
UNIQUE KEY `email` ( `email` )
) ENGINE = INNODB DEFAULT CHARSET = utf8;

文章表post

字段 說明
id 主鍵,唯一標識
title 標題,描述性字段
author 博文作者要求必須是註冊用戶,這個字段應該存儲userid
postdate 發佈日期,日期類型
content 文章內容,博文內容可能很長,一般來說不會小於256個字符的
  • 一對多關係:一篇博文屬於一個作者,一個作者有多篇博文。

  • Content字段的設計

    1. 字段類型:博文一般很長,不可能只有幾百個字符,需要大文本字段。MySQL中,選擇TEXT類型,而不是char或者varchar類型。
    2. 大小:text類型是65535個字符,如果不夠用,選擇longtext,有23212^{32}-1個字符長度。足夠使用了。
    3. 圖片存儲:博文就像HTML一樣,圖片是通過路徑信息將圖片是嵌入在內容中的,所以保存的內容還是字符串。圖片來源有2中:
      1. 外聯:通過URL鏈接訪問,本站不用存儲該圖片,但容易引起盜鏈問題。
      2. 本站存儲:需要提供博文的在線文本編輯器,提供圖片上傳到網站存儲,並生成圖片URL,這個URL嵌入播客正文中,不會有盜鏈問題,但要解決衆多圖片存儲問題、水印問題、在線壓縮問題、臨時或垃圾圖片清理等等難題。
      • 本播客項目不實現圖片功能
    4. 字段考慮
      • content字段存儲文本類型大字段,一般不和數據頻繁查詢的字段放在一張表中,需要拆到另一張表中。
CREATE TABLE `post` (
    `id` BIGINT ( 20 ) NOT NULL AUTO_INCREMENT,
    `title` VARCHAR ( 256 ) NOT NULL,
    `author_id` INT ( 11 ) NOT NULL,
    `postdate` datetime NOT NULL,
    PRIMARY KEY ( `id` ),
    KEY `author_id` ( `author_id` ),
CONSTRAINT `fk_post_user` FOREIGN KEY ( `author_id` ) REFERENCES `user` ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8;
CREATE TABLE `content` (
    `id` BIGINT ( 20 ) NOT NULL AUTO_INCREMENT,
    `content` text NOT NULL,
    PRIMARY KEY ( `id` ),
CONSTRAINT `fk_content_post` FOREIGN KEY ( `id` ) REFERENCES `post` ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8;
  • 注:這裏的SQL腳本本次不要用來生成表,使用ORM庫寫代碼來創建表,用來檢查實體類構建是否正確。
  • 用戶完成的功能有登錄、註冊、登出等,user表基本滿足。
  • 播客功能有用戶發文、文章列表、文章詳情等,post、content表基本滿足。

項目

項目構建

  • 在Pycharm中創建一個項目,使用虛擬環境,Python使用版本是3.6
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章