**Họ và Tên:** Lê Phước Phát **Lớp:** 22CLC10 **MSSV:** 22127322 --- <center> <p> <b>BÀI TẬP RÀNG BUỘC TOÀN VẸN (13/03/2024)</b> </p> </center> **Bài tập 01:** <center> <img src = https://scontent.fsgn5-10.fna.fbcdn.net/v/t1.15752-9/431058907_403778615742759_3292906055130705186_n.png?_nc_cat=107&ccb=1-7&_nc_sid=5f2048&_nc_ohc=BlPGMhe4VJQAX_4iGeK&_nc_ht=scontent.fsgn5-10.fna&oh=03_AdRK4x7ZQFauQ8mP4ZJYxg32sKACEgJnRl6isy-AWKOJHw&oe=66186E44> </center> <center> <p> <b>BÀI LÀM</b> </p> </center> * **++Câu 01:++** ==Mỗi đơn đặt hàng phải đặt từ một nhà cung cấp== * ++Loại RBTV:++ ràng buộc toàn vẹn liên quan hệ tham chiếu * ++Bối cảnh:++ **DONDH**, **NHACC** * ++Biểu diễn ngôn ngữ phép tính quan hệ (ĐSQH):++ $$\forall(\text{t})(\text{DONDH(t)} \wedge (\exists \text{s})(\text{NCC(s)} \wedge \text{t.MANCC = s.MANCC}))$$ * ++Bảng tầm ảnh hường:++ | IC01 | Thêm | Xóa | Sửa | |:-----:|:----:|:---:|:--------:| | DONDH | + | - | +(MANCC) | | NHACC | - | + | +(MANCC) | * ++**Câu 02:**++ ==Ngày giao hàng phải sau ngày đặt hàng== * ++Loại RBTV:++ ràng buộc toàn vẹn liên quan hệ, liên thuộc tính * ++Bối cảnh:++ **GIAOHANG**, **DONDH** * ++Biểu diễn ngôn ngữ phép tính quan hệ (ĐSQH):++ $$(\forall \text{t})(\text{GIAOHANG(t)} \wedge (\exists\text{s})(\text{DONDH(s)} $$$$\wedge \text{t.SODDH = s.SODDH} \wedge \text{t.NGAYGH > s.NGAYDH}))$$ * ++Bảng tầm ảnh hường:++ | IC02 | Thêm | Xóa | Sửa | |:--------:|:----:|:---:|:----------------:| | GIAOHANG | + | - | +(NGAYGH, SODDH) | | DONDH | - | - | +(NGAYDH) | * ++**Câu 03:**++ ==**Mỗi ngày** chỉ nhận tối đa $20$ đơn đặt hàng== * ++Loại RBTV:++ ràng buộc toàn vẹn liên bộ * ++Bối cảnh:++ **DONDH** * ++Biểu diễn ngôn ngữ phép tính quan hệ (ĐSQH):++ $$(\forall \text{t})(\text{DONDH(t)} \wedge \text{card}(\{\text{s} | \text{DONDH(s)} \wedge \text{s.NGAYDH = t.NGAYDH}\})\leq 20)$$ * ++Bảng tầm ảnh hường:++ | IC03 | Thêm | Xóa | Sửa | |:-----:|:----:|:---:|:---------:| | DONDH | + | - | +(NGAYDH) | * ++**Câu 04:**++ ==**Mỗi đơn hàng** có ít nhất $1$ chi tiết đơn hàng== * ++Loại RBTV:++ ràng buộc toàn vẹn liên quan hệ liên bộ * ++Bối cảnh:++ **DONDH**, **CT_DDH** * ++Biểu diễn ngôn ngữ phép tính quan hệ (ĐSQH):++ $$(\forall \text{t})(\text{DONDH(t)} \wedge (\exists \text{s})(\text{CT_DDH(s)} \wedge \text{s.SODDH = t.SODDH}))$$ * ++Bảng tầm ảnh hường:++ | IC04 | Thêm | Xóa | Sửa | |:------:|:----:|:---:|:--------:| | DONDH | + | - | +(SODDH) | | CT_DDH | - | + | +(SODDH) | * DH1 chưa có CT_DDH. update thành DH2 chưa có CT_DDH -> kiểm tra * DH1 co CT_DDH -> update thanh DH2: kiem tra RB khoa ngoai * CT_DDH: update SoDDH 1 -> 2hh * ++**Câu 05:**++ ==Chỉ giao những mặt hàng mà khách hàng có đặt== * ++Loại RBTV:++ ràng buộc toàn vẹn liên quan hệ chu trình * ++Bối cảnh:++ CT_GH, GIAOHANG, CT_DDH * ++Biểu diễn ngôn ngữ phép tính quan hệ (ĐSQH):++ * $\text{CTGH_GH} \gets \Pi_{\text{SODDH, MAMH}}(\text{CT_GH} \bowtie \text{GIAOHANG})$: 'tập các mặt hàng được giao cho các đơn đặt hàng' * $$(\forall\text{t})(\text{CTGH_GH}(\text{t}) \wedge (\exists\text{s})(\text{CT_DDH}(\text{s})$$$$ \wedge \text{t.MAMH = s.MAMH} \wedge \text{t.SODDH = s.SODDH}))$$ * ++Bảng tầm ảnh hường:++ | IC05 | Thêm | Xóa | Sửa | |:--------:|:----:|:---:|:--------------:| | CT_GH | - | - | +(SODDH, MAMH) | | GIAOHANG | - | - | +(SODDH) | | CT_DDH | + | - | +(MAGH, MAMH) | * ++Sơ đồ thể hiện:++ <center> <img src = https://scontent.fhan3-4.fna.fbcdn.net/v/t1.15752-9/431277635_721714543491615_1500462613890605762_n.png?_nc_cat=104&ccb=1-7&_nc_sid=5f2048&_nc_ohc=BaBVIaRZVIoAX_H0Zd3&_nc_ht=scontent.fhan3-4.fna&oh=03_AdRmqYf4-yt8wl94hcGZr8nGKjU57zcTd3IXDHGZD8JGhQ&oe=661898DF> </center> * ++**Câu 06:**++ ==**Tổng tiền** của đơn hàng bằng tổng $\text{DonGia} \times \text{SoLuong}$ của các chi tiết đơn hàng thuộc đơn hàng đó== * ++Loại RBTV:++ ràng buộc toàn vẹn liên quan hệ thuộc tính tổng hợp. * ++Bối cảnh:++ **DONDH**, **CT_DDH** * ++Biểu diễn ngôn ngữ phép tính quan hệ (ĐSQH):++ * $\text{SUM_DDH(SODDH, TONGTIEN)} \gets _{\text{SODDH}}\mathfrak{J}_{\text{SUM(DONGIA * SOLUONG)}}(\text{CT_DDH})$ * $$(\forall \text{t})(\text{DONDH(t)} \wedge (\exists\text{s})(\text{SUM_DDH(s)} $$$$ \wedge \text{s.SODDH = t.SODDH} \wedge \text{s.TONGTIEN = t.TONGTIEN}))$$ * ++Bảng tầm ảnh hường:++ | IC06 | Thêm | Xóa | Sửa | |:------:|:----:|:---:|:-------------------------:| | DONDH | + | - | +(TONGTIEN) | | CT_DDH | + | + | +(SODDH, DONGIA, SOLUONG) | * ++**Câu 07:**++ ==Mỗi đơn hàng có tối đa $3$ lần giao hàng== * ++Loại RBTV:++ ràng buộc toàn vẹn liên bộ * ++Bối cảnh:++ **GIAOHANG** * ++Biểu diễn ngôn ngữ phép tính quan hệ (ĐSQH):++ $$(\forall \text{t})(\text{GIAOHANG(t)} \wedge \text{card}(\{\text{s | GIAOHANG(s)} \wedge \text{s.SODDH = t.SODDH}\}) \leq 3)$$ * ++Bảng tầm ảnh hường:++ | IC07 | Thêm | Xóa | Sửa | |:--------:|:----:|:---:|:--------:| | GIAOHANG | + | - | +(SODDH) | * ++**Câu 08:**++ ==Tổng số mặt hàng của đơn hàng phải bằng tổng số mặt hàng của các chi tiết đơn hàng== * ++Loại RBTV:++ ràng buộc toàn vẹn liên quan hệ thuộc tính tổng hợp * ++Bối cảnh:++ **DONDH**, **CT_DDH** * ++Biểu diễn ngôn ngữ phép tính quan hệ (ĐSQH):++ * $\text{SUM_MH(SODDH, TONGSOMH)} \gets _{\text{SODDH}}\mathfrak{J}_{\text{COUNT(MAMH)}}(\text{CT_DDH})$ * $$(\forall \text{t})(\text{DONDH(t)} \wedge (\exists \text{s})(\text{SUM_MH(s)} $$$$\wedge \text{s.SODDH = t.SODDH} \wedge \text{s.TONGSOMH = t.TONGSOMH}))$$ * ++Bảng tầm ảnh hường:++ | IC08 | Thêm | Xóa | Sửa | |:------:|:----:|:---:|:------------------:| | DONDH | + | - | +(SODDH, TONGSOMH) | | CT_DDH | + | + | +(SODDH, MAMH) | * ++**Câu 09:**++ ==**Nhà cung cấp** chỉ bán các mặt hàng có khả năng cung ứng/ Chỉ đặt những mặt hàng mà nhà cung cấp có khả năng cung ứng== * ++Loại RBTV:++ ràng buộc toàn vẹn liên quan hệ chu trình * ++Bối cảnh:++ **DONDH**, **CT_DDH**, **CUNGUNG** * ++Biểu diễn ngôn ngữ phép tính quan hệ (ĐSQH):++ * $\text{DH_MH} \gets \Pi_{\text{MANCC, MAMH}}(\text{DONDH} \bowtie_{\text{SODDH = SODDH}} \text{CT_DDH})$ : 'tập những mặt hàng của nhà cung cấp đã được đặt' * $$(\forall \text{t})(\text{DH_MH(t)} \wedge (\exists \text{s})(\text{CUNGUNG(s)} $$$$ \wedge \text{s.MANCC = t.MANCC} \wedge \text{s.MAMH = t.MAMH}))$$ * ++Bảng tầm ảnh hường:++ | IC09 | Thêm | Xóa | Sửa | |:-------:|:----:|:---:|:--------------:| | DONDH | - | - | +(MANCC) | | CT_DDH | + | - | +(SODDH, MAMH) | | CUNGUNG | - | + | +(MANCC, MAMH) | <center><img src = https://scontent.xx.fbcdn.net/v/t1.15752-9/432398349_1229990757975654_7820998624429206419_n.png?_nc_cat=103&ccb=1-7&_nc_sid=5f2048&_nc_ohc=6HvL6gogB1UAX-6hcKj&_nc_ad=z-m&_nc_cid=0&_nc_ht=scontent.xx&oh=03_AdSWonty4BMr2bpDWhNKS9q81TXHtsWub3jKGmlHJNoPew&oe=661E0150></center> * ++**Câu 10:**++ ==**Nếu tổng tiền** của lần giao hàng trên $5000000$ và ngày giao hàng quá $30$ ngày so với ngày đặt hàng thì mức chiết khấu $= 1\%$, quá $40$ ngày thì mức chiết khấu là $2\%$== * ++Loại RBTV:++ ràng buộc toàn vẹn liên quan đến một quan hệ miền giá trị và liên quan hệ liên thuộc tính. * ++Bối cảnh:++ **GIAOHANG**, **DONDH** * ++Biểu diễn ngôn ngữ phép tính quan hệ (ĐSQH):++ $$(\forall \text{t})(\text{GIAOHANG(t)} \wedge \text{t.TONGTIEN > 5000000} $$$$\wedge (\exists \text{s})(\text{DONDH(s)} \wedge \text{s.SODDH = t.SODDH} $$$$\wedge ((\text{(t.NGAYGH - s.NGAYDH)} > 30 \wedge \text{(t.NGAYGH - s.NGAYDH)} \leq 40 $$$$\implies \text{t.MUCCK} = 1\%) \vee(\text{(t.NGAYGH - s.NGAYDH)} > 40 \implies \text{t.MUCCK} = 2\%))))$$ * ++Bảng tầm ảnh hường:++ | IC10 | Thêm | Xóa | Sửa | |:--------:|:----:|:---:|:---------------------------------:| | GIAOHANG | + | - | +(SODDH, TONGTIEN, NGAYGH, MUCCK) | | DONDH | - | - | +(SODDH, NGAYDH) |