程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 數據庫設計--實踐,數據庫--實踐

數據庫設計--實踐,數據庫--實踐

編輯:MySQL綜合教程

數據庫設計--實踐,數據庫--實踐


目標與目的
學習目標:
  • 掌握日常數據庫建表操作
  • 了解表設計的規范
  何為表結構設計:
  • 表結構設計需要在正式進行開發之前完成
  • 根據產品需求將復雜的業務模型抽象出來
  項目分析
實踐課程模型:
  • 類似電商類的網站
用戶:   核心業務:
  • 交易相關
    • 訂單詳情,訂單  
  • 商品相關
    • 商品類別,商品  
非核心業務:
  • 物流
  • 供應商信息
  業務模型轉表

 

用戶:   tb_account(用戶表) 商品類:tb_goods_category(商品類別表) tb_goods(商品詳情表) 交易類:tb_order_item(交易訂單詳情表)  tb_order(交易表)   設計表的時候需要注意哪些
  • 理解各個表的依賴關系
  • 理解各個表的功能特點(字段之間的約束,索引;字段類型,字段長度)
  收集表屬性 用戶表:

 

自增屬性,auto_increment 圖片不會直接存在數據庫,在數據庫中之後存圖片的一個url地址,有專門的圖片存儲系統去存圖片     varchar VS text 在存儲特別長的字段時 一般從兩個方面:   1.性能                           2.存儲上限   varchar 最大長度65535,如果用utf8及3個字節; varchar最大為65535/3=21845 65535及2的16次方   網易數據類型-命名規范
  • 所有表名,字段名全部使用小寫字母
  • 不同業務,表名使用不同前綴區分
  • 生成環境表名字段名要有實際意義
  • 單個字段盡量使用字段全名;多個字段名之間使用下劃線分隔
  字段設計規范:
  • 存儲空間(盡量選擇能滿足應用要求的最小數據類型)
  • 前瞻性(盡量使用整型代替字符型)
  • 注釋,每個字段必須以COMMENT語句給出字段的作用
  • 經常訪問的大字段(如blob,text)等需要單獨放到一張表中,避免降低SQL效率,圖片,電影等大文件數據禁止存放數據庫
  • 新業務統一建議使用utf8mb4字符集(適應蘋果手機的imoge表情庫)
  用戶賦權注意:
  • 理解用戶到底需要什麼權限
    • 普通用戶只有讀寫權限 
    • 系統管理員具有super權限
  • 權限粒度要做到盡可能的細
    • 普通用戶不要設置with  grant option 屬性
    • 權限粒度:系統層面>庫層面>表層面>字段層面  
  • 禁止簡單密碼
    • 線上密碼要求隨機
表結構      
--

-- Table structure for table `tb_account`

--

 

DROP TABLE IF EXISTS `tb_account`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `tb_account` (

  `account_id` int(11) NOT NULL AUTO_INCREMENT,

  `nick_name` varchar(20) DEFAULT NULL,

  `true_name` varchar(20) DEFAULT NULL,

  `sex` char(1) DEFAULT NULL,

  `mail_address` varchar(50) DEFAULT NULL,

  `phone1` varchar(20) NOT NULL,

  `phone2` varchar(20) DEFAULT NULL,

  `password` varchar(30) NOT NULL,

  `create_time` datetime DEFAULT NULL,

  `account_state` tinyint(4) DEFAULT NULL,

  `last_login_time` datetime DEFAULT NULL,

  `last_login_ip` varchar(20) DEFAULT NULL,

  PRIMARY KEY (`account_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/*!40101 SET character_set_client = @saved_cs_client */;

 

--

-- Table structure for table `tb_goods`

--

 

DROP TABLE IF EXISTS `tb_goods`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `tb_goods` (

  `goods_id` bigint(20) NOT NULL AUTO_INCREMENT,

  `goods_name` varchar(100) NOT NULL,

  `pic_url` varchar(500) NOT NULL,

  `store_quantity` int(11) NOT NULL,

  `goods_note` varchar(800) DEFAULT NULL,

  `producer` varchar(500) DEFAULT NULL,

  `category_id` int(11) NOT NULL,

  PRIMARY KEY (`goods_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/*!40101 SET character_set_client = @saved_cs_client */;

 

--

-- Table structure for table `tb_goods_category`

--

 

DROP TABLE IF EXISTS `tb_goods_category`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `tb_goods_category` (

  `category_id` int(11) NOT NULL AUTO_INCREMENT,

  `category_level` smallint(6) NOT NULL,

  `category_name` varchar(500) DEFAULT NULL,

  `upper_category_id` int(11) NOT NULL,

  PRIMARY KEY (`category_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/*!40101 SET character_set_client = @saved_cs_client */;

 

--

-- Table structure for table `tb_order`

--

 

DROP TABLE IF EXISTS `tb_order`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `tb_order` (

  `order_id` bigint(20) NOT NULL AUTO_INCREMENT,

  `account_id` int(11) NOT NULL,

  `create_time` datetime DEFAULT NULL,

  `order_amount` decimal(12,2) DEFAULT NULL,

  `order_state` tinyint(4) DEFAULT NULL,

  `update_time` datetime DEFAULT NULL,

  `order_ip` varchar(20) DEFAULT NULL,

  `pay_method` varchar(20) DEFAULT NULL,

  `user_notes` varchar(500) DEFAULT NULL,

  PRIMARY KEY (`order_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/*!40101 SET character_set_client = @saved_cs_client */;

 

--

-- Table structure for table `tb_order_item`

--

 

DROP TABLE IF EXISTS `tb_order_item`;

/*!40101 SET @saved_cs_client     = @@character_set_client */;

/*!40101 SET character_set_client = utf8 */;

CREATE TABLE `tb_order_item` (

  `order_item_id` bigint(20) NOT NULL AUTO_INCREMENT,

  `order_id` bigint(20) NOT NULL,

  `goods_id` bigint(20) NOT NULL,

  `goods_quantity` int(11) NOT NULL,

  `goods_amount` decimal(12,2) DEFAULT NULL,

  PRIMARY KEY (`order_item_id`),

  UNIQUE KEY `uk_order_goods` (`order_id`,`goods_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

/*!40101 SET character_set_client = @saved_cs_client */;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved