SQL Server/MySQL

Quản Lý Rạp Chiếu Phim - Khoá Học SQL Server

1. Database Creation

  • Tạo database tên: QuanLyRapChieuPhim
  • Sử dụng database vừa tạo

2. Table Creation

Bảng TheLoai

ColumnDatatypeConstraint
MaTheLoaiINT IDENTITY(1,1)NOT NULL
TenTheLoaiNVARCHAR(100)NOT NULL

Bảng Phim

ColumnDatatypeConstraint
MaPhimINTNOT NULL
TenPhimNVARCHAR(255)NOT NULL
DaoDienNVARCHAR(255)NULL
DienVienNVARCHAR(MAX)NULL
MaTheLoaiINTNOT NULL
TrailerNVARCHAR(255)NULL
NoiDungNVARCHAR(MAX)NULL

Bảng NguoiDung

ColumnDatatypeConstraint
MaNguoiDungINTNOT NULL
TenNguoiDungNVARCHAR(255)NOT NULL
NgaySinhDATENULL
SoDienThoaiVARCHAR(15)NOT NULL
DiaChiNVARCHAR(255)NULL
MatKhauNVARCHAR(255)NOT NULL
CCCDVARCHAR(20)NOT NULL

Bảng CoSo

ColumnDatatypeConstraint
MaCoSoINTNOT NULL
TenCoSoNVARCHAR(255)NOT NULL
DiaChiNVARCHAR(255)NULL

Bảng PhongChieu

ColumnDatatypeConstraint
MaPhongINTNOT NULL
TenPhongNVARCHAR(100)NOT NULL
MaCoSoINTNOT NULL

Bảng GheNgoi

ColumnDatatypeConstraint
MaGheINTNOT NULL
MaPhongINTNOT NULL
LoaiGheNVARCHAR(50)NOT NULL
MaGheCodeVARCHAR(10)NOT NULL

Bảng LichChieu

ColumnDatatypeConstraint
MaLichChieuINTNOT NULL
NgayChieuDATENOT NULL
GioChieuTIMENOT NULL
MaPhimINTNOT NULL
MaCoSoINTNOT NULL
MaPhongINTNOT NULL

Bảng DatVe

ColumnDatatypeConstraint
MaDatVeINTNOT NULL
MaLichChieuINTNOT NULL
MaGheINTNOT NULL
MaNguoiDungINTNOT NULL
GiaTienMONEYNOT NULL
NgayDatDATETIMENULL
TrangThaiNVARCHAR(50)NOT NULL

3. Index and Table Alternation

  • Tạo CLUSTERED INDEX tên là [CI_DatVe_MaDatVe] trên cột [MaDatVe] của bảng [DatVe]
  • Tạo Unique Non-Clustered Index tên là [UI_NguoiDung_SDT] trên cột [SoDienThoai] của bảng [NguoiDung]
  • Thay đổi bảng [GheNgoi], thêm cột mới tên là [TrangThai] với kiểu dữ liệu NVARCHAR(50)

4. Constraint Creation

Primary Key

  • Bảng TheLoai: MaTheLoai
  • Bảng Phim: MaPhim
  • Bảng NguoiDung: MaNguoiDung
  • Bảng CoSo: MaCoSo
  • Bảng PhongChieu: MaPhong
  • Bảng GheNgoi: MaGhe
  • Bảng LichChieu: MaLichChieu
  • Bảng DatVe: MaDatVe

Foreign Key

  • Phim → TheLoai (MaTheLoai)
  • PhongChieu → CoSo (MaCoSo)
  • GheNgoi → PhongChieu (MaPhong)
  • LichChieu → Phim (MaPhim)
  • LichChieu → CoSo (MaCoSo)
  • LichChieu → PhongChieu (MaPhong)
  • DatVe → LichChieu (MaLichChieu)
  • DatVe → GheNgoi (MaGhe)
  • DatVe → NguoiDung (MaNguoiDung)

Check Constraint

  • GiaTien > 0
  • LoaiGhe ∈ ('NORMAL', 'VIP', 'SUPER VIP')

5. View Creation

Tạo View tên [v_LichChieu] hiển thị:

  • MaPhim, TenPhim
  • TenCoSo
  • TenPhong
  • NgayChieu, GioChieu

6. Stored Procedure

Tạo procedure [sp_GetLichChieuByPhim]

  • Input: @TenPhim
  • Output: danh sách lịch chiếu của phim đó

7. Stored Procedure

Tạo procedure [sp_InsertPhim]

  • Thêm mới một phim vào bảng Phim

8. Stored Procedure

Tạo procedure [sp_DatVe]

  • Input: MaNguoiDung, MaLichChieu, MaGhe
  • Thực hiện đặt vé

9. Stored Procedure & Variable

  • Khai báo biến ngày
  • Sử dụng:

    Convert(datetime, 'dd/mm/yyyy', 103)
  • Thực thi procedure với biến

10. Trigger

Tạo trigger [FOR_INSERT_DATVE] cho sự kiện INSERT trên bảng DatVe:

  • Nếu ghế đã được đặt trong cùng lịch chiếu → rollback
  • Nếu chưa → cho phép insert

11. Trigger

Tạo trigger [InsteadOf_Delete_Phim] trên bảng Phim:

  • Nếu phim đã có lịch chiếu → không cho xóa
  • Nếu chưa → cho phép xóa 


Phản hồi từ học viên

5

Tổng 0 đánh giá

Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó