Tải bản đầy đủ (.pdf) (51 trang)

Xây dựng website bán đồ thể thao

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.18 MB, 51 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA HỆ THỐNG THÔNG TIN

------

ĐỀ TÀI : WEBSITE BÁN ĐỒ THỂ THAO


NHẬN XÉT CỦA GIÁO VIÊN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


MỤC LỤC
........................................................................................................................................ 1
GIỚI THIỆU ................................................................................................................. 1
Phần 1: Tổng quan về đề tài ........................................................................................ 2
Chương 1 :

Phát biểu bài toán ................................................................................. 2

I. Mô tả đề tài ........................................................................................................... 2
Khảo sát hiện trạng ........................................................................................... 2

II.
1.

Nghiệp vụ và quy trình .................................................................................. 2

2.

Hiện trạng tài nguyên .................................................................................... 3



III.

Phân tích yêu cầu .............................................................................................. 3

1.

Yêu cầu chức năng......................................................................................... 3

2.

Yêu cầu phi chức năng .................................................................................. 3

Chương 2 : Thiết kế dữ liệu ......................................................................................... 4
I. Thiết kế mơ hình quan hệ ..................................................................................... 4
1.

Lược đồ cơ sở dữ liệu .................................................................................... 4

2.

Mơ hình quan hệ ............................................................................................ 5
Bảng thuyết minh các quan hệ và thuộc tính .................................................... 5

II.
1.

Nhân viên ....................................................................................................... 5

2.


Khách hàng .................................................................................................... 6

3.

Loại khách hàng............................................................................................. 6

4.

Sản phẩm ....................................................................................................... 6

5.

Nhóm sản phẩm ............................................................................................. 7

6.

Dòng sản phẩm .............................................................................................. 7

7.

Khuyến mãi.................................................................................................... 7

8.

Đơn đặt hàng.................................................................................................. 7

9.

Chi tiết đơn hàng ........................................................................................... 8


10. Thông tin người nhận .................................................................................... 9
11. Hóa đơn.......................................................................................................... 9
12. Chi tiết hóa đơn ............................................................................................. 9
III.

Mơ tả các ràng buộc tồn vẹn ......................................................................... 10

Phần 2 : Các vấn đề nhận diện khi xử lý đồng thời................................................. 11


Chương 1 : Transaction và Lock .............................................................................. 11
I. Giao tác ( Transaction ) ...................................................................................... 11
1.

Khái niệm..................................................................................................... 11

2.

Các tính chất của giao tác ............................................................................ 11

3.

Các lệnh T-SQL đặc trưng của giao tác ...................................................... 11

4.

Các vấn đề thường gặp khi xây dựng giao tác: ........................................... 12
Lock và xử lý đồng thời ( concurrency ) ........................................................ 13


II.
1.

Những vấn đề của xử lý đồng thời .............................................................. 13

2.

Những loại tài nguyên có thể khóa .............................................................. 14

3.

Deadlock ...................................................................................................... 15

4.

Các phương thức khóa ................................................................................. 16

5.

Sử dụng các phương thức khóa ................................................................... 18

6.

Các mức cơ lập ( Isolation level) ................................................................. 19

III.

Các bước xây dựng giao tác ............................................................................ 21

IV.


Ví dụ minh họa so sánh giữa các mức cô lập ................................................. 24

1. Ví dụ 1 : So sánh mức cơ lập READ UNCOMMITTED và READ
COMMITTED ...................................................................................................... 24
2.

Ví dụ 2 : So sánh READ COMMITTED và REPEATABLE READ ......... 25

3.

Ví dụ 3 : So sánh REPEATABLE READ và SERIALIZABLE ................. 27

Chương 2 : Liên kết ngơn ngữ lập trình JAVA và SQL Server 2008 R2 – Lập
trình giao tác 29
I. Stored Procedure ................................................................................................ 29
II.

Java.................................................................................................................. 29
1.

Sơ lược về JDBC ......................................................................................... 29

2.

Transaction trên JDBC ................................................................................ 30

3.

Thực hiện giao tác trên Java ........................................................................ 32


Phần 3 : Cài đặt ứng dụng minh họa ........................................................................ 35
Sơ đồ logic............................................................................................................ 35

I.

II. Các giao tác chính ............................................................................................... 35
Thao tác đặt hàng ............................................................................................ 35

1.
a.

Các bước thực hiện ...................................................................................... 35

b.

Vấn đề tranh chấp ........................................................................................ 36


c.

Hướng giải quyết ......................................................................................... 36

d.

Cài đặt giao tác ............................................................................................ 36
Giao tác xử lý đơn hàng .................................................................................. 40

2.
a.


Các bước thực hiện ...................................................................................... 40

b.

Vấn đề tranh chấp ........................................................................................ 41

c.

Hướng giải quyết ......................................................................................... 41

d.

Cài đặt giao tác ............................................................................................ 41
Giao tác hủy đơn hàng .................................................................................... 44

3.
a.

Các bước thực hiện ...................................................................................... 44

b.

Vấn đề tranh chấp ........................................................................................ 44

c.

Hướng giải quyết ......................................................................................... 44

