Ràng buộc trong CSDL Quản lý sinh viên với SQL Server

Khóa Thực chiến SQL cùng Kteam - Dự án quản lý sinh viên

5.0 (2 đánh giá)
Tạo bởi K9 Cập nhật lần cuối 20:33 16-07-2019 4.176 lượt xem 1 bình luận
Học nhanh

Danh sách bài học

Ràng buộc trong CSDL Quản lý sinh viên với SQL Server

Dẫn nhập

Ở bài trước, chúng ta đã cùng nhau thực hành STORED PROCEDURE TRONG QUẢN LÝ SINH VIÊN VỚI SQL SERVER . Nội dung đề cập trong bài này thực sự không quá khó, mà còn có phần khá dễ chịu so với những bài trước. Tuy nhiên, phần bài tập về nhà sẽ nhiều "xương" nhé! 

Trong bài này chúng ta sẽ cùng nhau đi vào một trong các phần cuối của khóa thực chiến với dự án Quản lý sinh viên đó chính là Ràng buộc trong CSDL dự án Quản lý sinh viên - phần 1

Chúng ta hãy cùng nhau teamwork, thảo luận và hỗ trợ nhau trong dự án này để giải quyết  bài toán thực tế một cách hoàn chỉnh dưới sự hướng dẫn của anh Kim Long - founder Howkteam nhé! 


Nội dung

Để theo dõi bài này một cách tốt nhất, bạn nên có kiến thức về các phần:

Trong bài này, Kteam sẽ cùng các bạn tìm hiểu các nội dung:

  • Giải quyết bài tập & củng cố kiến thức của bài trước
  • Nhắc lại kiến thức Ràng buộc trong SQL Server
  • Hướng dẫn thực hành ràng buộc
  • Phân tích các vấn đề thực tế trong sử dụng ràng buộc
  • Phần định hướng bài tập
  • Các phần chia sẻ kinh nghiệm thực tế

Phần mềm sử dụng

Trong khóa học này, chúng ta sẽ học và thực hành trực tiếp với SQL Server. Nếu bạn chưa cài đặt SQL thì có thể xem qua bài 

Bạn cũng có thể sử dụng các phiên bản khác từ 2008 trở lên. (vì không có nhiều khác biệt)


Ràng buộc 

Hướng dẫn thực hành 

Hãy cài đặt các ràng buộc toàn vẹn sau (bằng check constraint, unique constraint, rule hoặc trigger):

Source code mẫu của phần này sẽ được cập nhập sau khi khóa livestream kết thúc.

Miền giá trị

  1. ChuongTrinh mà chỉ có thể là ‘CQ‘ hoặc ‘CD‘ hoặc ‘TC
  2. Chỉ có 2 học kỳ là ‘HK1‘ và ‘HK2
  3. Số tiết lý thuyết (GiangKhoa.soTietLyThuyet) tối đa là 120
  4. Số tiết thực hành (GiangKhoa.soTietThucHanh) tối đa là 60
  5. Số tín chỉ (GiangKhoa.soTinChi) của một môn học tối đa là 6
  6. Điểm thi (KetQua.diem) được chấm theo thang điểm 10 và chính xác đến 0.5  (làm bằng 2 cách: kiểm tra và báo lỗi nếu không đúng quy định; tự động làm tròn nếu không đúng qui định về độ chính xác)

Bài tập về nhà

Liên thuộc tính trên 1 quan hệ

  1. Năm kết thúc khóa học phải lớn hơn hoặc bằng năm bắt đầu 
  2. Số tiết lý thuyết của mỗi giảng khóa không nhỏ hơn số tiết thực hành Liên bộ trên 1 quan hệ

Khảo sát buổi học

Hôm nay chúng ta đã hoàn buổi 6 của khóa THỰC CHIẾN SQL VỚI KTEAM - DỰ ÁN QUẢN LÝ SINH VIÊN
Đây là bài khảo sát ngắn sau mỗi bài học, nhằm giúp Kteam đánh giá hiệu quả truyền tải của khóa học và hỗ trợ bạn các giải đáp các câu hỏi, kiến thức được đề cập đến trong bài.

