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
nó
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 LockWrite 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