1. 程式人生 > >資料庫建表規範建議

資料庫建表規範建議

程式碼review若干建議

1.    資料庫建表

1.1 統一使用支援事務處理的InnoDB儲存引擎,字元編碼utf-8,編碼核對utf8_general_ci

1.2 表間關係儘量不要用id主鍵關聯,例如訂單與會員管理,可以用會員的唯一編號。

資料庫遷移的時候可能會丟失id主鍵。

1.3 適當的建立索引。索引建立技巧參考書籍或baidu

1.4 適當的冗餘欄位,根據產品需求做冗餘,如果有多個欄位需要冗餘,建議不要冗餘了,一般冗餘另外一張表的1~2個欄位,哪些些欄位可冗餘,下面表的案例有些欄位冗餘多了。

1.5 正規化和反正規化權衡使用,有些資料需要作為快照

1.6 表是有主次之分的。例如訂單,會建一張主要的訂單資訊表,相關業務都是圍繞這個表擴充套件的,例如選品,支付,退貨……一系列可擴充套件。到了支付系統裡面,又會建立支付流水這張主表,其他的附加資訊可以擴充套件。

1.7 表中資料不要存null這樣的值,null處理麻煩事多,搞不好還會大大的影響效能,建議可以為null的值轉換成not null default ‘’ 。

1.8 必要的唯一約束,唯一約束就是唯一索引。

1.9 表名命名:業務名稱_表名稱[_功能]。

例如,線下訂單:off_order 線下訂單項:off_order_item

表主鍵id的註釋必須說明表的註釋.例如:線下訂單表主鍵id

Powerdesigner工具只做表間關係圖。不作為最終的sql生成器。

手動把sql寫好。