KHẢO SÁT BÀI RÀNG BUỘC TRONG CSDL QUẢN LÝ SINH VIÊN

Vui lòng giúp Kteam hoàn thành khảo sát để nhận được email theo dõi tiến độ cùng source code bài hôm nay, học liệu bài mới và đường dẫn tham gia khóa học mỗi ngày nhé! 


Kết

Trong bài này,chúng ta đã tìm hiểu về Ràng buộc trong dự án quản lý sinh viên. Buổi học đã được diễn ra vào lúc 20h ngày 16/07/2019 tại phần trình chiếu của bài  Ràng buộc trong dự án quản lý sinh viên trên Howkteam.com

Lưu ý: Sau bài học, Kteam sẽ gửi mail Khảo sát & giải đáp câu hỏi đến mail đã đăng ký của các bạn. Hoàn thành mail trước buổi học tiếp theo để xác nhận đã tham gia buổi học và đăng ký nhận đường dẫn kèm học liệu cho buổi học tiếp theo.

Ở bài sau, chúng ta sẽ tìm hiểu về RÀNG BUỘC TRONG DỰ ÁN QUẢN LÝ SINH VIÊN (phần 2)

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó” 


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

K9

Nhà sáng lập Howkteam.com & tác giả các khóa học C#, Auto, Unity3D, Python....

Với mong muốn mang đến kiến thức chất lượng, miễn phí cho mọi người, với tâm huyết phá bỏ rào cản kiến thức từ việc giáo dục thu phí. Tôi đã cùng đội ngũ Kteam đã lập nên trang website này để thế giới phẳng hơn.
Hãy cùng chúng tôi lan tỏa kiến thức đến cộng đồng! 

Khóa học

Khóa Thực chiến SQL cùng Kteam - Dự án quản lý sinh viên

sql, kteam, howkteam,cơ sở dữ liệu, bài tập cơ sở dữ liệu

Trong các khóa học SỬ DỤNG SQL SERVER PHÂN TÍCH THIẾT KẾ PHẦN MỀM, Kteam đã đề cập đến các kiến thức cần thiết để bạn có thể bắt đầu xây dựng một cơ sở dữ liệu với SQL server và truy vấn qua CSDL đó.

Ở combo Thực chiến SQL, chúng ta sẽ cùng nhau phân tích các CSDL đó từ đặc tả và ứng dụng các kiến thức đã học ở hai khóa trên vào việc giải quyết các yêu cầu thực tế của một CSDL. Trong bộ khóa học này các bạn sẽ đi qua các kiến thức từ cơ bản đến nâng cao qua các dự án khác nhau.

Nào! Chúng ta sẽ cùng nhau tìm hiểu dự án đầu tiên THỰC CHIẾN SQL CÙNG DỰ ÁN QUẢN LÝ SINH VIÊN

Đánh giá

Lê Vũ Duy đã đánh giá 20:42 28-10-2019

Tuyệt vời tks Kteam

Phạm Tấn Thành Moderator đã đánh giá 01:35 17-07-2019

ràng buộc trong cơ sở dữ liệu

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
linhbeo228 đã bình luận 12:40 17-07-2019
USE QuanLySinhVien
GO

-- 1. Mã chương trình trong Chương trình học chỉ 
-- có thể là 'CQ', 'CD' hoặc 'TC'
ALTER TABLE dbo.ChuongTrinhHoc
ADD CONSTRAINT check_mact
CHECK (MaCT IN ('CQ', 'CD', 'TC'))
GO

CREATE TRIGGER UTG_MaCT ON ChuongTrinhHoc
    FOR INSERT, UPDATE
AS
    BEGIN
        IF EXISTS ( SELECT  *
                    FROM    Inserted
                    WHERE   MaCT NOT IN ( 'CQ', 'CD', 'TC' ) )
            BEGIN
                RAISERROR(N'Mã chương trình không hợp lệ', 16, 1)
                ROLLBACK TRAN
            END
    END
GO

-- 2. Học kì trong Giảng khoa chỉ có thể là 'HK1' hoặc 'HK2'
-- Chịu :D

-- 3. Số tiết lý thuyết trong Giảng khoa tối đa là 120
ALTER TABLE dbo.GiangKhoa
ADD CONSTRAINT check_stlt
CHECK (STLT <= 120)
GO