d.


Cài đặt giao tác ............................................................................................ 44

Tài liệu tham khảo ....................................................................................................... 46


Báo cáo hệ quản trị cơ sở dữ liệu 2014

GIỚI THIỆU
Từ khi có Internet và sự phát triển mạnh mẽ của công nghệ số đã làm cho cuộc
sống con người thay đổi, số lượng người sử dụng Internet phục vụ cho cơng việc
cũng như giải trí ngày càng tăng vì những lợi ích mà nó mang lại. Có thể nói
internet là một trong những công cụ không thể thiếu trong đời sống ngày nay.
Như chúng ta đã biết Hoạt động kinh doanh là một trong những hoạt động góp
phần khơng nhỏ vào việc thúc đẩy phát triển nền kinh tế của quốc gia. Tuy nhiên
hiện tại việc kinh doanh vẫn đang sử dụng phương thức truyền thống đó là người
mua và người bán trực tiếp gặp gỡ nhau và trao đổi với nhau, với phương thức này
thì việc tiêu tốn về thời gian cũng như chi phí chắc chắn là sẽ cịn ở mức cao do đó
hiệu quả mà nó mang lại không thực sự tốt. Để giải quyết vấn đề này nhóm chúng
tơi đã nảy sinh ý tưởng xây dựng một website :”Bán đồ thể thao” giúp cửa hàng
tiếp cận được một lượng người dùng internet hiện nay quan tâm đến các đồ dùng
thể thao từ đó giảm thiểu chi phí và tăng lợi nhuận cho cửa hàng , ngồi ra website
cịn giúp cửa hàng dễ dàng quản lý thơng tin trong hoạt động kinh doanh của mình.
Khơng chỉ hỗ trợ tốt cho cửa hàng , đối với người mua việc sử dụng máy tính có
kết nối internet để mua hàng cũng tiện lợi hơn rất nhiều, việc mua hàng bây giờ
không nhất thiết phải đến trực tiếp cửa hàng mới mua được hàng mà ở nhà cũng
có thể mua được hàng.

Trang | 1



Báo cáo hệ quản trị cơ sở dữ liệu 2014

Phần 1: Tổng quan về đề tài
Chương 1 : Phát biểu bài tốn
I. Mơ tả đề tài
Xây dựng website Bán đồ thể thao hỗ trợ việc kinh doanh đồ thể thao trực tuyến
cũng như quản lý thông tin kinh doanh của cửa hàng bán đồ thể thao Trúc Quỳnh
 Đối với khách hàng
 Khi khách hàng truy cập vào website và muốn thực hiện mua hàng thì phải
thực hiện đăng ký tài khoản và tài khoản đó được phía cửa hàng chấp nhận
 Sau khi đã có tài khoản đăng ký trên website của cửa hàng thì khách hàng
có thể thực hiện được các chức năng sau :
- Đăng nhập vào website
- Quản lý thơng tin cá nhân
- Tìm sản phẩm
- Mua hàng
 Đối với cửa hàng
 Khi sử dụng website cửa hàng sẽ có 2 loại Tài khoản để đăng nhập vào hệ
thống : Một loại tài khoản dành cho Người quản trị tài khoản này có quyền
cao nhất, loại tài khoản này sẽ được cấp khi giao cho cửa hàng và loại tài
khoản thứ hai là tài khoản dành cho nhân viên bán hàng, tài khoản này sẽ
được người Quản trị tạo ra và cấp cho nhân viên
 Các chức năng dành cho cửa hàng là :
- Quản lý hàng hóa
- Quản lý khách hàng
- Quản lý User
- Nhập hàng
- Lập hóa đơn
- Thống kê


II.

Khảo sát hiện trạng

1. Nghiệp vụ và quy trình
 Đối với người quản lý cửa hàng sẽ thực hiện các chức năng quản trị cửa
hàng như : Sao lưu phục hồi dữ liệu của toàn bộ hệ thống và Quản lý nhân
viên.
 Đối với nhân viên khi đăng nhập thành công vào hệ thống. Hệ thống sẽ cho
phép nhân viên cửa hàng thực hiện các chức năng quản lý mua bán của cửa
hàng như : Quản lý khách hàng, thống kê hàng tồn, quản lý hàng hóa, lập
hóa đơn bán hàng, thống kê doanh thu hàng tháng,...

Trang | 2


Báo cáo hệ quản trị cơ sở dữ liệu 2014
 Đối với khách hàng khi truy cập vào website thì hệ thống sẽ không yêu cầu
đăng nhập và cho phép khách hàng tra cứu thơng tin về hàng hóa được bày
bán tại cửa hàng. Các thông tin tra cứu gồm giá cả, hình ảnh minh họa hàng
hóa, xuất xứ của hàng hóa. Chỉ khi khách hàng có nhu cầu đặt mua sản
phẩm thì hệ thống mới yêu cầu khách hàng đăng nhập. Ngồi ra để khuyến
khích khách hàng mua hàng, cửa hàng có chương trình tặng thẻ thành viên
cho những khách hàng thường xuyên mua sắm tại cửa hàng. Khách hàng có
thể tra cứu thơng tin về điểm tích lũy, sửa thơng tin tài khoản, cấp độ thân
thiết của mình với cửa hàng trên hệ thống website, khi đã là khách hàng
thân thiết của cửa hàng thì sẽ có những dịp khuyến mãi tùy theo mức độ
thân thiết đối với cửa hàng và sẽ được hưởng chính sách giảm giá khi mua
hàng ở của hàng. Tuy nhiên nếu sau 6 tháng kể từ lần mua cuối cùng mà

