MSSV: B1805684
BÀI TẬP TỔNG
HỢP
1. Tóm tắt câu trả lời cho các vấn đề dưới
đây:
-
Giao dịch là gì?
o
Giao
dịch là một hành động hay một chuỗi các hành động được thực hiện bởi một người
dùng hoặc một chương trình ứng dụng, trong đó có truy cập hoặc thay đổi nội
dung của một CSDL. Một giao dịch là một đơn vị luận lý của công việc trên CSDL.
Nó có thể là toàn bộ chương trình, một phần của chương trình, toàn bộ chương
trình hoặc một lệnh đơn lẻ như INSERT hay UPDATE, và nó có thể bao gồm nhiều
thao tác trên CSDL.
-
Vì sao cần nó?
o
Bởi cần được sự tương tác qua lại của người dùng với hệ thống
-
Các trạng thái của
GD
o
Hoạt động (Active) trạng thái khởi đầu
o
Hoàn tất một phần (Partially commited)
o
Thất bại (Failed)
o
Hủy bỏ (Aborted)
o
Hoàn tất (Commited)
-
Thuộc tính ACID là
gì?
o Là bốn thuộc tính quan trọng
của một HQTCSDL khi xử lý bất kỳ giao dịch nào. Bao gồm:
▪
Tính nguyên tố.
▪
Tính nhất quán.
▪
Tính độc lập.
▪
Tính bền vững.
-
Các vấn đề cạnh
tranh trong môi trường đa người dùng là gì?
o
Vấn
đề về mất dữ liệu đã cập nhật (lost update)
o
Vấn
đề về sự phụ thuộc vào các GD không hoàn tất.
o
Vấn
đề phân tích không nhất quán
-
Giải pháp khắc phục?
o
Nâng cao năng lực cạnh tranh.
-
Lịch trình là gì?
Lịch trình tuần tự và không tuần tự?
o
Lịch trình là một
chuỗi các thao tác thực hiện bởi một tập hợp cá GD cạnh tranh mà vẫn đảm bảo
thứ tự của các thao tác trong từng DG đơn lẻ.
o
Lịch trình tuần tự: là một lịch trình trong đó các thao tác của một GD được thực hiện liên
tiếp nhau, không có bất kỳ thao tác nào của các GD khác xen vào giữa.
o
Lịch trình không tuần tự: là một lịch trình trong đó các thao tác từ một tập hợp các giao dịch cạnh
tranh đan xen lẫn nhau. Khi đó, các lịch trình này có thể đưa CSDL về tình
trạng không nhất quán hay các kết quả không chính xác.
-
Các kỹ thuật quản
lý cạnh tranh
o Bi quan (lock)
▪
Sử dụng Giao thức khóa
2 kỳ để giải quyết cạnh tranh
● Các vấn đề khi sd 2PL
o
Vấn đề cuộc nhiều tầng
o
Vấn đề khóa sống (livelock)
o
Vấn đề khóa chết (Deadlock)
▪
Deadlock
là một tình huống bế tắc khi hai hay nhiều GD đang chờ lẫn nhau để có được các
khóa đang giữ bởi đối phương. Khi các giao dịch nằm trong trình trạng khóa chết
thì cần có một cơ chế phát hiện và phục hồi để tránh tình trạng GD bị chờ mãi.
o
Xử lý deadlock
▪
Có hai kỹ thuật thông thường được dùng để xử lý khóa chết là: ngăn chặn khóa chết và phát hiện –
phục hồi khóa chết
▪
Sử dụng nhãn thời gian của một GD là một định danh
duy nhất được tạo ra bởi HQTCSDL cho thấy thời điểm bắt đầu tương đối của giao
dịch đó. Định nhãn thời gian là một giao thức điều khiển cạnh tranh mà trong đó
mục tiêu cơ bản là sắp xếp cả GD một cách toàn cục theo một cách mà các giao
dịch cũ hơn, nghĩa là giao dịch với nhãn TG nhỏ hơn, sẽ được yêu tiên hơn khi
có xung đột.
o
Lạc quan: 3 kỳ
▪
Kỳ đọc: kéo dài từ lúc bắt đầu giao dịch cho
đến ngay trước hành động commit. GD đọc các giá trị của tất cả các mục dữ liệu
nó cần từ CSDL và lưu chúng vào biến cục bộ.
▪
Kỳ kiểm tra: Kỳ này theo sau kỳ đọc. Các kiểm tra
sẽ được thực hiện để đảm bảo tính khả tuần tự không bị vi phạm nếu các cập nhật
của GD được đưa vào CSDL.
▪
Kỳ nghi: sau kỳ kiểm tra thành công đối với các giao dịch
cập nhật. Trong kỳ này, các cập nhật đã thực hiện trên biến cục bộ sẽ được chép
vào CSDL.
o
Độ mịn của mục
dữ liệu: là
kích cỡ của mục dữ liệu được chọn nhưu là một đơn vị bảo vệ bởi giao thức điều
khiển cạnh tranh.
-
Phục hồi dữ liệu: là quá trình khôi phục CSDL
về trạng thái khi có lỗi xảy ra.
o Việc lưu trữ dữ liệu thông
thường
bao gồm bốn loại thiết bị với mức độ tin cậy tăng dần là: bộ nhớ trong, đĩa từ,
băng từ và đĩa quang.
o Điểm kiểm tra là gì (check point) ?
▪
là một điểm mà tại đó sự đồng bộ giữa CSDL và tập tin nhật
ký GD được ghi nhận. Khi đó, tất cả các vùng đệm phải được ghi-ép-buộc ra bộ
lưu trữ thứ cấp.
o Các kỹ thuật phục hồi DL
▪
Cập nhật trì hoãn.
▪
Cập nhật tức thì.
▪
Tạo trang bóng.
2.
Bài tập tổng hợp (đặt
tên các objects có prefix là “BT-”)
a.
Thiết kế CSDL (ràng buộc…)
gồm ít nhất 5 bảng, nhập DL ít nhất 3 dòng mỗi bảng
BT_HANGHOA(MA_HANG,TEN_HH),
BT_DAILY(STT_DL,
TEN_DL,DIACHI_DL),
BT_MUA(MA_HANG,STT_DL,
NGAY_MUA, SOLUONG_MUA, TRIGIA_MUA),
BT_BAN(MA_HANG,
STT_DL, NGAY_BAN, SOLUONG_BAN, TRIGIA_BAN)
BT_QUANLYKHO(MA_SP,TEN_HH,SOLUONGKHO)
Tạo
bảng tạo ràng buộc và thêm dữ liệu BT_HANGHOA, BT_MUA, BT_BAN, BT_DAILY, BT_QUANLYKHO
b.
Viết ít nhất 2
thủ tục, 2 hàm, 2 trigger cho CSDL trên
Thủ
thục thêm hàng hóa (SP) vào bảng BT_MUA với hai tham số truyền vào là mã hàng
hóa và số lượng hàng hóa
Tạo thủ tục (1.1)
Thực thi
Thủ tục thêm
hàng hóa vào kho trong bảng BT_HANGHOA với hai tham số đầu vào là mã hàng và
tên sản phẩm. Nếu mã hàng và tên sản phẩm tồn tại thông báo Hàng đã tồn tại
ngược lại Thêm không thành công.
Tạo thủ tục (1.2)
Thực thi
Kết quả của thủ tục (1.2)
Tạo hàm trả
về tổng giá trị của một sản phẩm trong bảng BT_MUA với tham số truyền vào là mã
hàng hóa (MaSP)
Tạo hàm
Thực thi
Kết quả hàm
Kết quả hàm
Trigger theo dõi cập nhật dữ liệu
(tạo bảng cập nhật và tạo
trigger theo dõi cập nhật dữ liệu sau khi người dùng sửa dữ liệu)
Thực thi
( kết quả thực thi khi
người dùng thêm, sửa dữ liệu )
Trigger ngăn kiểm tra việc nhập
dữ liệu
●
Kiểm tra dữ liệu trước khi người dùng Insert dữ liệu vào
nếu sản phẩm tồn tại thông báo sản phẩm đã tồn tại
Tạo trigger
Thực thi
Kết quả
c.
Cấp quyền cho 1 bạn trong
nhóm có thể truy cập DL, hàm, thủ tục trên
Cấp quyền ttruy vấn dữ liệu, thủ tục, hàm