---
# System prepended metadata

title: BT Ràng buộc toàn vẹn
tags: [Lecture HCMUS, DataBase]

---

**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)          |