khách hàng đó khơng mua tại cửa hàng thì hệ thống sẽ phải tự xóa khách
hàng này ra khỏi danh sách khách hàng thân thiết của cửa hàng.
2. Hiện trạng tài nguyên
 Server có cấu hình cao, hỗ trợ đầy đủ các dịch vụ và có thể cài đặt website
và hoạt động tốt
 Đường truyền ADSL tốc độ cao
 Nhân viên khách hàng có trình độ tin học A và sử dụng máy tính thành thạo
 Khách hàng có Máy tính kết nối internet và sử dụng thành tạo máy tính
III.

Phân tích yêu cầu
1. Yêu cầu chức năng
 Cung cấp các chức năng quản lý cho chủ cửa hàng : Quản lý nhân viên,
Quản lý dữ liệu hệ thống
 Cung cấp các chức năng cho Khách hàng bao gồm : Đăng ký tài khoản,
đăng nhập vào website, quản lý thơng tin cá nhân,tìm sản phẩm,mua hàng
 Cung cấp các chức năng quản lý bán hàng cho Nhân viên bao gồm : Quản
lý hàng hóa, Quản lý khách hàng, Nhập hàng, Lập hóa đơn, Thống kê
2. Yêu cầu phi chức năng
 Triển khai hệ thống ở dạng website
 Giao diện quản lý gần gũi thân thiện, dễ sử dụng
 Giao diện cho khách hàng thân thiện, sinh động và có tính tương tác cao
 Đảm bảo thông tin trong hệ thống được bảo mật và không bị mất mát khi
xảy ra sự cố

Trang | 3


Báo cáo hệ quản trị cơ sở dữ liệu 2014


Chương 2 : Thiết kế dữ liệu
I.

Thiết kế mơ hình quan hệ

1. Lược đồ cơ sở dữ liệu
 NHANVIEN ( MANV, HOTENNV, NGAYSINHNV, GIOITINHNV,
DIACHINV, SODTNV, TENDNNV, MATKHAUNV )
 KHACHHANG ( MAKH, MALOAIKH, TENKH, GIOITINHKH,
DIACHIKH, SODTKH, TENDNKH, MATKHAUKH, DIEMMUAHANG,
TRANGTHAI, NGAYSINHKH, EMAILKH )
 LOAIKHACHHANG ( MALOAIKH, TENLOAIKH, GHICHU )
 SANPHAM ( MASP, MANHOMSP, TENSP, GIASP, XUATXU,
DONVITINH, HINHANH, SOLUONG )
 NHOMSANPHAM ( MANHOMSP, MADONGSP, TENNHOMSP,
GHICHUSP )
 DONGSANPHAM (MADONGSP, TENDONGSP, GHICHU)
 KHUYENMAI ( MAKH, MASP, NGAYBATDAU, NGAYKETTHUC,
GIAKM )
 DONDATHANG ( MADH, MAKH, NGAYDH, TINHTRANG,
TONGTIEN)
 CT_DONHANG ( MADH, MASP, SOLUONG, THANHTIEN)
 THONGTINNGUOINHAN ( ID, HOTEN, DIACHI, DIENTHOAI,
PHUONGTHUCGIAOHANG, HINHTHUCTHANHTOAN,
YEUCAUKHAC, MADH )
 HOADON ( MAHD, MANV, NGAYHD, TONGTIENHD, MAKH )
 CT_HOADON (MAHD, MASP, SOLUONG, THANHTIEN )

Trang | 4



Báo cáo hệ quản trị cơ sở dữ liệu 2014
2. Mơ hình quan hệ

II. Bảng thuyết minh các quan hệ và thuộc tính
Bảng mơ tả thuộc tính của các quan hệ có trong lược đồ cơ sở dữ liệu
1. Nhân viên
STT Thuộc tính

Kiểu dữ liệu

Ý nghĩa

1

MANV

VARCHAR

2

HOTENNV

NVARCHAR

Mã nhân viên ( Là khóa chính của quan
hệ )
Họ và tên nhân viên

3


NGAYSINHNV DATETIME

Ngày sinh nhân viên

4

GIOITINHNV

CHAR

Giới tính nhân viên

5

DIACHINV

NVARCHAR

Địa chỉ nhân viên

6

SODTNV

VARCHAR

Số điện thoại nhân viên

7


TENDNNV

VARCHAR

Tên đăng nhập nhân viên

8

MATKHAUNV VARCHAR

Trang | 5

Mật khẩu nhân viên


Báo cáo hệ quản trị cơ sở dữ liệu 2014
2. Khách hàng
STT Tên thuộc tính

Kiểu dữ liệu

Ý nghĩa

1

MAKH

