10 PLAZA Hotel 16 CENTURY Hotel
6.7.3. Diễn giải CREATE Database trong SQL Server
¾ ON: Dùng để định nghĩa nơi chứa cơ sở dữ liệu vă không gian chứa tập tin log.
¾ NAME: Dùng định nghĩa tín của cơ sở dữ liệu. Tín năy dùng tham chiếu khi gọi đến cơ sở dữ liệu, tín được dùng cho quâ trình backup, export, Import, Shrink cơ sở dữ liệu đó.
¾ FILENAME: Tín tập tin cơ sở dữ liệu lưu trong đĩa cứng, thông thường khi căi SQL Server
lín ổ đĩa năo thì giâ trị mặc định cho phĩp lưu tập tin đến thư mục đó. Tuy nhiín, nếu muốn bạn cũng có thể thay đổi vị trí câc file năy.
Khi tạo cơ sở dữ liệu, bạn đê định nghĩa vị trí đặt tập tin ở thư mục năo thì không thể di chuyển một câch thủ công (như dùng Explorer của Windows), vì lăm điều đó thật nguy hiểm nhất lă khi dữ liệu trong cơ sở dữ liệu đang có giâ trị kinh tế.
¾ SIZE: Dung lượng của cơ sở dữ liệu khi khởi tạo chúng. Thông thường giâ trị mặc định lă 1 MB.
¾ Dung lượng phải lă số nguyín, có thể tăng thím bằng câch sử dụng thủ tục Shrink trong
SQL Server.
¾ MAXSIZE: Dung lượng lớn nhất, khi dung lượng cơ sở dữ liệu tăng lín đến mức MaxSize thì dừng lại.
Nếu khi dung lượng bằng MaxSize, câc chuyển tâc có thể bị huỷ bỏ hay trả về lỗi không thể thực hiện được, vă có thể lăm cho cơ sở dữ liệu của bạn bị treo.
Để trânh điều năy xảy ra, thì người quản trị cơ sở dữ liệu phải thường xuyín theo giỏi quâ trình tăng dung lượng cơ sở dữ liệu theo thời gian, để có biện phâp trânh mọi rủi ro có thể xảy ra.
¾ FILEGROWTH: Dung lượng khởi tạo cùng dung lượng tối đa cho phĩp tăng trong quâ trình thím dữ liệu văo cơ sở dữ liệu. Nhằm tự động hóa, chúng ta phải thiết lập quâ trình tăng tự động theo chỉ số KB cho trước hay tỷ lệ phần trăm theo dung lượng đang có.
¾ LOG ON: Log on cho phĩp bạn quản lý những chuyển tâc xảy ra trong quâ trình sử dụng cơ sở dữ liệu của SQL Server.
Xđy dựng cơ sở dữ liệu Test
Như đê trình băy ở trín, sau đđy ví dụ tạo cơ sở dữ liệu Test có cú phâp như sau:
Ví dụ 8-31: Tạo cơ sở dữ liệu Test trong SQL Server
USE master GO
CREATE DATABASE Test ON
( NAME = Test,
SIZE = 10, MAXSIZE = 50, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'Testlog', FILENAME = 'c:\mssql7\data\Testlog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO
Để đơn giản hoâ câc đối tượng Table trong cơ sở dữ liệu Test, chúng tôi chỉ trình băy một văi phât biểu SQL dạng CreateTable, câc Table khâc bạn có thể tìm thấy trong cơ sở dữ liệu đính kỉm.
Ví dụ 8-32: Tạo một số bảng trong Test
/* Tạo bảng danh sâch khâch hăng thường xuyín */
CREATE TABLE tblcustomers (
CustID int(3) unsigned NOT NULL auto_increment, Username varchar(20) NOT NULL DEFAULT '' ,
Password varchar(10) NOT NULL DEFAULT '' , CustName varchar(50) , Address varchar(100) , Tel varchar(20) , FaxNo varchar(10) , Email varchar(50) , Contact varchar(50) , CountryCode char(3) , ProvinceCode char(3) , PRIMARY KEY (CustID), INDEX CustID (CustID) );
/* Tạo bảng hợp đồng mua hăng qua mạng */
CREATE TABLE tblorders (
OrderID int(3) NOT NULL auto_increment, OrderDate date ,
CustID int(11) ,
Description varchar(100) DEFAULT '0' , TranID tinyint(3) DEFAULT '0' ,
PaymentID tinyint(3) DEFAULT '0' , Amount float DEFAULT '0' ,
ShipCost float DEFAULT '0' , TotalAmount float DEFAULT '0' , PRIMARY KEY (OrderID),
INDEX OrderID (OrderID) );
/* Tạo bảng hợp đồng chi tiết mua hăng qua mạng */
CREATE TABLE tblorderdetails (
ItemID int(3) unsigned DEFAULT '0' , OrderID int(3) unsigned DEFAULT '0' , No tinyint(3) unsigned DEFAULT '0' , Qtty int(3) unsigned DEFAULT '0' , Price int(3) unsigned DEFAULT '0' , Discount int(3) unsigned DEFAULT '0' , Amount bigint(3) unsigned DEFAULT '0' );
Một số quy định khi thiết kế Table 6.7.4.
6.7.5.
6.7.6.
Tín cột - Column Name
Đặt tín cột cũng giống như đặt tín bảng, có rất nhiều quy tắc đặt tín (như đê trình băy ở trín phần table), nhưng khuyến khích bạn nín theo một số quy tắc cơ bản sau:
¾ Tín cột bắt đầu chữ hoa, còn lại bằng chữ thường. ¾ Tín ngắn gọn vă đầy đủ ý nghĩa.
¾ Không nín đặt tín cột có khoảng trắng, sau năy bạn sẽ gặp những phiền toâi khi tham chiếu đến cột đó.
¾ Không đặt tín cột trùng với những từ khoâ, từ dănh riíng, vă những ký tự đặc biệt như những phĩp toân hay toân tử khâc.
¾ Chú ý, nín đặt tín cột cùng tín những cột có quan hệ với những bảng khâc trong cùng cơ sở dữ liệu, giúp dễ hiểu vă trânh bị nhầm lẫn.
Một số người thích thím văo dấu gạch chđn (_) để phđn biệt ý nghĩa hay tín gọi của cột, điều năy lă tùy văo sở thích của bạn. Tuy nhiín chúng tôi không thích qui tắc năy.
Nhưng đối với kinh nghiệm lập thiết kế xđy dựng cơ sở dữ liệu thì bạn không nín dùng dấu gạch dưới _, vă dĩ nhiín trong nhiều trường hợp khâc bạn sẽ cảm thấy khó chịu khi thím một dấu _ trong tín của đối tượng của cơ sở dữ liệu.
Mặc dù không có vấn đề gì cho cú phâp hay câc phât biểu tham chiếu đến chúng, nhưng bạn sẽ thấy tại sao chúng ta không nín dùng dấu gạch chđn (_) khi đặt tín đối tượng hay tín cơ sở dữ liệu trong MySQL.
¾ Nếu bạn đặt tín có dấu _ ,bạn phải tốn thời gian hay năng lượng cho hănh động tạo ra dấu _ ¾ Trong chừng mực hay giới hạn năo đó do hiệu ứng của Font chữ có thể phât sinh lỗi sẽ gđy
ra nhầm lẫn cho người lập trình.
¾ Nói tóm lại lă bạn sẽ mất thím thời gian lưu tđm đến chúng.
Kiểu dữ liệu - Data type
Như đê trình băy câc lại dữ liệu trong phần trín, khi xđy dựng cơ sở dữ liệu, tất cả những trường trong bảng cần phải có kiểu dữ liệu cụ thể. Vấn đề quan trọng lă chọn kiểu dữ liệu năo cho phù hợp với dữ liệu mă người dùng sẽ nhập văo.
Để thiết kế dữ liệu phù hợp với thực tế, ngoăi tính ứng dụng hợp với ngữ cảnh bạn cũng cần quan tđm đến kiểu dữ liệu tương thích vă chiều dăi của từng cột. Chẳng hạn như:
[CustID] [varchar] (10)
/* hay */
[CustID] int
Giâ trị mặc định - Default
Thông thường khi tạo ra một cột trong bảng đôi khi chúng ta cần âp dụng giâ trị mặc định, không chỉ cho trường hợp số liệu không nhập từ bín ngoăi mă còn cho câc cột tự động có giâ trị tự sinh. Với những lý do như vậy, chúng ta cần có một số giâ trị mặc định cho những cột cần thiết, ví dụ :
¾ Nếu cột đó lă ngăy thâng chúng ta có giâ trị mặc định lă ngăy năo đó (như 0000-00-00 lă
CurDate())
¾ Nếu cột đó có giâ trị lă 0 hoặc 1, bạn có thể khai bâo giâ trị mặc định lă 0 hoặc 1 ¾ Nếu cột đó lă chuỗi chúng ta có giâ trị mặc định như lă 'A'