Thiết kế website bán đồ thể thao chuyên nghiệp tích hợp nhiều tính năng hỗ trợ bán hàng, mang lại khả năng thống kê lượt truy cập, đơn hàng, các sản phẩm được tìm kiếm nhiều,.... Tiết kiệm chi phí đầu tư so với hình thức kinh doanh truyền thống: Kinh doanh truyền thống yêu cầu nhiều vốn cho các khoản: thuê mặt bằng, điện, nước, sửa chữa mặt bằng,... Với kinh doanh online, chỉ cần bỏ ra chi phí thiết kế, bảo trì web là đủ.
Trang 1KHOA HỆ THỐNG THÔNG TIN
- -ĐỀ TÀI : WEBSITE BÁN ĐỒ THỂ THAO
Trang 31
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
II Khảo sát hiện trạng 2
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
II Bảng thuyết minh các quan hệ và thuộc tính 5
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 toàn vẹn 10
Phần 2 : Các vấn đề nhận diện khi xử lý đồng thời 11
Trang 4I 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
II Lock và xử lý đồng thời ( concurrency ) 13
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
I Sơ đồ logic 35
II Các giao tác chính 35
1 Thao tác đặt hàng 35
Trang 5d Cài đặt giao tác 36
2 Giao tác xử lý đơn hàng 40
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
3 Giao tác hủy đơn hàng 44
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
Trang 6GIỚ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 , ngoà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 7 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à :
Đố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 8 Đố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 Ngoà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
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 9Trang | 4
Chương 2 : Thiết kế dữ liệu
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 102 Mô hình quan hệ
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
hệ )
Trang 11Trang | 6
2 Khách hàng
quan hệ )
tham chiếu đến bảng LOAIKHACHHANG )
3 Loại khách hàng
4 Sản phẩm
quan hệ
tham chiếu tới bảng NHOMSANPHAM )
Trang 125 Nhóm sản phẩm
của quan hệ )
tham chiếu tới bảng DONGSANPHAM )
6 Dòng sản phẩm
của quan hệ )
7 Khuyến mãi
quan hệ)
chiếu tới bảng SANPHAM )
8 Đơn đặt hàng
quan hệ )
chiếu tới bảng KHACHHANG)
Trang 13Trang | 8
9 Chi tiết đơn hàng
Trang 14STT Thuộc tính Kiểu dữ liệu Ý nghĩa
chiếu tới bảng DONDATHANG )
chiếu tới bảng SANPHAM )
10 Thông tin người nhận
11 Hóa đơn
12 Chi tiết hóa đơn
Trang 15Trang | 10
chiếu tới bảng HOADON )
chiếu tới bảng SANPHAM )
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 16Phầ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
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
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):
Trang 17Trang | 12
d Lệnh quay lui:
Khi giao tác kết thúc không thành công, hoà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:
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 toà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 18BEGIN TRAN EXEC sp_Test
c Transaction lồng nhau:
Các transaction có thể lồng nhau không quá 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 toàn bộ giao tác
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
Trang 19Trang | 14
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
3 Application Khóa trên một ứng dụng được chỉ định
4 Database Khóa trên một Cơ sở dữ liệu bao gồm các đối tượng nằm trong
nó
7 Heap/BTree 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
9 Metadata Khóa Metadata (siêu dữ liệu)
11 Page Khóa trên một trang có kích thước 8Kb trong cơ sở dữ liệu
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
Trang 203 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 214 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
Lock (A) (Chờ T1 giải phóng khóa trên A)
Trang 22 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
Trang 23Trang | 18
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
Trang 24/NOLOCK vấn đề trong xử lí đồng thời
READCOMMITED Đâ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
Trang 25- Đâ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