VARCHAR


2

MALOAIKH

VARCHAR

3

TENKH

NVARCHAR

Mã khách hàng ( Là khóa chính của
quan hệ )
Mã loại khách hàng ( Khóa ngoại
tham chiếu đến bảng
LOAIKHACHHANG )
Họ và tên khách hàng

4

GIOITINHKH

CHAR

Giới tính khách hàng

5

DIACHIKH


NVARCHAR

Địa chỉ khách hàng

6

SODTKH

VARCHAR

Số điện thoại khách hàng

7

TENDNKH

VARCHAR

Tên đăng nhập khách hàng

8

MATKHAUKH

VARCHAR

Mật khẩu khách hàng

9


DIEMMUAHANG INT

Điểm mua hàng

10

TRANGTHAI

CHAR

Trạng thái

11

NGAYSINHKH

DATE

Ngày sinh khách hàng

12

EMAILKH

VARCHAR

Email khách hàng

3. Loại khách hàng

STT Tên thuộc tính

Kiểu dữ liệu

Ý nghĩa

1

MALOAIKH

VARCHAR

Mã loại khách hàng

2

TENLOAIKH

NVARCHAR

Tên loại khác hàng

3

GHICHU

NVARCHAR

Ghi chú


4. Sản phẩm
STT Tên thuộc tính
1
MASP

Kiểu dữ liệu
VARCHAR

