Board logo

標題: 11-1-1 資料庫規劃 [打印本頁]

作者: 小誌    時間: 2011-4-23 23:02     標題: 11-1-1 資料庫規劃

11-1-1   資料庫規劃
在MySQL資料庫「Message」中,我們將全部的留言記錄都擺放在「allmessage」資料表中,為了讓您了解各個欄位的作用,筆者皆以中文為欄位命名:

欄位名

資料型態

長度

允許NULL

預設值

編號

int

11

,自動編號

留言時間

datetime

4

-

留言主題

varchar

100

-

網友姓名

varchar

16

-

聯絡信箱

varchar

50

-

圖形

varchar

2

-

留言內容

text

-

板主回覆

text

-

板主回覆時間

datetime

4

-

私人公開

char

1

-

Allmessage資料表



[attach]5748[/attach]
圖11-2  資料表結構。
註:「編號」欄位是主索引鍵欄位,內容是不可重複的,以作為每筆留言記錄的紀錄識別,而其資料內容是數值且會自動遞增編號。

自動編號的欄位資料型態必須是tinyint、smallint、int、bigint、numberic()…等,也就是說:自動編號的欄位資料都是整數,當我們新增一筆資料錄時,MySQL Server會自動遞增原本最後一筆資料的欄位內容,並將遞增後的結果填入新增資料錄的欄位中,這個欄位的值我們不必自己填入,同時,自動編號欄位的資料也不允許我們自己編輯的。

要讓欄位成為自動編號欄位,除了資料型態必須是整數設定外,當欄位中的資料值一旦使用過,就不會再重複使用。數值型態的欄位採用自動量設定,即每增加一筆新紀錄,該欄位的值就會自動加1,當一筆新資料紀錄插入資料表時,其中的設定為AUTO_INCREMENT欄位值必須存入NULL值、0或空白值,也可以指定存入一個數值資料,但是假如該數值資料已經存在的話,則會產生錯誤;假如所插入的數值資料為該欄位現有數值資料的最大值,則下一筆增加的資料記錄,其欄位值將會以此數值資料值加1。
作者: 小誌    時間: 2011-4-23 23:05

當新增一個資料表,並指定其中一個欄位為AUTO_INCREMENT時,可以在插入第一筆資料時指定一個值存入,則該值自動成為AUTO_INCREMENT的初始值(自動編號欄位的「種子(seed)」),除此之外,在使用phpMyAdmin新建資料表並指定欄位為AUTO_INCREMENT時,亦可同時指定該欄位的「預設值」,此預設值即成為AUTO_INCREMENT的初始值。
以「allmessage」資料表的「編號」欄位為例,說明如何設定自動編號欄位:
[attach]5749[/attach]
圖11-3   設定自動編號欄位。

1、將欄位資料型態設定為整數int。
2、將欄位的「附加」選項選定為「AUTO_INCREMENT」,此時欄位即成為自動編號欄位。
3、於「預設值」欄位中填入自動編號起始值。

若想要得知最新插入之AUTO_INCREMENT數值,可以使用:

「留言時間」欄位:設定其預設值為「GETDATE()」,用以取得日期時間,這樣做的目的是為了在新增資料錄時,SQL Server會自動填入欄位資料(資料新增的日期時間)。
「私人公開」欄位:因為我們儲存資料的情況只有兩種:公開(0)與私人的不公開(1),所以選用欄位的資料型態為「bit」。
「圖形」欄位:用來儲存網友發言時,代表圖形的圖檔名稱(只取主檔名),而圖檔的名稱我們又是以數字來命名,分別為0~10.gif,如果選取的圖片為5.gif,則欄位的內容則為「5」。
[attach]5750[/attach]
圖11-4   發言代表圖形。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)