Bài 1: Giới thiệu về Trình quản lý quảng cáo
1. Ràng buộc toàn vẹn
1.1. Khái niệm
Ràng buộc toàn vẹn (Integrity Constraints) là các quy tắc đảm bảo dữ liệu trong cơ sở dữ liệu chính xác và nhất quán. Những ràng buộc này giúp ngăn chặn dữ liệu không hợp lệ và duy trì tính toàn vẹn của hệ thống.
1.2. Các loại ràng buộc toàn vẹn
-
Ràng buộc toàn vẹn miền giá trị (Domain Integrity Constraint):
- Xác định kiểu dữ liệu và giới hạn giá trị cho một cột.
- Ví dụ: Cột tuổi phải là số nguyên và lớn hơn 18.
-
Ràng buộc toàn vẹn thực thể (Entity Integrity Constraint):
- Mỗi bản ghi phải có giá trị duy nhất, không được chứa giá trị NULL.
- Được đảm bảo bằng khóa chính (Primary Key).
-
Ràng buộc toàn vẹn tham chiếu (Referential Integrity Constraint):
- Đảm bảo quan hệ giữa các bảng thông qua khóa ngoại (Foreign Key).
- Ví dụ: Một đơn hàng phải có mã khách hàng hợp lệ tồn tại trong bảng khách hàng.
-
Ràng buộc toàn vẹn người dùng (User-defined Integrity Constraint):
- Các quy tắc tùy chỉnh do người dùng định nghĩa.
- Ví dụ: Lương của nhân viên không được vượt quá 200 triệu VNĐ.
2. Khóa chính và khóa phụ
2.1. Khóa chính (Primary Key)
- Khái niệm: Là một hoặc nhiều cột xác định duy nhất mỗi bản ghi trong bảng.
- Đặc điểm:
- Không được chứa giá trị NULL.
- Không có hai bản ghi nào có cùng giá trị khóa chính.
- Mỗi bảng chỉ có một khóa chính.
- Ví dụ: Bảng SINHVIEN có khóa chính là
MaSV.CREATE TABLE SINHVIEN ( MaSV INT PRIMARY KEY, HoTen NVARCHAR(50), NgaySinh DATE );
2.2. Khóa phụ (Foreign Key)
- Khái niệm: Là một hoặc nhiều cột trong bảng này dùng để tham chiếu đến khóa chính của bảng khác.
- Đặc điểm:
- Duy trì tính toàn vẹn tham chiếu giữa các bảng.
- Đảm bảo không có bản ghi nào tham chiếu đến dữ liệu không tồn tại.
- Ví dụ: Bảng
DANGKYcóMaSVlà khóa phụ tham chiếu đến bảngSINHVIEN.CREATE TABLE DANGKY ( MaSV INT, MaMonHoc INT, PRIMARY KEY (MaSV, MaMonHoc), FOREIGN KEY (MaSV) REFERENCES SINHVIEN(MaSV) );
3. Các kiểu dữ liệu trong SQL
3.1. Kiểu dữ liệu số (Numeric Data Types)
INT,BIGINT,SMALLINT,TINYINT: Số nguyên với độ dài khác nhau.DECIMAL(p,s),NUMERIC(p,s): Số thực có độ chính xác cố định.FLOAT,REAL: Số thực có độ chính xác không cố định.
3.2. Kiểu dữ liệu ký tự (Character Data Types)
CHAR(n): Chuỗi ký tự có độ dài cố định.VARCHAR(n): Chuỗi ký tự có độ dài thay đổi.TEXT: Chuỗi văn bản dài.
3.3. Kiểu dữ liệu ngày giờ (Date and Time Data Types)
DATE: Ngày (YYYY-MM-DD).DATETIME: Ngày và giờ (YYYY-MM-DD HH:MI:SS).TIMESTAMP: Dấu thời gian.
3.4. Kiểu dữ liệu khác
BOOLEAN: Giá trị TRUE/FALSE.BLOB: Dữ liệu nhị phân lớn (ảnh, video,...).
4. Tóm tắt
- Ràng buộc toàn vẹn đảm bảo dữ liệu chính xác và nhất quán.
- Khóa chính xác định duy nhất mỗi bản ghi trong bảng.
- Khóa phụ tạo liên kết giữa các bảng, duy trì tính toàn vẹn tham chiếu.
- Các kiểu dữ liệu trong SQL giúp xác định cấu trúc và đặc điểm dữ liệu lưu trữ.
5. Câu hỏi thảo luận
- Tại sao một bảng chỉ có thể có một khóa chính nhưng có nhiều khóa phụ?
- Điều gì sẽ xảy ra nếu không có ràng buộc toàn vẹn tham chiếu trong cơ sở dữ liệu?
- Khi nào nên sử dụng ràng buộc toàn vẹn người dùng?
- Lựa chọn kiểu dữ liệu nào để lưu số điện thoại và tại sao?
BÀI TẬP: XÂY DỰNG MÔ HÌNH QUAN HỆ CHO HỆ THỐNG QUẢN LÝ CƠ SỞ ĐÀO TẠO
Đề bài:
Một trung tâm đào tạo có hệ thống quản lý sinh viên, khóa học và giảng viên. Hãy xây dựng mô hình quan hệ (ERD) và xác định kiểu dữ liệu phù hợp cho các bảng trong cơ sở dữ liệu.
Thông tin chi tiết:
-
Sinh viên (SINHVIEN)
- Mã sinh viên (MaSV) – duy nhất
- Họ và tên (HoTen)
- Ngày sinh (NgaySinh)
- Giới tính (GioiTinh)
- Email (Email)
- Số điện thoại (SoDienThoai)
-
Khóa học (KHOAHOC)
- Mã khóa học (MaKH) – duy nhất
- Tên khóa học (TenKhoaHoc)
- Số tín chỉ (SoTinChi)
- Ngày khai giảng (NgayKhaiGiang)
-
Giảng viên (GIANGVIEN)
- Mã giảng viên (MaGV) – duy nhất
- Họ và tên (HoTen)
- Chuyên ngành (ChuyenNganh)
- Email (Email)
- Số điện thoại (SoDienThoai)
-
Lớp học (LOPHOC)
- Mã lớp (MaLop) – duy nhất
- Mã khóa học (MaKH) – liên kết với bảng KHOAHOC
- Mã giảng viên (MaGV) – liên kết với bảng GIANGVIEN
- Ngày bắt đầu (NgayBatDau)
- Ngày kết thúc (NgayKetThuc)
-
Đăng ký học (DANGKYHOC)
- Mã sinh viên (MaSV) – liên kết với bảng SINHVIEN
- Mã lớp học (MaLop) – liên kết với bảng LOPHOC
- Ngày đăng ký (NgayDangKy)
- Điểm trung bình (DiemTB)
Yêu cầu:
- Xây dựng mô hình quan hệ (ERD) thể hiện các thực thể và mối quan hệ giữa chúng. (Chỉ rõ khóa chính, khóa ngoại)
- Xác định kiểu dữ liệu phù hợp cho từng cột trong các bảng.
Gợi ý kiểu dữ liệu:
MaSV,MaKH,MaGV,MaLop:INThoặcVARCHAR(10)HoTen,TenKhoaHoc,ChuyenNganh:NVARCHAR(100)NgaySinh,NgayKhaiGiang,NgayBatDau,NgayKetThuc,NgayDangKy:DATESoTinChi:TINYINTEmail:VARCHAR(100)SoDienThoai:VARCHAR(15)DiemTB:DECIMAL(4,2)
💡 Sinh viên cần nộp:
- ERD mô tả hệ thống.
- Danh sách bảng với kiểu dữ liệu cụ thể.
| TT | Tên dữ liệu | Kiểu dữ liệu | Độ dài tối đa | Cho phép NULL |
| 1 | MaSV | int | Không | |
| 2 | TenSV | nvarchar | 200 | không |