Ý nghĩa
Mã sản phẩm ( Là khóa chính của
quan hệ

2

MANHOMSP

VARCHAR

3
4
5
6
7
8
9

TENSP
GIASP
MOTASP
XUATXU

DONVITINH
HINHANH
SOLUONG

NVARCHAR
MONEY
NVARCHAR
NVARCHAR
NVARCHAR
VARCHAR
INT

Mã nhóm sản phẩm ( Là khóa ngoại
tham chiếu tới bảng
NHOMSANPHAM )
Tên sản phẩm
Giá sản phẩm
Mơ tả sản phẩm
Xuất xứ
Đơn vị tính
Hình ảnh
Số lượng

Trang | 6


Báo cáo hệ quản trị cơ sở dữ liệu 2014
5. Nhóm sản phẩm
STT Thuộc tính


Kiểu dữ liệu

Ý nghĩa

1

MANHOMSP

VARCHAR

2

MADONGSP

VARCHAR

3

TENNHOMSP

NVARCHAR

Mã nhóm sản phẩm ( Là khóa chính
của quan hệ )
Mã dịng sản phẩm ( Là khóa ngoại
tham chiếu tới bảng
DONGSANPHAM )
Tên nhóm sản phẩm

4


GHICHU

NVARCHAR

Ghi chú

6. Dịng sản phẩm
STT Thuộc tính

Kiểu dữ liệu

Ý nghĩa

1

MADONGSP

VARCHAR

3

TENDONGSP

NVARCHAR

Mã dịng sản phẩm ( Là khóa chính
của quan hệ )
Tên dịng sản phẩm


4

GHICHU

NVARCHAR

Ghi chú

7. Khuyến mãi
STT Thuộc tính
1
MAKM

Kiểu dữ liệu
VARCHAR

Ý nghĩa
Mã khuyến mãi ( Là khóa chính của
quan hệ)

2

MASP

VARCHAR

Mã sản phẩm ( Là khóa ngoại tham
chiếu tới bảng SANPHAM )

3

4
5

NGAYBATDAU
NGAYKETTHUC
GIAKM

DATETIME
DATETIME
INT

Ngày bắt đầu
Ngày kết thúc
Giá khuyến mãi

8. Đơn đặt hàng
STT Tên thuộc tính

Kiểu dữ liệu

Ý nghĩa

1

MADH

VARCHAR

2


MAKH

VARCHAR

3

NGAYDH

DATETIME

Mã đơn hàng ( Là khóa chính của
quan hệ )
Mã khách hàng ( Là khóa ngoại tham
chiếu tới bảng KHACHHANG)
Ngày đặt hàng

4

TINHTRANG

INT

Tình trạng đơn hàng

5

TONGTIEN

MONEY


Tổng tiền đơn hàng

Trang | 7


Báo cáo hệ quản trị cơ sở dữ liệu 2014
9. Chi tiết đơn hàng

Trang | 8


Báo cáo hệ quản trị cơ sở dữ liệu 2014

STT Thuộc tính

Kiểu dữ liệu

Ý nghĩa

1

MADH

VARCHAR

2

MASP

VARCHAR


3

SOLUONG

INT

Mã đơn hàng ( Là khóa ngoại tham
chiếu tới bảng DONDATHANG )
Mã sản phẩm ( Là khóa ngoại tham
chiếu tới bảng SANPHAM )
Số lượng sản phẩm

4

THANHTIEN

MONEY

Thành tiền

10. Thơng tin người nhận
STT Thuộc tính

Kiểu dữ liệu

Ý nghĩa

1


ID

INT

Là khóa chính của quan hệ

2

HOTEN

NVARCHAR

Họ tên người nhận hàng

3

DIACHI

NVARCHAR

Địa chỉ người nhận

4

DIENTHOAI

VARCHAR

Điện thoại


5

PHUONGTHUCGIAOHANG NVARCHAR

Phương thức giao hàng

6

HINHTHUCTHANHTOAN

NVARCHAR

Hình thức thanh tốn

7

YEUCAUKHAC

NVARCHAR

u cầu khác

8

MADH

VARCHAR

Mã đơn hàng


11. Hóa đơn
STT Thuộc tính

Kiểu dữ liệu

Ý nghĩa

1

MAHD

VARCHAR

2

MANV

VARCHAR

3

MAKH

VARCHAR

4

NGAYHD

DATETIME


Mã hóa đơn ( Là khóa chính của
quan hệ )
Mã nhân viên ( Là khóa ngoại tham
chiếu đến bảng NHANVIEN )
Mã khách hàng ( Là khóa ngoại
tham chiếu đến bảng
KHACHHANG )
Ngày hóa đơn

5

TONGTIENHD

MONEY

Tổng tiền hóa đơn

12. Chi tiết hóa đơn

Trang | 9


Báo cáo hệ quản trị cơ sở dữ liệu 2014

III.









STT Thuộc tính

Kiểu dữ liệu

Ý nghĩa

1

MAHD

VARCHAR

2

MASP

VARCHAR

3

SOLUONG

INT

Mã đơn hàng ( Là khóa ngoại tham
chiếu tới bảng HOADON )

Mã sản phẩm ( Là khóa ngoại tham
chiếu tới bảng SANPHAM )
Số lượng sản phẩm

4

THANHTIEN

MONEY

Thành tiền

Mơ tả các ràng buộc tồn vẹn
R 1: Một Khách hàng phải thuộc một loại khách hàng
R2: Một Sản phẩm phải thuộc một nhóm sản phẩm
R3: Một Nhóm sản phẩm phải thuộc một dòng sản phẩm
R4: Ngày bắt đầu khuyến mãi của một sản phẩm phải nhỏ hơn hoặc bằng ngày
kết thúc khuyến mãi
R5: Ngày đặt hàng phải nhỏ hơn hoặc bằng ngày hóa đơn tương ứng
R6: Một đơn hàng phải có tối thiểu một chi tiết đơn đơn hàng và một thơng tin
người nhận hàng
R7: Một hóa đơn phải có ít nhất một chi tiết hóa đơn

Trang | 10


Báo cáo hệ quản trị cơ sở dữ liệu 2014

Phần 2 : Các vấn đề nhận diện khi xử lý đồng thời
Chương 1 : Transaction và Lock

I.

Giao tác ( Transaction )

1. Khái niệm
Giao tác là tập hợp những thao tác có thứ tự truy xuất dữ liệu trên CSDL thành
một đơn vị công việc Logic (được xem là một thao tác nguyên tố), chuyển
CSDL từ trạng thái nhất quán này sang trạng thái nhất quán khác
2. Các tính chất của giao tác
Giao tác có 4 tính chất như sau :
a. Tính ngun tố (Atomicity)
Một giao dịch có nhiều thao tác khác biệt thì hoặc là các thao tác đều được
thực hiện và hồn thành hoặc khơng có thao tác nào được thực hiện
b. Tính nhất quán (Consistency)
Một giao dịch hoặc tạo ra một trạng thái mới và hợp lễ dữ liệu hoặc nếu xảy
ra lỗi thì phải khơi phục dữ liệu về trạng thái ban đầu khi chưa thực hiện
giao dịch
c. Tính cơ lập (Isolation)
Một giao dịch được thực thi và chưa được xác nhận thì phải đảm bảo tách
biết với các giao dịch khác
d. Tính bền vững (Durability)
Dữ liệu được xác nhận sẽ được hệ thống lưu lại sao cho ngay cả trong
trường hợp hỏng hóc hoặc có lỗi hệ thống, dữ liệu vẫn đảm bảo trong trạng
thái chuẩn xác
3. Các lệnh T-SQL đặc trưng của giao tác
a. Bắt đầu một Transaction:
BEGIN {TRANSACTION | TRAN}
b. Kết thúc giao tác thành công:
COMMIT {TRANSACTION | TRAN}


hoặc COMMIT

c. Lưu Transaction (đánh dấu vị trí cần rollback):
SAVE {TRANSACTION | TRAN}

Trang | 11


Báo cáo hệ quản trị cơ sở dữ liệu 2014
d. Lệnh quay lui:
Khi giao tác kết thúc không thành công, hồn tác những thao tác thực hiện trên
CSDL trước đó. Đưa CSDL về trạng thái trước khi thực hiện giao tác, các
khóa nằm trong phần thao tác bị rollback sẽ được mở ra.
ROLLBACK {TRANSACTION | TRAN}
4. Các vấn đề thường gặp khi xây dựng giao tác:
a. Kiểm tra lỗi khi thực hiện giao tác:
 Những lỗi thường gặp:
 Khơng có quyền truy cập đối tượng (table, store procedure,…)
 Vi phạm ràng buộc tồn vẹn.
 Update, Insert một dịng dữ liệu đã có sẵn.
 Deadlock.
 ……..
 SQL Server trả về giá trị lỗi trong biến toàn cục @@ERROR:
Kiểu dữ liệu trả về: Interger.
@@ERROR = 0: Khơng có lỗi.
@@ERROR ≠ 0: Có lỗi với mã lỗi là @@ERROR
Giao tác không tự ROLLBACK khi gặp lỗi phát sinh.
Cần kiểm tra giá trị biến @@ERROR và đưa ra xử lí, cần chỉ rõ điểm
ROLLBACK một cách tường minh nếu khơng tồn bộ giao tác sẽ bị
hủy.

Ví dụ: Giao tác khơng kiểm lỗi:
BEGIN TRAN
EXEC sp_Test
COMMIT TRAN
Giao tác có kiểm lỗi:

Trang | 12


Báo cáo hệ quản trị cơ sở dữ liệu 2014
BEGIN TRAN
EXEC sp_Test
IF (@@ERROR <> )
ROLLBACK TRAN
COMMIT TRAN
b. @@ROWCOUNT và @@TRANCOUNT:
 Biến toàn cục @@ROWCOUNT (trả về kiểu interger) chứa số dịng dữ
liệu tìm thấy trong lệnh.
 Biến tồn cục @@TRANCOUNT (trả về kiểu interger) cho biết số
Transaction đang thực hiện,chưa kết thúc với ROOLBACK hay COMMIT
trong Connection hiện tại.
c. Transaction lồng nhau:
 Các transaction có thể lồng nhau khơng q 32 cấp.
 Lệnh COMMIT ngoài cùng mới thực sự kết thúc giao tác.
 Lệnh ROLLBACK TRAN bất kì trong giao tác (khơng có kèm SAVE
POINT) sẽ ROLLBACK tồn bộ giao tác.

II.

Lock và xử lý đồng thời ( concurrency )


1. Những vấn đề của xử lý đồng thời
a. DirtyReads (đọc dữ liệu chưa commit):
Xảy ra khi một giao tác thực hiện đọc trên một đơn vị dữ liệu mà đơn vị dữ
liệu này đang bị cập nhật bởi một giao tác khác nhưng việc cập nhật chưa
được xác nhận.
b. Unrepeatable Reads (thao tác đọc khơng thể lặp lại):
Tình trạng này xảy ra khi một giao tác T1 vừa thực hiện xong thao tác đọc
trên một đơn vị dữ liệu mà chưa được commit thì giao tác khác (T2) lại
thay đổi (ghi) trên đơn vị dữ liệu này. Điều này làm cho lần đọc sau đó của
T1 khơng cịn nhìn thấy dữ liệu ban đầu nữa.

Trang | 13


Báo cáo hệ quản trị cơ sở dữ liệu 2014
c. Phantoms (bóng ma dữ liệu):
Là tình trạng mà một giao tác đang thao tác trên một tập dữ liệu nhưng giao
tác khác lại chèn thêm các dòng dữ liệu vào tập dữ liệu mà giao tác kia quan
tâm.
d. Lost Updates (mất dữ liệu cập nhật):
Tình trạng này xảy ra khi có nhiều hơn một giao tác cùng thực hiện cập nhật
trên 1 đơn vị dữ liệu. Khi đó, tác dụng của giao tác cập nhật thực hiện sau
sẽ đè lên tác dụng của thao tác cập nhật trước.

2. Những loại tài nguyên có thể khóa
 Trong SQL Sever 2008 R2 có 12 loại tài nguyên có thể khóa
STT
Tài nguyên
1 _Total

2 AllocUnit
3 Application
4

Database

5
6

Extent
File

7

Heap/BTree

8

Key

9

Metadata

10
11
12

Trang | 14


Ý nghĩa
Thơng tin tất cả các khóa
Khóa trên một đơn vị
Khóa trên một ứng dụng được chỉ định
Khóa trên một Cơ sở dữ liệu bao gồm các đối tượng nằm trong

Khóa trên một extent gồm 8 page
Khóa trên một file dữ liệu
Một khóa bảo vệ một chỉ số hoặc một số các trang dữ liệu trong
một bảng mà khơng có một chỉ số nhóm.
Khóa trên một hay một số khóa (key) trong một chỉ mục.
Khóa Metadata (siêu dữ liệu)

Object
Khóa trên một bảng, Một stored procedure, view,…
Page
Khóa trên một trang có kích thước 8Kb trong cơ sở dữ liệu
RID
Khóa trên một dịng của Heap
 Khi khóa một đơn vị dữ liệu cấp cao thì nhưng đơn vị dữ liệu cấp thấp
hơn cũng bị khóa. Ví dụ khi ta Khóa trên một bảng thì các dịng trong
bảng cũng bị khóa bởi khóa đó
 Khi khóa trên đơn vị dữ liệu con thì đơn vị dữ liệu cha cũng bị khóa bởi
intent tương ứng


Báo cáo hệ quản trị cơ sở dữ liệu 2014

DATABASE


TABLE

PAGE

ROW

PAGE

ROW

3. Deadlock
Deadlock là tình trạng mà các giao tác khơng thể hoàn thành được do các giao
tác liên quan phải chờ nhau về một tài nguyên nào đó mà một giao tác khác
đang chiếm giữ
Có 2 loại Deadlock : Cycle Deadlock, Conversion Deadlock

Trang | 15


Báo cáo hệ quản trị cơ sở dữ liệu 2014

a. Cycle Deadlock
 Giả sử ta có 2 giao tác T1, T2 và có 2 tài nguyên A và B. Khi đó trường hợp
Cycle Deadlock được mơ tả như bảng sau
T1

T2

Lock (A)
Read (A)

Lock( B)
Read(B)
Lock (A) (Chờ T1 giải phóng khóa
trên A)

Lock (B) (Chờ T2 giải phóng khóa
trên B)
b. Conversion Deadlock
 Giả sử ta có 2 giao tác T1, T2 và có 1 tài nguyên A. Khi đó trường hợp
Conversion Deadlock xảy ra khi cả 2 giao tác đều giữ Share Lock trên tài
nguyên A và cả 2 giao tác T1 và T2 đều yêu cầu khóa Exclusive Lock do
lúc này T1 phải chờ T2 và T2 chờ T1
4. Các phương thức khóa

a. Shared Locks
 Shared Lock Read Lock
 Khi đọc một đơn vị dữ liệu SQL server tự thiết lập Share Lock trên đơn vị
dữ liệu đó (trừ trường hợp No Lock)
 Share Lock có thể được thiết lập trên các đơn vị dữ liệu gồm :Một dòng dữ
liệu, một trang, một bảng và một cơ sở dữ liệu
 Nhiều giao tác có thể đồng thời giữ Shared Lock trên cùng một đơn vị dữ
liệu
 Không thể thiết lập Exclusive Lock trên đơn vị dữ liệu đang có Shared
Lock
 Thường Shared Lock sẽ được giải phóng sau khi sử dụng xong giữ liệu
được đọc trừ trường hợp bắt buộc phải thiết lập giữ Shared Lock cho đến
khi giao tác kết thúc
b. Exclusive Locks
 Exclusive LockWrite Lock
 Khi thực hiện các giao tác ghi (insert, update, delete) lên một đơn vị dữ liệu

thì SQL server tự động thiết lập Exclusive Lock trên đơn vị dữ liệu đó
 Exclusive Lock sẽ được giữ cho đến khi giao tác kết thúc

Trang | 16


Báo cáo hệ quản trị cơ sở dữ liệu 2014
 Tại một thời điểm chỉ cho một giao tác duy nhất giữ Exclusive Lock trên
một đơn vị dữ liệu
 Không thể thiết lập Exclusive trên đơn vị dữ liệu đang có Shared Lock
c. Update Locks
 Update Lock  Intent-to-Update Lock
 Update Lock sử dụng khi đọc dữ liệu xong và có ý định ghi lại dữ liệu vừa
được của một giao tác
 Update Lock là chế độ khóa trung gian giữa Shared Lock và Exclusive
Lock
 Update Lock không ngăn cản việc thiết lập Shared Lock trên cùng một đơn
vị dữ liệu nên Update Lock tương thích với Share Lock
 Update Lock giúp tránh hiện tượng deadlock xảy ra khi có yêu cầu chuyển
từ chế độ Shared Lock lên Exclusive trên cùng một đơn vị dữ liệu vì Tại
một thời điểm thì Update Lock chỉ có tối đa 1 Update Lock trên một đơn vị
dữ liệu
d. Intent Lock
 Intent Lock không phải là một chế độ khóa riếng biệt mà nó dùng kết hợp
với các khóa khác:
 Shared Lock => Intent Shared Lock (IS)
 Exclusive Lock => Intent Exclusive Lock (IX)
 Update Lock => Intent Update Lock (IU)
 Intent Lock chỉ áp dụng trên Table và Page.
 Intent Lock doSQL Server tự động thiết lập, người dùng không thể tự định

nghĩa.
 Khi một đơn vị dữ liệu bị khóa thì đơn vị dữ liệu cấp cao hơn sẽ bị khóa
bằng Intent Lock tương ứng.
 SQL Server cho phép khóa trên các đơn vị dữ liệu ở nhiều cấp khác nhau
(row, table, page….).Cần có cơ chế kiểm tra các khóa xem đơn vị dữ liệu
thành phần có đang bị khóa hay khơng.
e. Các loại khóa đặc biệt
 Schema Stability Locks (Sch-S)
 Dùng cho Table
 Cho biết đang có 1 lệnh truy vấn có sử dụng đến bảng này đang được
compile, khơng cho phép thay đổi cấu trúc bảng.
Trang | 17


Báo cáo hệ quản trị cơ sở dữ liệu 2014







Tương thích với tất cả các loại khóa trừ Sch-M
Schema Modification Locks (Sch-M)
Dùng cho Table
Cho biết cấu trúc bảng đang được thay đổi
Bulk Update Locks (BU)
Dùng khi thực hiện thao tác chép dữ liệu hàng loạt vào 1 bảng

f. Bảng tương thích giữa các phương thức khóa


IS
S
U
IX
SIX
X
Sch-S
SchM
BU

IS

S

U

IX

SIX

Yes
Yes
Yes
Yes
Yes

Yes
Yes
Yes


Yes
Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

SchM

X

Sch-S

Yes

Yes
Yes
Yes
Yes

Yes
Yes
Yes

Yes

Yes

Yes

 Khi 1 u cầu lock của một giao tác T1 chưa thể được đáp ứng,giao tác
T1 phải chờ.
 Yêu cầu lock trên 1 đơn vị dữ liệu được đáp ứng theo nguyên tắc FIFO,
giao tác nào yêu cầu lock trước sẽ được đáp ứng trước nên giải quyết
được hiện tượng livelock
5. Sử dụng các phương thức khóa
 Sau khi được thiết lập bằng lệnh trong giao tác ,
khóa sẽ tồn tại đến khi chấm dứt giao tác.
SERIALIZABLE
/HOLDLOCK

 Không thể thêm mới dữ liệu nếu dữ liệu thỏa
điều kiện của câu lệnh Where tạo lập khóa này.
 Tương tự như sử dụng Isolation Level là
Serializable.

READUNCOMMITED

Trang | 18


 Thao tác này xử lí nhanh nhưng dễ gặp những

BU


Báo cáo hệ quản trị cơ sở dữ liệu 2014
/NOLOCK
READCOMMITED

vấn đề trong xử lí đồng thời.
 Đây là chế độ mặc định.
 Chỉ đọc những dữ liệu đã commit.
 Thiết lập SharedLock trên đơn vị dữ liệu cần
đọc.

REPEATABLEREAD

 Tương

tự

SERIALIZABLE

/HOLDLOCK

nhưng vẫn có thể thêm dữ liệu vào CSDL.
ROWLOCK
READPAST

 Chỉ dùng trong lệnh Select và áp dụng trên dịng

khóa của dữ liệu (Row-Lock).Những dịng bị khóa
sẽ được bỏ qua.

TABLOCK

 Khóa 1 bảng trong CSDL.
 Các thao tác cập nhật của những giao tác khác
không thể thực hiện trên bảng này.

TABLOCKX

 Tương tự TabLock nhưng tất cả thao tác của giao
tác khác không thể thực hiện trên bảng này.

UPDATELOCK

Dùng Update Lock thay cho Shared Lock.

6. Các mức cô lập ( Isolation level)
Trên hệ quản trị cơ sở dữ liệu SQL Server 2008 R2 hỗ trợ 4 mức cô lập : Read
Uncommitted, Read Committed ( Thiết lập mặc định), Repeatable read,
Serializable
a. Read Uncommitted
 Đặc điểm
- Không thiết lập Shared Lock trên những đơn vị dữ liệu cần đọc
- Không bị ảnh hưởng bởi những lock của các giao tác khác trê những
đơn vị dữ liệu cần đọc
- Không phải chờ khi đọc dữ liệu
- Các vấn đề gặp phải khi xử lý đồng thời
Trang | 19



Báo cáo hệ quản trị cơ sở dữ liệu 2014





Dirty Reads
Unrepeatable Reads
Phantoms
LostUpdates

 Ưu điểm
- Tốc độ xử lý nhanh
- Không cản trở những giao tác khác thực hiện cập nhật dữ liệu
 Khuyết điểm
- Có khả năng xảy ra mọi vấn đề trong việc xử lý đồng thời, đặc biệt là vấn
đề Dirty Reads
 Nhận xét
- Chỉ nên dùng để đọc dữ liệu trong trường hợp cần 1 cái nhìn tổng quan về
CSDL, ví dụ như tạo những báo cáo về tình hình chung.
- Khơng dùng trong trường hợp cần đọc những số liệu chính xác hay tiến
hành cập nhật trên cơ sở dữ liệu
b. Read Committed
 Đặc điểm
- Đây là mức cô lập mặc định của SQL Server
- Giải quyết vấn đề Dirty Reads
- Tạo Shared Lock trên đơn vị dữ liệu được đọc và giải phóng ngay sau khi
hoàn tất việc đọc dữ liệu

- Tạo Exclusive Lock trên đơn vị dữ liệu được ghi và giữ cho đến khi hoàn
tất giao tác
 Ưu điểm
- Giải quyết vấn đề Dirty Reads
- Shared Lock được giải phóng ngay sau khi đọc xong nên không ngăn cản
các giao tác khác cập nhật dữ liệu
 Nhược điểm
- Chưa giải quyết được vấn đề Unrepeatable Reads, Phantoms, Lost
Updates
- Phải chờ khi chưa thể được đáp ứng yêu cầu lock trên đơn vị dữ liệu đang
bị giữ lock bởi giao tác khác
c. Reapeatable read
 Đặc điểm
- Giải quyết được vấn đề Dirty Reads và Unrepeatable Reads
- Tạo Shared Lock trên đơn vị dữ liệu được đọc và Exclusive Lock trên đơn
vị dữ liệu được ghi. Cả 2 khóa đều được giữ cho đến khi hoàn tất giao tác
 Ưu điểm
- Giải quyết được vấn đề Dirty Reads và Unrepeatable Reads
Trang | 20


×