Chuyển đổi ERD sang mơ hình dữ liệu quan hệ:
Khachhang (MaKH, TenKH, DiaChi, Ngaysinh, SoDT)
LoaiSP (MaLoaiHang, TenLoaiHang, Ghichu)
Nhanvien (MaNV, HoTen, GioiTinh, DiaChi, NgaySinh, DienThoai, Email, NoiSinh,
NgayVaoLam)
Nhacungcap (MaNCC, TenNCC, DiaChi, DienThoai, Email, Website)
Sanpham (MaSP, MaLoaiSP, TenSP, Donvitinh, Ghichu)
28 | P a g e
Phieunhap (SoPN, MaNV, MaNCC, NgayNhap, Ghichu)
MaNV tham chiếu đến Nhanvien (MaNV) MaNCC tham chiếu đến Nhacungcap (MaNCC)
CTPhieunhap (MaSP, SoPN, Soluong, Gianhap)
MaSP tham chiếu đến Sanpham (MaSP) SoPN tham chiếu đến Phieunhap (SoPN)
Phieuxuat (SoPX, MaNV, MaKH, NgayBan, Ghichu)
MaKH tham chiếu đến Khachhang (MaKH) MaNV tham chiếu đến Nhanvien (MaNV)
CTPHIEUXUAT (SoPX, MaSP, SoLuong, Giaban)
MaSP tham chiếu đến Sanpham (MaSP) SoPX tham chiếu đến Phieuxuat (SoPX)
3.3 Ràng buộc dữ liệu
Ràng buộc (Constraint) là các quy tắc được áp đặt cho các cột dữ liệu trên table. Chúng được sử dụng để giới hạn kiểu dữ liệu nhập vào một bảng. Điều này đảm bảo tính chính xác và tính đáng tin cậy cho dữ liệu trong Database.
Dưới đây là các ràng buộc có sẵn và được sử dụng phổ biến trong SQL
- Ràng buộc NOT NULL trong SQL: Bảo đảm một cột khơng thể có giá trị NULL. - Ràng buộc DEFAULT trong SQL: Cung cấp một giá trị mặc định cho cột khi
không được xác định.
- Ràng buộc UNIQUE trong SQL: Bảo đảm tất cả giá trị trong một cột là khác nhau. - Ràng buộc PRIMARY Key trong SQL: Mỗi hàng/bản ghi được nhận diện một
29 | P a g e
- Ràng buộc FOREIGN Key trong SQL: Mỗi hàng/bản ghi được nhận diện một cách duy nhất trong bất kỳ bảng nào.
- Ràng buộc CHECK trong SQL: Bảo đảm tất cả giá trị trong một cột thỏa mãn các điều kiện nào đó.
- Ràng buộc INDEX trong SQL: Sử dụng để tạo và lấy dữ liệu từ Database một cách nhanh chóng.
Ràng buộc Check
--Yêu cầu số lượng lớn nhập lớn hơn 0
CREATESCHEMA Test_Soluong ;
GO
CREATETABLE CTPhieunhap_SL( MaSP INTIDENTITYPRIMARYKEY, Soluong VARCHAR(255) NOT NULL,
Soluongnhap DEC(10,2) CHECK(Soluongnhap > 0) );
INSERTINTO CTPhieunhap_SL(Soluong, Soluongnhap )
VALUES ('SP01', 10);
Kết quả