1. 程式人生 > >JAVA專案命名規範和資料庫設計規範

JAVA專案命名規範和資料庫設計規範

一、命名規範

1、 專案名全部小寫

2、 包名全部小寫

3、 類名首字母大寫,如果類名由多個單片語成,每個單詞的首字母都要大寫。

如:public class MyFirstClass{}

4、 變數名、方法名首字母小寫,如果名稱由多個單片語成,每個單詞的首字母都要大寫。

如:int index=0;

       public void toString(){}

5、 常量名全部大寫

如:public static final String GAME_COLOR=”RED”;

6、所有命名規則必須遵循以下規則:

1)、名稱只能由字母、數字、下劃線、$符號組成

2)、不能以數字開頭

3)、名稱不能使用JAVA中的關鍵字。

4)、堅決不允許出現中文及拼音命名。

二、註釋規範

1、   類註釋

在每個類前面必須加上類註釋,註釋模板如下:

/**

* Copyright (C), 2006-2010, ChengDu Lovo info. Co., Ltd.

* FileName: Test.java

* 類的詳細說明

*

* @author 類建立者姓名
    * @Date    建立日期

* @version 1.00

*/

2、   屬性註釋

在每個屬性前面必須加上屬性註釋,註釋模板如下:

/** 提示資訊 */

private String strMsg = null;

3、   方法註釋

在每個方法前面必須加上方法註釋,註釋模板如下:

/**

* 類方法的詳細使用說明

*

* @param 引數1 引數1的使用說明

* @return 返回結果的說明

* @throws 異常型別.錯誤程式碼 註明從此類方法中丟擲異常的說明

*/

4、   構造方法註釋

在每個構造方法前面必須加上註釋,註釋模板如下:

/**

* 構造方法的詳細使用說明

*

* @param 引數1 引數1的使用說明

* @throws 異常型別.錯誤程式碼 註明從此類方法中丟擲異常的說明

*/

5、   方法內部註釋

在方法內部使用單行或者多行註釋,該註釋根據實際情況新增。

如://背景顏色

       Color bgColor = Color.RED

資料庫設計的規範

1、資料庫表和欄位都大寫

2、表都要加業務字尾,例如_C客戶表 _B基礎表 _P許可權表

3、必須有主鍵,主鍵是表名去掉業務字尾,加_ID,大多表的主鍵使用UUID

4、欄位多個單詞時,全大寫,用下劃線隔開

5、型別INT/LONG/DOUBLE/TIMESTAMP/CHAR/VARCHAR2 儘量化在這幾個型別中,這樣資料庫設計相當簡單

6、排序號定死名稱ORDER_NO

7、許可權兩個欄位CREATE_BY建立人,CREATE_DEPT建立部門

8、記錄建立時間CREATE_TIME

9、Oracle 資料庫欄位型別

欄位型別        中文說明                            限制條件                        其它說明

----------      ---------------------------------- ------------------------------ --------------

CHAR            固定長度字串               最大長度2000 bytes   

VARCHAR2   可變長度的字串           最大長度4000 bytes         可做索引的最大長度749

NCHAR          根據字符集而定的固定長度字串 最大長度2000 bytes   

NVARCHAR2  根據字符集而定的可變長度字串 最大長度4000 bytes   

DATE            日期(日-月-年) DD-MM-YY(HH-MI-SS)                      經過嚴格測試,無千蟲問題

LONG           超長字串                   最大長度2G(231-1)             足夠儲存大部頭著作

RAW             固定長度的二進位制資料       最大長度2000 bytes       可存放多媒體圖象聲音等

LONG RAW   可變長度的二進位制資料        最大長度2G                 同上

BLOB           二進位制資料                     最大長度4G  

CLOB           字元資料                       最大長度4G  

NCLOB         根據字符集而定的字元資料        最大長度4G  

BFILE           存放在資料庫外的二進位制資料     最大長度4G  

ROWID         資料表中記錄的唯一行號         10 bytes                 ********.****.****格式,*為0或1

NROWID       二進位制資料表中記錄的唯一行號     最大長度4000 bytes

NUMBER(P,S)    數字型別                                                        P為整數位,S為小數位

DECIMAL(P,S)    數字型別                                                       P為整數位,S為小數位

INTEGER         整數型別                                                          小的整數

FLOAT           浮點數型別                                                        NUMBER(38),雙精度

REAL            實數型別                                                             NUMBER(63),精度更高

10、Mysql資料庫欄位型別

日期和時間資料型別

MySQL資料型別 含義
date 3位元組,日期,格式:2014-09-18
time 3位元組,時間,格式:08:42:30
datetime 8位元組,日期時間,格式:2014-09-18 08:42:30
timestamp 4位元組,自動儲存記錄修改的時間
year 1位元組,年份

數值資料型別

整型

MySQL資料型別 含義(有符號)
tinyint 1位元組,範圍(-128~127)
smallint 2位元組,範圍(-32768~32767)
mediumint 3位元組,範圍(-8388608~8388607)
int 4位元組,範圍(-2147483648~2147483647)
bigint 8位元組,範圍(+-9.22*10的18次方)

上面定義的都是有符號的,當然了,也可以加上unsigned關鍵字,定義成無符號的型別,那麼對應的取值範圍就要翻翻了,比如:

tinyint unsigned的取值範圍為0~255。

浮點型

MySQL資料型別 含義
float(m, d) 4位元組,單精度浮點型,m總個數,d小數位
double(m, d) 8位元組,雙精度浮點型,m總個數,d小數位
decimal(m, d) decimal是儲存為字串的浮點數

我在MySQL中建立了一個表,有一列為float(5, 3);做了以下試驗:

