Sunday, August 17, 2014 1
CH NG 2:ƯƠ
THI T K C S DẾ Ế Ơ Ở Ữ
LI U K TOÁN Ệ Ế
< ti t>ế
Sunday, August 17, 2014
NỘI DUNG
1. Xây dựng cấu trúc các bảng
dữ liệu
2. Các kiểu dữ liệu (Data types)
3. Thiết kế cơ sở dữ liệu bằng
MS SQL server 2008
Tạo table
Tạo Database Diagrams
Nhập dữ liệu vào table
Sunday, August 17, 2014
TÀI LIỆU
Giáo trình: Chương 2:Thiết kế cơ sở
dữ liệu kế toán, HT TTKT P.2
Tài liệu tham khảo:
[1] Dương Quang Thiện, Chương 3:
‘Table & View, “Lập trình T – SQL”,
NXB Văn Hoá Sài Gòn, trang 77 - 124
[2] SQL Server Books Online (từ khoá
tìm kiếm Create table, data types,
constraint)
Sunday, August 17, 2014
Dẫn nhập….
Nói m t cách đ n gi n, m t ộ ơ ả ộ table là m t ộ
t p h p d li u liên quan đ n m t ch ậ ợ ữ ệ ế ộ ủ
th ể (entity), thu c tính ộ (anttributes).
M i hàng ỗ (row, tuple) trên m t table ộ
ph i duy nh t, và m i hàng d li u có ả ấ ỗ ữ ệ
m t mã nh n di n duy nh t ộ ậ ệ ấ (Primary).
Và phân l n các table trong m t ớ ộ
database th ng có m t m i liên h ườ ộ ố ệ
(Relationship)
Sunday, August 17, 2014
1. XÂY DỰNG CẤU TRÚC
CÁC BẢNG DỮ LIỆU
Danh mục bảng trong kế toán bán hàng
01_DanhMucHangHoa
02_DanhMucKhachHang_NhaCungCap
03_PhieuNhapKho
04_ChiTietNhapKho
05_PhieuXuatKho
06_ChiTietXuatKho
07_ThuChiTienMat
08_NhatKyChung
Sunday, August 17, 2014
2. CÁC KIỂU DỮ LIỆU
Kiểu dữ liệu quy định các giá trị dữ
liệu được phép cho cột đó.
Kiểu dữ liệu
Kiểu dữ liệu được định nghĩa bởi hệ
thống (System Defined Datatypes) “bẩm
sinh”
Kiểu dữ liệu do người dùng định
nghĩa (User Defined Datatypes)
Sunday, August 17, 2014
Type DataType Size
/Range
Binary Binary
Varbinary
Image
Character Char Chuỗi ký tự chiều dài cố định
Varchar Chuỗi ký tự chiều dài thay đổi
Text Dùng chứa kiểu dữ liệu lớn (2G)
Unicode Nchar Chuỗi ký tự Unicode chiều dài cố định
NVarchar Chuỗi ký tự Unicode chiều dài thay đổi
NText
Date and
Time
Datetime
Ngày và giờ
Smalldatetime
Decimal
Decimal
Numeric
Kiểu số với độ chính xác cố định
System Defined Datatypes
Sunday, August 17, 2014
Type DataType Size
/Range
Foating
point
Float
Số thực
Real
Integer (số
nguyên)
Bigint 8 byte
Int 4 byte
Smallint 2 byte
Tinyint 1 byte
Monetary Money
Smalmoney
Special
Bit
Cursor
Timestamp
Uniqueidentifier
SQL_variant
Sunday, August 17, 2014
Example 1
Hãy cho biết kiểu dữ liệu phù hợp
với các cột sau:
Số thứ tự (1, 2, 3)
Số chứng từ (PN00301)
Ngày chứng từ (20/12/2010)
Tài khoản nợ, có (511)
Số lượng (10,02)
Đơn giá (1000000)
Thuế suất (10%)
Số phát sinh (1000000)
Diễn giải (nhập hàng hoá đơn…)
Sunday, August 17, 2014
3. CÁC HẠN BUỘC
(CONSTRAINT)
Toàn vẹn dữ liệu là bảo đảm dữ liệu
trong database luôn đúng
Sử dụng các ràng buộc để đảm bảo
toàn vẹn dữ liệu của CSDL và xây dựng
quan hệ giữa các bảng.
Có 2 kỹ thuật để đảm bảo tính toàn
vẹn dữ liệu:
Toàn vẹn mang tính thủ tục
(procedural integrity): sử dụng
trigger, stored procedure
Toàn vẹn khai báo (declarative
integrity): contraint, default, rule
Sunday, August 17, 2014
3. CÁC HẠN BUỘC
(CONSTRAINT)
Có 5 loại hạn buộc:
PRIMARY KEY
UNIQUE KEY
FOREIGN KEY
CHECK
DEFAULT
Sunday, August 17, 2014
Giá trị NULL hoặc NOT NULL
Giá trị NULL dùng để chỉ các giá trị
chưa biết, không thể dùng được, hay
sẽ được bổ sung sau (giá trị bắt buộc
phải nhập hay không bắt buộc phải
nhập).
Ví dụ: Số điện thoại của khách hàng
hiện tại chưa có, nhưng có thể sẽ
được bổ sung này. Số điện thoại sẽ có
giá trị là null.
Sunday, August 17, 2014
PRIMARY KEY (PK)
Mỗi hàng dữ liệu trong một table
phải là duy nhất và có thể phân
biêt đối với các hàng dữ liệu khác
trong table.
PRIMARY KEY: không được nhận
giá trị Null
Mỗi một bảng chỉ có một PK
Sunday, August 17, 2014
UNIQUE KEY
Một hạn buộc Unique cũng tương
tự như Primary Key.
Khác: Có thể cho phép Null
Sunday, August 17, 2014
FOREIGN KEY
Foreign key (FK): là tập hợp các
cột dữ liệu trên một bảng dữ liệu
(bảng dữ liệu lệ thuộc), theo đấy giá
trị cột khớp với các giá trị của PK
(bảng dữ liệu cha - mẹ).
FK: không được Null, kiểu dữ liệu
giống giá trị của PK
Sunday, August 17, 2014
CHECK
Cho biết một điều kiện mà hàng
dữ liệu phải thoả mãn trước khi nó
có thể được chèn hoặc cập nhật
Sunday, August 17, 2014
DEFAULT
Default dùng để xác định giá trị
“sẵn trước” được gán cho 1 cột khi
thêm 1 bản ghi mới vào bảng.
Default nhận giá trị như chuỗi ký
tự, hàm hệ thống, hay giá trị
NULL.
Sunday, August 17, 2014
Example 2
Tạo table có tên HoSoNhanVien có
các cột sau:
MaNhanVien, char (10), Primary
key
SoCMND, char (10), Unique key
Tuoi, int, tuổi lớn hơn 18 tuổi và
nhỏ hơn 40 tuổi (Check)
DiaChi: varchar (50), mặt định là
“Nhân viên mới”
Sunday, August 17, 2014
4. THIẾT KẾ BẢNG DỮ LIỆU
(TABLE)
M t s yêu c u khi thi t k table?ộ ố ầ ế ế
M c đích và ụ vai trò c a tableủ trong
database?
Table g m nh ng ồ ữ c tộ gì, ki u d li uể ữ ệ c a ủ
c t đó?ộ
Nh ng c t nào cho phép nh n giá tr ữ ộ ậ ị Null,
Not Null?
Có s d ng các ử ụ ràng bu cộ hay không?
Nh ng c t nào đóng vai trò là ữ ộ Primary,
Foreign, Unique key, Check?
Sunday, August 17, 2014
4. THIẾT KẾ BẢNG DỮ LIỆU
Các thao tác khi khi thiết kế table
Tạo table (sinh)
Hiệu chỉnh table (lão, bệnh)
Xoá table (tử)
Khi thao tác với table có thể bằng
Công cụ Enterprise Manage
Bằng lệnh SQL
Sunday, August 17, 2014
Thiết kế bảng bằng công cụ
Chọn con trỏ chuột tới database cần
tạo table, sau đó click chuột phải
chọn:
New table: tạo bảng mới
Modify: Hiệu chỉnh bảng
Delete: Xoá bảng
Open table: nhập dữ liệu vào
bảng
Sunday, August 17, 2014
Example 3
1.Tạo bảng: HOSONHANVIEN
(MaNV,SoCMND,HoTen,NamSinh,
SoPhone)
Yêu cầu:
MaNV, khoá chính, not null
SoCMND, duy nhất
Namsinh: lớn lơn năm 1990
SoPhone: duy nhất
Sunday, August 17, 2014
Example 3
Thêm cột Diachi (địa chỉ nhà) vào
table HOSONHANVIEN
Xoá cột: DiaChi
Sunday, August 17, 2014
Thiết bảng bằng câu lệnh SQL
Cú pháp câu lệnh Create table:
CREATE TABLE table_name
(
colname_1 col_1_properties [constraint_1],
colname_2 col_2_properties [constraint_2],
…
[,colname_n col_n_properties [constraint_n],
[Table constraint]
)
Sunday, August 17, 2014
Cú pháp câu lệnh Create table:
Table_name: Tên bảng cần tạo
(duy nhất)
Colname_i: Tên cột thứ i của bảng
Col_1_properties: Kiểu dữ kiệu, và
giá trị Null hoặc Not Null
Constraint_n: Các ràng buộc
Table constraint: Các ràng buộc
trên bảng dữ liệu