CREATE TABLE `off_order` (
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
`order_no` varchar(50) NOT NULL COMMENT '訂單編號',
`order_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '訂單型別;1.零售,2批發',
`member_mobile` varchar(50) NOT NULL DEFAULT '' COMMENT '會員手機號碼',
`member_no` varchar(50) NOT NULL DEFAULT '' COMMENT '會員卡號',
`member_name` varchar(50) NOT NULL DEFAULT '' COMMENT '會員姓名',
`store_no` varchar(50) NOT NULL DEFAULT '' COMMENT '網點編號',
`store_name` varchar(50) NOT NULL DEFAULT '' COMMENT '網點名稱',
`store_mobile` varchar(50) NOT NULL DEFAULT '' COMMENT '網點聯絡手機號碼',
`store_contact` varchar(50) NOT NULL DEFAULT '' COMMENT '網點聯絡人姓名',
`area_name` varchar(50) NOT NULL DEFAULT '' COMMENT '縣域名稱',
`area_addr` varchar(50) NOT NULL DEFAULT '' COMMENT '縣域地址',
`order_amount` decimal(6,2) NOT NULL DEFAULT '0.00' COMMENT '訂單金額',
`pay_way` tinyint(4) NOT NULL DEFAULT '0' COMMENT '訂單支付方式,1。現金支付; 2.會員卡支付;3.會員現金支付',
`pay_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '訂單支付狀態:0未支付;1支付中;2支付成功;3支付失敗',
`terminal_serial` varchar(50) NOT NULL DEFAULT '' COMMENT '終端機序列號',
`create_user_id` bigint(11) NOT NULL DEFAULT '0' COMMENT '建立使用者Id',
`create_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '訂單建立時間',
`STATUS` tinyint(4) NOT NULL DEFAULT '0' COMMENT '記錄狀態,0,有效訂單;1。訂單已刪除',
PRIMARY KEY (`id`),
UNIQUE KEY `order_no` (`order_no`)
) ENGINE=InnoDB AUTO_INCREMENT=23195 DEFAULT CHARSET=utf8

1. 資料庫欄位說明:_time代表字尾 *程式碼匹配合適的文字

欄位

欄位名稱

資料庫型別

Java型別

註釋

主鍵

id

Bigint

Long

線下訂單主鍵id

訂單編號

order_no

Varchar(可變長度)

String

訂單編號

時間

_time

timestamp

Date

時間,日期(都是用這個型別,其他型別不合適)

型別

_type

tinyint

Integer

*型別。1.批發,2零售(型別要列舉)

狀態

_status

tinyint

Integer

*狀態。1.已支付,2未支付(狀態要列舉)

標記

delete_mark

bit

Boolean

記錄是否已刪除。

金額

_ amount

decimal(8,2)

bigdecimal

*金額。

價格

_ price

decimal(8,2)

BigDecimal

*價格

線下:off 線上:online 訂單:order 商品:good 記錄:record 明細:detail

金額:amount 支付:payment 狀態:status 型別:type 圖片地址:img_url

區域:area 行政區:district 活動:activity 賬戶:account  sku 銷售:Sales

供應商:supplier 品牌:brand 平臺:platform 種類:Category

規格:specification 網點店鋪:store 廣告:ad 使用者:user 子項:item

庫存:Stock 退貨:Refund 操作:operation 時間time 編碼:code

父級:parent 子級:sub 主:main 主鍵:id 編號:no 歷史: history

價格:price 原始:original 實際:reality 賣家:seller 買家:buyer

代理:agent 省province 市city 縣county 區district    地址address

發貨:send 建立:create 收貨:receive 標誌:mark 備註remark

2. 程式碼編輯

去複習一下java基礎的書籍,寫程式碼可以寫先寫簡單的中文步驟或程式碼流程圖,這些步驟最後就是最好的註釋,這樣寫程式碼我相信就算只寫一半,第二天再來寫都不會忘記。養成好的程式碼習慣非常重要。

1、碼面向物件的思想。讀程式碼都一塊一塊讀的,快速定位。命名百度一下,有最佳命名方案的。

2、controller層接收引數,進行引數校驗,然後把引數直接給service層處理。不要太多的邏輯處理,命名與業務相關,與service對應,介面url量採用restful,全部小寫支援restful風格。

3、service邏輯處理的關鍵,每個service都應該對應良好的單元測試。方便別人和自己除錯你的介面,命名與業務相關。

4、Dao要基本不需要涉及到業務邏輯。命名也基本不與業務相關。

6、變數命令寫全一點,一般一個物件也就在一個業務裡面用一次而已,都是簡寫,相當於把程式碼做了混淆。

5、碼後要junit測試,除錯,調整程式碼。對自己寫的程式碼多做review。

相關推薦

資料庫規範建議

程式碼review若干建議 1.    資料庫建表 1.1 統一使用支援事務處理的InnoDB儲存引擎,字元編碼utf-8,編碼核對utf8_general_ci 1.2 表間關係儘量不要用id主鍵關聯,例如訂單與會員管理,可以用會員的唯一編號。 資料庫遷移的時候可能會

關係資料庫規範資料庫正規化)續

注:以下所有定義均來自於百度百科1NF:非主屬性函式依賴於碼2NF:非主屬性完全函式依賴於碼3NF:非主屬性既不部分依賴於碼也不傳遞依賴於碼BCNF:所有屬性都不部分依賴或傳遞依賴於碼,所有決定屬性集都包含於碼4NF:所欲非平凡的多值依賴都是函式依賴5NF:連線依賴均由候選碼

mysql規範及註意事項

關系數據庫 並發 arc float nod 32bit 字符串 8bit 設計 表設計規範 1.庫名,表名,字段名必須使用小寫字母,“-”分割 ,長度不得超過12字符 , 要見名識意 ; 2.建議使用Innodb存儲引擎 (1)什麽是存儲引擎 不同的技術及配套的相關功

Oracle資料庫前,先判斷是否存在,存在不,不存在則

------建立TABNAME ---------- DECLARE   TOTAL INT := 0; BEGIN   SELECT COUNT(1)     INTO TOTAL     FROM USER_TABLES A

【java小程式實戰】小程式短視訊專案之資料庫

 最近自己在練習一個java小程式短視訊的專案,希望每天通過文章的形式把開發內容和學習到的東西記錄下來。  一個專案的開始就是資料庫建表,首先我們要有一個使用者表,記錄使用者的一些資訊   使用者表-user 欄位

資料庫基本操作

資料庫的基本操作練習: /*要求在本地磁碟D建立一個學生-課程資料庫(名稱為student), 只有一個數據檔案和日誌檔案,檔名稱分別為stu和stu_log, 物理名稱為stu_data.mdf 和stu_log.ldf,初始大小分別為5MB和3MB, 增長方

檢視和修改Mysql資料庫的時候預設的儲存引擎

建表的時候,不指定type或engine,則使用預設的儲存引擎。預設的儲存引擎,可以在配置檔案my.ini中檢視和修改,預設是InnoDB: # The default storage engine that will be used when create new tab

阿里MySQL資料庫規約

1.[強制]表達是與否概念的欄位,必須使用is_xxx的方式命名,資料型別是unsigned tinyint(0 表示否,1表示是) 說明:任何欄位如果為非負數,必須是unsigned. 正例:表達邏輯刪除的欄位名is_deleted,0表示未刪除,1表示刪除. 2.[強制

SQL資料庫中列的常見型別與一些常用約束的操作

硬是一拖再拖,直到了今天才更。 --表中列的型別  -- int  整型  -- char(10)字串  固定長度查詢速度快,浪費空間如身份證號 手機號碼 學號  --varchar(10) 字串可變長度姓名       地址  -- 不帶n的:字元或者數字佔一個位元組

電商資料庫

1、使用者表 CREATE TABLE `mall_user`( `id` int(11) not null auto_increment COMMENT '使用者表id', `username` varchar(50) not null

Powerdesigner關聯Mysql資料庫之真·詳細步驟(有圖)

最近手頭剛來一專案,好久沒用powerdesigner了,藉此機會來複習一下,出現了很多問題,網上搜到的不是很完整,現整理出來給以後備用,亦做分享。 1.安裝MYSQL的ODBC驅動。Connector/ODBC 5.1.10 下載地址:http://dev.mysql.c

資料庫的一些操作,包括主鍵外來鍵約束等等

create table 成績 ( 學號 char(11) references 學員資訊(學號) not null, 課程 int references 課程(編號) not null, 考次 int constraint PK_成績 primary key(學號,課程,

sql資料庫增刪查改練習大集合【附帶資料庫語句】

建表語句:CREATE TABLE `tb_user_t2` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '編號', `name` varchar(20) DEFAULT NULL COMMENT '姓名', `s

資料庫正規化學習

資料庫正規化 設計關係資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。 目前關係資料庫有六種正規化:第一正規化(1NF)、第二正規化(2NF)、第三正規化(3NF)、

Navicat 連線mysql資料庫操作

在後臺開發中,經常會用到關係型資料庫,Navicat是一款資料庫視覺化管理軟體,可以很方便的設計、修改資料表、查詢資料庫。接下來看看如何使用Navicat快速構建資料庫。 1.power design設計資料表;      並使用工具匯出sql語句。    選擇sql檔

區塊鏈資料庫使用者和交易設計

使用者表 uid int(10) ‘使用者ID’, username varchar(16) ‘使用者名稱’, password varchar(32) ‘密碼’, mobile char(

我的理解之資料庫三正規化

為了建立冗餘較小、結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計一個結構合理的關係型資料庫,必須滿足一定的正規化。

PL/SQL標準規範

(一) –建立表 workcenter CREATE TABLE workcenter –指定表名稱 ( id int, –新增編號欄位 name varchar2(200) –新增名稱欄位 ) (二)

Oracle資料庫新增資料

--建表--student表+註釋create table student(       sno   varchar2(3) not null,       sname varchar2(9) not null,       ssex  varchar2(3) not null,       sbirthda

MySQL規範與注意事項(個人精華)

一、 表設計規範庫名、表名、欄位名必須使用小寫字母,“_”分割。庫名、表名、欄位名必須不超過12個字元。庫名、表名、欄位名見名知意,建議使用名詞而不是動詞。建議使用InnoDB儲存引擎。儲存精確浮點數必須使用DECIMAL替代FLOAT和DOUBLE。建議使用UNSIGNED儲存非負數值。建議使用INT UN