1.插入123.45678,最後查詢得到的結果為99.999;
2.插入123.456,最後查詢結果為99.999;
3.插入12.34567,最後查詢結果為12.346;

所以,在使用浮點型的時候,還是要注意陷阱的,要以插入資料庫中的實際結果為準。

字串資料型別

MySQL資料型別 含義
char(n) 固定長度,最多255個字元
varchar(n) 可變長度,最多65535個字元
tinytext 可變長度,最多255個字元
text 可變長度,最多65535個字元
mediumtext 可變長度,最多2的24次方-1個字元
longtext 可變長度,最多2的32次方-1個字元

1.char(n)和varchar(n)中括號中n代表字元的個數,並不代表位元組個數,所以當使用了中文的時候(UTF8)意味著可以插入m箇中文,但是實際會佔用m*3個位元組。
2.同時char和varchar最大的區別就在於char不管實際value都會佔用n個字元的空間,而varchar只會佔用實際字元應該佔用的空間+1,並且實際空間+1<=n。
3.超過char和varchar的n設定後,字串會被截斷。
4.char的上限為255位元組,varchar的上限65535位元組,text的上限為65535。
5.char在儲存的時候會截斷尾部的空格,varchar和text不會。
6.varchar會使用1-3個位元組來儲存長度,text不會。

其它型別

1.enum(“member1″, “member2″, … “member65535″)
enum資料型別就是定義了一種列舉,最多包含65535個不同的成員。當定義了一個enum的列時,該列的值限制為列定義中宣告的值。如果列宣告包含 NULL屬性,則NULL將被認為是一個有效值,並且是預設值。如果聲明瞭NOT NULL,則列表的第一個成員是預設值。

2.set(“member”, “member2″, … “member64″)
set資料型別為指定一組預定義值中的零個或多個值提供了一種方法,這組值最多包括64個成員。值的選擇限制為列定義中宣告的值。

資料型別屬性

上面大概總結了MySQL中的資料型別,當然了,上面的總結肯定是不全面的,如果要非常全面的總結這些內容,好幾篇文章都不夠的。下面就再來總結一些常用的屬性。

1.auto_increment

auto_increment能為新插入的行賦一個唯一的整數識別符號。為列賦此屬性將為每個新插入的行賦值為上一次插入的ID+1。

MySQL要求將auto_increment屬性用於作為主鍵的列。此外,每個表只允許有一個auto_increment列。例如:

複製程式碼 程式碼如下:
id smallint not null auto_increment primary key

2.binary

binary屬性只用於char和varchar值。當為列指定了該屬性時,將以區分大小寫的方式排序。與之相反,忽略binary屬性時,將使用不區分大小寫的方式排序。例如:

複製程式碼 程式碼如下:
hostname char(25) binary not null

3.default

default屬性確保在沒有任何值可用的情況下,賦予某個常量值,這個值必須是常量,因為MySQL不允許插入函式或表示式值。此外,此屬性無法 用於BLOB或TEXT列。如果已經為此列指定了NULL屬性,沒有指定預設值時預設值將為NULL,否則預設值將依賴於欄位的資料型別。例如:

複製程式碼 程式碼如下:
subscribed enum('0', '1') not null default '0'

4.index

如果所有其他因素都相同,要加速資料庫查詢,使用索引通常是最重要的一個步驟。索引一個列會為該列建立一個有序的鍵陣列,每個鍵指向其相應的錶行。以後針對輸入條件可以搜尋這個有序的鍵陣列,與搜尋整個未索引的表相比,這將在效能方面得到極大的提升。

複製程式碼 程式碼如下:
create table employees
(
id varchar(9) not null,
firstname varchar(15) not null,
lastname varchar(25) not null,
email varchar(45) not null,
phone varchar(10) not null,
index lastname(lastname),
primary key(id)
);


我們也可以利用MySQL的create index命令在建立表之後增加索引:

複製程式碼 程式碼如下:
create index lastname on employees (lastname(7));

這一次只索引了名字的前7個字元,因為可能不需要其它字母來區分不同的名字。因為使用較小的索引時效能更好,所以應當在實踐中儘量使用小的索引。

5.not null

如果將一個列定義為not null,將不允許向該列插入null值。建議在重要情況下始終使用not null屬性,因為它提供了一個基本驗證,確保已經向查詢傳遞了所有必要的值。

6.null

為列指定null屬性時,該列可以保持為空,而不論行中其它列是否已經被填充。記住,null精確的說法是“無”,而不是空字串或0。

7.primary key

primary key屬性用於確保指定行的唯一性。指定為主鍵的列中,值不能重複,也不能為空。為指定為主鍵的列賦予auto_increment屬性是很常見的,因為此列不必與行資料有任何關係,而只是作為一個唯一識別符號。主鍵又分為以下兩種:

(1)單欄位主鍵

如果輸入到資料庫中的每行都已經有不可修改的唯一識別符號,一般會使用單欄位主鍵。注意,此主鍵一旦設定就不能再修改。

(2)多欄位主鍵

如果記錄中任何一個欄位都不可能保證唯一性,就可以使用多欄位主鍵。這時,多個欄位聯合起來確保唯一性。如果出現這種情況,指定一個auto_increment整數作為主鍵是更好的辦法。

8.unique

被賦予unique屬性的列將確保所有值都有不同的值,只是null值可以重複。一般會指定一個列為unique,以確保該列的所有值都不同。例如:

複製程式碼 程式碼如下:
email varchar(45) unique

9.zerofill

zerofill屬性可用於任何數值型別,用0填充所有剩餘欄位空間。例如,無符號int的預設寬度是10;因此,當“零填充”的int值為4時,將表示它為0000000004。例如:

複製程式碼 程式碼如下:
orderid int unsigned zerofill not null