在開(kāi)發(fā)過(guò)程中數(shù)據(jù)庫(kù)的操作和使用要有一定規(guī)范,不然會(huì)引起混亂。
下邊是我們開(kāi)發(fā)中具體例子,因?yàn)樯婕肮驹谟庙?xiàng)目詳細(xì)代碼就不列出來(lái)了,整個(gè)思路可供參考。
1.初始化腳本
各子系統(tǒng)建立自己的數(shù)據(jù)庫(kù)初始化腳本,格式可參照附件產(chǎn)品管理初始化腳本sql.rar(需要解壓到c:/sql才能在命令行執(zhí)行,見(jiàn)init.sql說(shuō)明)
包括兩部分內(nèi)容:1.建表語(yǔ)句(ddl);2.基礎(chǔ)數(shù)據(jù)初始化(data)
建表語(yǔ)句由數(shù)據(jù)庫(kù)設(shè)計(jì)文檔(PowerDesigner)導(dǎo)出,基礎(chǔ)數(shù)據(jù)由excel文件導(dǎo)出(sql.rar提供示例,開(kāi)發(fā)框架提供工具支持DbUtilTest.testExcel2Sql ())
作用:
1.數(shù)據(jù)庫(kù)結(jié)構(gòu)和基礎(chǔ)數(shù)據(jù)文檔化
2.便于快速搭建開(kāi)發(fā)測(cè)試環(huán)境,新建一套環(huán)境時(shí)不用拷貝原數(shù)據(jù)庫(kù)而是執(zhí)行腳本
3.便于獨(dú)立開(kāi)發(fā)測(cè)試,有一個(gè)干凈的數(shù)據(jù),避免開(kāi)發(fā)測(cè)試依賴歷史數(shù)據(jù)和調(diào)試過(guò)程中互相影響
2.數(shù)據(jù)庫(kù)結(jié)構(gòu)比對(duì)
在部署多套數(shù)據(jù)庫(kù)時(shí),懷疑表結(jié)構(gòu)不一致,可使用DbUtilTest.testCompareDataBase ()進(jìn)行檢查。
執(zhí)行后會(huì)在子系統(tǒng)根目錄生成dbcompare.html 文件,參加附件。
說(shuō)明:紅色表示兩個(gè)表結(jié)構(gòu)不一致,綠色表示多出一表,黑色表示一致
3.數(shù)據(jù)庫(kù)字符集(UTF-8)
create database dbname CHARACTER SET utf8 COLLATE utf8_bin
不單獨(dú)對(duì)表和字段設(shè)置字符集,整個(gè)庫(kù)統(tǒng)一使用utf-8
4.表名字段名
建庫(kù)腳本中表名和字段名不區(qū)分大小寫(xiě)
5.數(shù)據(jù)庫(kù)引擎(InnoDb)
目前主要使用的兩種引擎MyIsam,InnoDb。MyIsam查詢較快,不支持事務(wù)。InnoDb支持事務(wù)。
在建表sql指明引擎。
create table ***
(
id bigint(11) not null auto_increment,
.........
primary key (id)
)
type = innodb;
powerdesiner按如下方式設(shè)置: