Bài tập - Quản lý nhân khẩu - Lập trình SQL Server - MySQL
1. Database Creation
Tạo database tên: QuanLyNhanKhau
Sử dụng database vừa tạo.
2. Table Creation
Bảng QuanHuyen
| Column | Datatype | Constraint |
| MaQH | INT IDENTITY(1,1) | NOT NULL |
| TenQH | NVARCHAR(100) |
Bảng DuongPho
| Column | Datatype | Constraint |
| DuongID | INT | NOT NULL |
| MaQH | INT | NOT NULL |
| TenDuong | NVARCHAR(MAX) | NOT NULL |
| NgayDuyetTen | DATETIME | NULL |
Bảng NhaTrenPho
| Column | Datatype | Constraint |
| NhaID | INT | NOT NULL |
| DuongID | INT | NOT NULL |
| ChuHo | NVARCHAR(50) | NULL |
| DienTich | MONEY | NULL |
3. Index and Table Alternation
Tạo CLUSTERED INDEX tên là
[CI_NhaTrenPho_NhaID]trên cột[NhaID]của bảng[NhaTrenPho].Tạo Unique Non-Clustered Index tên là
[UI_QuanHuyen_TenQH]trên cột[TenQH]của bảng[QuanHuyen].Thay đổi bảng
[NhaTrenPho], thêm cột mới tên là[SoNhanKhau]với kiểu dữ liệuINT.
4. Constraint Creation
Tạo Primary Key cho các bảng:
Bảng
QuanHuyen: Khóa chính làMaQH.Bảng
DuongPho: Khóa chính làDuongID.Bảng
NhaTrenPho: Khóa chính làNhaID.
Tạo Foreign Key cho các bảng:
Bảng
DuongPhonối với bảngQuanHuyenqua cộtMaQH.Bảng
NhaTrenPhonối với bảngDuongPhoqua cộtDuongID.
Tạo Check Constraint cho cột
DienTichtrong bảngNhaTrenPhophải lớn hơn 0.
5. View Creation
Tạo một View tên là [v_NhaTrenPho] hiển thị danh sách các ngôi nhà bao gồm: MaQH, TenQH, DuongID, TenDuong, NhaID, ChuHo, DienTich.
6. Stored Procedure
Tạo một Stored Procedure tên là [sp_GetNhaByDuong] truyền vào tham số @TenDuong. Hiển thị tất cả các ngôi nhà thuộc con đường đó.
7. Stored Procedure
Tạo một Stored Procedure tên là [sp_InsertDuongPho] để thêm mới một con đường vào bảng DuongPho.
8. Stored Procedure
Tạo một Stored Procedure tên là [sp_UpdateSoNhanKhau] để cập nhật số nhân khẩu cho một ngôi nhà dựa vào NhaID.
9. Stored Procedure & Variable
Khai báo một biến.
Sử dụng
Convert (datetime, 'dd/mm/yyyy', 103).Thực thi (Execute) store procedure với tham số là biến cục bộ đã khai báo ở trên.
10. Trigger
Tạo một FOR trigger cho sự kiện UPDATE với tên [FOR_UPDATE_NHA_TREN_PHO] để kiểm tra giá trị của cột [SoNhanKhau]:
Nếu giá trị cột
[SoNhanKhau] = 0thì việc cập nhật trên bảng[Nha_Tren_pho]bị lỗi (rollback).Nếu giá trị cột
[SoNhanKhau] > 0thì cho phép cập nhật trên bảng[Nha_Tren_pho].
11. Trigger
Tạo một INSTEAD OF trigger cho sự kiện DELETE với tên [InsteadOf_Delete_DuongPho] trên bảng [DuongPho] để thay thế cho hành động xóa mặc định trên bảng này.