CREATE TRIGGER UTG_STLT ON dbo.GiangKhoa
    FOR INSERT, UPDATE
AS
    BEGIN
        IF ( EXISTS ( SELECT    *
                      FROM      Inserted
                      WHERE     STLT > 120 ) )
            BEGIN
                RAISERROR(N'Số tiết lý thuyết không hợp lệ', 16, 1)
                ROLLBACK TRAN
            END
    END
GO

-- 4. Số tiết thực hành trong Giảng khoa tối đa là 60
-- Tương tự câu 3

-- 5. Số tín chỉ trong Giảng khoa tối đa là 6
-- Tương tự câu 3

-- 6. Điểm trong Kết quả chấm theo thang điểm 10
-- và chính xác đến 0.5 (làm bằng 2 cách, kiểm tra
-- và báo lỗi nếu không đúng quy định, tự động làm tròn
-- nếu không đúng quy định về độ chính xác)
CREATE TABLE dbo.KetQua
ADD CONSTRAINT check_diem
CHECK (Diem >= 0 AND Diem <= 10)
GO

-- Quy ước làm tròn đến 0.5
-- Dưới 0.25 làm tròn xuống .0
-- Từ 0.25 đến dưới 0.75 làm tròn thành 0.5
-- Từ 0.75 trở lên làm tròn lên 1.0
CREATE FUNCTION UF_LamTronDiem05 ( @diem FLOAT )
RETURNS FLOAT
AS
    BEGIN
        DECLARE @int INT
        SET @int = FLOOR(@diem)
        IF ( @diem - @int < 0.25 )
            SET @diem = @int
        ELSE
            IF ( @diem - @int >= 0.25
                 AND @diem - @int < 0.75
               )
                SET @diem = @int + 0.5
            ELSE
                SET @diem = @int + 1
        RETURN @diem
    END
GO

CREATE TRIGGER UTG_Diem ON dbo.KetQua
    FOR INSERT, UPDATE
AS
    BEGIN
        UPDATE  dbo.KetQua
        SET     Diem = dbo.UF_LamTronDiem05(I.Diem)
        FROM    dbo.KetQua KQ
                JOIN Inserted I ON I.Diem = KQ.Diem
                                   AND I.LanThi = KQ.LanThi
                                   AND I.MaMH = KQ.MaMH
                                   AND I.MaSV = KQ.MaSV	
        IF ( EXISTS ( SELECT    *
                      FROM      Inserted
                      WHERE     Diem < 0
                                OR Diem > 10 ) )
            BEGIN
                RAISERROR(N'Điểm không hợp lệ', 16, 1)
                ROLLBACK TRAN
            END			
    END
GO

-- 7. Năm kết thúc phải lớn hơn hoặc bằng Năm bắt đầu trong bảng Khóa học
ALTER TABLE dbo.KhoaHoc
ADD CONSTRAINT check_namkt
CHECK (NamKT >= NamBD)
GO

CREATE TRIGGER UTG_NamKT ON dbo.KhoaHoc
    FOR INSERT, UPDATE
AS
    BEGIN
        IF ( EXISTS ( SELECT    *
                      FROM      Inserted
                      WHERE     NamKT < NamBD ) )
            BEGIN
                RAISERROR(N'Năm kết thúc không hợp lệ', 16, 1)
                ROLLBACK TRAN
            END
    END
GO

-- 8. Số tiết lý thuyết của mỗi Giảng khoa không nhỏ hơn Số tiết thực hành
ALTER TABLE dbo.GiangKhoa
ADD CONSTRAINT check_stlt_2
CHECK (STLT >= STTH)
GO

CREATE TRIGGER UTG_STLT_2 ON dbo.GiangKhoa
    FOR INSERT, UPDATE
AS
    BEGIN
        IF ( EXISTS ( SELECT    *
                      FROM      Inserted
                      WHERE     STLT < STTH ) )
            BEGIN
                RAISERROR(N'Số tiết lý thuyết không hợp lệ', 16, 1)
                ROLLBACK TRAN
            END
    END
GO

 

Không có video.