Các nguyên tắc xây dựng bảng:Mỗi quan hệ đã chuẩn hóa trở thành một bảng Mỗi thuộc tính trong quan hệ trở thành một cột trong bảng Mỗi thuộc tính có tên, kiểu dữ liệu và miền giá trị Đặt
Trang 1Bài 7:
THIẾT KẾ CƠ SƠ DỮ LIỆU VẬT LÝ
Trang 2Tìm hiểu mô hình thực thể liên kết (Entity Relationship Modeling) vàcác thành phần của mô hình
Tìm hiểu các mô hình mô tả tiến trình (sơ đồ tiến trình)
Hệ thống bài cũ
Trang 3Biết cách xây dựng các thành phần dữ liệu mức vật lý
Biết cách xây dựng các bảng từ các quan hệ
Biết tích hợp thêm các ràng buộc và toàn vẹn dữ liệu
Mục tiêu bài học hôm nay
Biết cách xây dựng các thành phần dữ liệu mức vật lý
Biết cách xây dựng các bảng từ các quan hệ
Biết tích hợp thêm các ràng buộc và toàn vẹn dữ liệu
Trang 4Thiết kế CSDL mức vật lý là xây dựng CSDL quan hệ
gồm các bảng từ các quan hệ đã được chuẩn hóa Thêm các ràng buộc và toàn vẹn dữ liệu
Thiết kế CSDL mức vật lý
Trang 5Là bước đầu tiên trong thiết kế CSDL vật lý
Mỗi bảng biểu diễn một quan hệ đã được chuẩn hóa.
Ví dụ:
Quan hệ KhachHang: MaKH, Hoten, Diachi, Dienthoai được biểudiễn dưới dạng bảng như sau
Thiết kế các bảng
Là bước đầu tiên trong thiết kế CSDL vật lý
Mỗi bảng biểu diễn một quan hệ đã được chuẩn hóa.
Ví dụ:
Quan hệ KhachHang: MaKH, Hoten, Diachi, Dienthoai được biểudiễn dưới dạng bảng như sau
KhachHang
Trang 6Các nguyên tắc xây dựng bảng:
Mỗi quan hệ đã chuẩn hóa trở thành một bảng
Mỗi thuộc tính trong quan hệ trở thành một cột trong bảng
Mỗi thuộc tính có tên, kiểu dữ liệu và miền giá trị Đặt ràng buộc cho thuộc tính (nếu có)
Khóa của quan hệ trở thành khóa chính (PK) của bảng và có giátrị NOT NULL
Các liên kết giữa các quan hệ trở thành ràng buộc tham chiếu(ràng buộc khóa)
Thiết kế các bảng
Các nguyên tắc xây dựng bảng:
Mỗi quan hệ đã chuẩn hóa trở thành một bảng
Mỗi thuộc tính trong quan hệ trở thành một cột trong bảng
Mỗi thuộc tính có tên, kiểu dữ liệu và miền giá trị Đặt ràng buộc cho thuộc tính (nếu có)
Khóa của quan hệ trở thành khóa chính (PK) của bảng và có giátrị NOT NULL
Các liên kết giữa các quan hệ trở thành ràng buộc tham chiếu(ràng buộc khóa)
Trang 7CSDL ứng dụng Acme Industries gồm 4 quan hệ như sau:
PRODUCT : Product Number (PK) , Product Description, List Unit Price
CUSTOMER : Customer Number (PK) , Customer Name, Customer
Address, Customer City, Customer State, Customer Zip Code,
Customer Phone
INVOICE: Invoice Number (PK) , Customer Number, Terms, Ship Via,
Order Date
INVOICE LINE ITEM: Invoice Number (PK) , Product Number (PK),
Quantity, Sale Unit Price
Ví dụ
CSDL ứng dụng Acme Industries gồm 4 quan hệ như sau:
PRODUCT : Product Number (PK) , Product Description, List Unit Price
CUSTOMER : Customer Number (PK) , Customer Name, Customer
Address, Customer City, Customer State, Customer Zip Code,
Customer Phone
INVOICE: Invoice Number (PK) , Customer Number, Terms, Ship Via,
Order Date
INVOICE LINE ITEM: Invoice Number (PK) , Product Number (PK),
Quantity, Sale Unit Price
Trang 84 bảng tương ứng với 4 quan hệ và ràng buộc giữa các bảng như
sau:
Ví dụ
Trang 9Ví dụ: đối tượng Customer có thể gồm 2 lớp con:
Individual_Customer và Commercial_Customer
Có 3 cách để thiết kế các bảng:
Thiết kế thành ba bảng Customer, Individual_Customer và
Commercial_Customer
Thiết kế thành hai bảng: Individual_Customer và Commercial_Customer.
Các thuộc tính chung trong bảng Customer được thêm vào hai bảng này Thiết kế thành một bảng duy nhất Customer Các thuộc tính của bảng
được gộp lại
Xét trường hợp đối tượng gồm các lớp con
Ví dụ: đối tượng Customer có thể gồm 2 lớp con:
Individual_Customer và Commercial_Customer
Có 3 cách để thiết kế các bảng:
Thiết kế thành ba bảng Customer, Individual_Customer và
Commercial_Customer
Thiết kế thành hai bảng: Individual_Customer và Commercial_Customer.
Các thuộc tính chung trong bảng Customer được thêm vào hai bảng này Thiết kế thành một bảng duy nhất Customer Các thuộc tính của bảng
được gộp lại
Trang 10Thiết kế thành ba bảng
Trang 11Thiết kế thành hai bảng
Trang 12Thiết kế thành một bảng duy nhất
Trang 13Bài toán quản lý CSDL các đối tượng khách hàng mua
hàng CSDL gồm các đối tượng KhachHang, DonHang,
SanPham như sau:
KHACHHANG: MaKH , HotenKH, DiaChi, DienThoai
DONHANG: SoDH, NgayDatHang, TongTien, NguoiLap
SANPHAM: MaSP, TenSP, QuyCach, DonViTinh
Mỗi Yêu cầu đặt hàng của KhachHang gồm các thông tin:
Bài tập ví dụ
Bài toán quản lý CSDL các đối tượng khách hàng mua
hàng CSDL gồm các đối tượng KhachHang, DonHang,
SanPham như sau:
KHACHHANG: MaKH , HotenKH, DiaChi, DienThoai
DONHANG: SoDH, NgayDatHang, TongTien, NguoiLap
SANPHAM: MaSP, TenSP, QuyCach, DonViTinh
Mỗi Yêu cầu đặt hàng của KhachHang gồm các thông tin:
Trang 14Hãy thiết kế các bảng cho CSDL trên???
Bài tập ví dụ
Trang 15Kết quả:
Bài tập ví dụ
Trang 16Đặt tên bảng:
Tên bảng phải phản ánh thực thể
Tên bảng phải viết chữ hoa và các kí tự “_” để phân tách các từ (trong Oracle)
Không có các từ “table” hay “file” trong tên bảng
Các quy tắc đặt tên trong Oracle
Trang 17Quy tắc đặt tên cột:
Tên cột phải dựa trên tên của thuộc tính
Là duy nhất trong bảng
Tên cột phải viết chữ hoa
Các quy tắc đặt tên trong Oracle
Trang 18Quy tắc đặt tên các ràng buộc: theo quy cách
TENBANG_KIEU_TENTHUOCTINHTrong đó:
TENBANG: Tên bảng mà ràng buộc được định nghĩa trên đó
KIEU: Kiểu của ràng buộc
PK: ràng buộc khóa chính FK: ràng buộc khóa ngoại UQ: ràng buộc duy nhất CK: ràng buộc Check
TENTHUOCTINH: Tên của cột mà ràng buộc được định nghĩa
trên đó
Các quy tắc đặt tên trong Oracle
Quy tắc đặt tên các ràng buộc: theo quy cách
TENBANG_KIEU_TENTHUOCTINHTrong đó:
TENBANG: Tên bảng mà ràng buộc được định nghĩa trên đó
KIEU: Kiểu của ràng buộc
PK: ràng buộc khóa chính FK: ràng buộc khóa ngoại UQ: ràng buộc duy nhất CK: ràng buộc Check
TENTHUOCTINH: Tên của cột mà ràng buộc được định nghĩa
trên đó
Trang 19Quy tắc đặt tên chỉ mục (Index): theo quy cách
TENBANG_KIEU_TENTHUOCTINHTrong đó:
TENBANG: Tên bảng mà chỉ mục được định nghĩa trên đó
KIEU: Kiểu của chỉ mục
UX: chỉ mục duy nhất IX: không phải chỉ mục duy nhất
Các quy tắc đặt tên trong Oracle
Quy tắc đặt tên chỉ mục (Index): theo quy cách
TENBANG_KIEU_TENTHUOCTINHTrong đó:
TENBANG: Tên bảng mà chỉ mục được định nghĩa trên đó
KIEU: Kiểu của chỉ mục
UX: chỉ mục duy nhất IX: không phải chỉ mục duy nhất
Trang 20Quy tắc đặt tên các View:
Nên kết thúc bằng _VW
Nên chứa tên của bảng
Nên diễn tả được mục đích của View hoặc kiểu dữ liệu
Các quy tắc đặt tên trong Oracle
Quy tắc đặt tên các View:
Nên kết thúc bằng _VW
Nên chứa tên của bảng
Nên diễn tả được mục đích của View hoặc kiểu dữ liệu
Trang 21Ràng buộc là các quy định áp dụng trên các cột của bảng, đảm bảo
dữ liệu được kiểm tra và vẹn toàn
Các ràng buộc được tích hợp trong CSDL:
Ràng buộc NOT NULL
Ràng buộc Khóa chính (Primary Key)
Ràng buộc Khóa ngoại (Foreign Key)
Ràng buộc duy nhất (UNIQUE)
Ràng buộc Kiểm tra (CHECK)
Tích hợp các ràng buộc
Ràng buộc là các quy định áp dụng trên các cột của bảng, đảm bảo
dữ liệu được kiểm tra và vẹn toàn
Các ràng buộc được tích hợp trong CSDL:
Ràng buộc NOT NULL
Ràng buộc Khóa chính (Primary Key)
Ràng buộc Khóa ngoại (Foreign Key)
Ràng buộc duy nhất (UNIQUE)
Ràng buộc Kiểm tra (CHECK)
Trang 22Ràng buộc NOT NULL quy định giá trị của cột dữ liệu không được
phép để rỗng
Ví dụ: tạo bảng INVOICE có 3 cột có ràng buộc NOT NULL
CREATE TABLE INVOICE
(INVOICE_NUMBER NUMBER(7) NOT NULL ,
CUSTOMER_NUMBER NUMBER(5) NOT NULL ,
CUSTOMER_PO_NUMBER VARCHAR(10) NULL,
SHIP_VIA VARCHAR(30) NULL,
ORDER_DATE DATE NOT NULL );
Ràng buộc NOT NULL
Ràng buộc NOT NULL quy định giá trị của cột dữ liệu không được
phép để rỗng
Ví dụ: tạo bảng INVOICE có 3 cột có ràng buộc NOT NULL
CREATE TABLE INVOICE
(INVOICE_NUMBER NUMBER(7) NOT NULL ,
CUSTOMER_NUMBER NUMBER(5) NOT NULL ,
CUSTOMER_PO_NUMBER VARCHAR(10) NULL,
SHIP_VIA VARCHAR(30) NULL,
ORDER_DATE DATE NOT NULL );
Trang 23Ràng buộc khóa chính trên một cột sẽ quy định cột đó là khóa chínhcho bảng
Ví dụ: tạo ràng buộc khóa chính cho cột INVOICE_NUMBER trong
bảng INVOICE:
ALTER TABLE INVOICE
ADD CONSTRAINT INVOICE_PK_INVOICE_NUMBER
PRIMARY KEY ( INVOICE_NUMBER );
ALTER TABLE INVOICE
ADD CONSTRAINT INVOICE_PK_INVOICE_NUMBER
PRIMARY KEY ( INVOICE_NUMBER );
Sử dụng từ khóa Tên cột được quy định
Trang 24Ràng buộc khóa ngoại trên một cột sẽ quy định cột chỉ được phépchứa giá trị xuất hiện trong cột khóa chính của bảng khác.
Khi tạo ràng buộc khóa ngoại, cần chỉ ra cột tương ứng với cột khóangoại của bảng được kết nối bằng cách sử dụng từ khóa
REFERENCES
Ví dụ: tạo ràng buộc khóa ngoài với bảng CUSTOMER
ALTER TABLE INVOICE
ADD CONSTRAINT INVOICE_FK_CUSTOMER_NUMBER
FOREIGN KEY ( CUSTOMER_NUMBER )
REFERENCES CUSTOMER ( CUSTOMER_NUMBER );
Ràng buộc khóa ngoại
Ràng buộc khóa ngoại trên một cột sẽ quy định cột chỉ được phépchứa giá trị xuất hiện trong cột khóa chính của bảng khác
Khi tạo ràng buộc khóa ngoại, cần chỉ ra cột tương ứng với cột khóangoại của bảng được kết nối bằng cách sử dụng từ khóa
REFERENCES
Ví dụ: tạo ràng buộc khóa ngoài với bảng CUSTOMER
ALTER TABLE INVOICE
ADD CONSTRAINT INVOICE_FK_CUSTOMER_NUMBER
FOREIGN KEY ( CUSTOMER_NUMBER )
REFERENCES CUSTOMER ( CUSTOMER_NUMBER );
Sử dụng từ khóa PRE FERENCES INVOICE với bảng CUSTOMER Cột đóng vai trò kết nối bảng
Trang 25Ràng buộc duy nhất yêu cầu các giá trị trong cột phải khác nhau
Ví dụ:
ALTER TABLE INVOICE
ADD CONSTRAINT INVOICE_UNQ_CUST_NUMB_PO
UNIQUE ( CUSTOMER_NUMBER, CUSTOMER_PO_NUMBER );
Ràng buộc duy nhất
Ràng buộc duy nhất yêu cầu các giá trị trong cột phải khác nhau
Ví dụ:
ALTER TABLE INVOICE
ADD CONSTRAINT INVOICE_UNQ_CUST_NUMB_PO
UNIQUE ( CUSTOMER_NUMBER, CUSTOMER_PO_NUMBER );
Tổ hợp giá trị của hai cột
Trang 26Ràng buộc kiểm tra trên một cột cho phép giá trị nhập vào của cộtphải thỏa mãn ràng buộc kiểm tra thì mới
Ví dụ: thêm ràng buộc kiểm tra điều kiện INVOICE_NUMBER phải
lớn hơn 0
ALTER TABLE INVOICE
ADD CONSTRAINT INVOICE_CK_INVOICE_NUMBER
CHECK (INVOICE_NUMBER > 0);
Ràng buộc kiểm tra
Ràng buộc kiểm tra trên một cột cho phép giá trị nhập vào của cộtphải thỏa mãn ràng buộc kiểm tra thì mới
Ví dụ: thêm ràng buộc kiểm tra điều kiện INVOICE_NUMBER phải
lớn hơn 0
ALTER TABLE INVOICE
ADD CONSTRAINT INVOICE_CK_INVOICE_NUMBER
CHECK (INVOICE_NUMBER > 0);
Trang 27Thiết kế CSDL mức vật lý là xây dựng các bảng dựa trên các quan
hệ đã xây dựng ở mức logic và hợp thêm các ràng buộc trên các
Thiết kế CSDL mức vật lý là xây dựng các bảng dựa trên các quan
hệ đã xây dựng ở mức logic và hợp thêm các ràng buộc trên các
Trang 28Các kiểu ràng buộc bao gồm:
Ràng buộc NOT NULL
Ràng buộc Khóa chính (Primary Key)
Ràng buộc Khóa ngoại (Foreign Key)
Ràng buộc duy nhất (UNIQUE)
Ràng buộc Kiểm tra (CHECK)
Các kiểu dữ liệu, độ chính xác và miền giá trị
Tổng kết bài học
Các kiểu ràng buộc bao gồm:
Ràng buộc NOT NULL
Ràng buộc Khóa chính (Primary Key)
Ràng buộc Khóa ngoại (Foreign Key)
Ràng buộc duy nhất (UNIQUE)
Ràng buộc Kiểm tra (CHECK)
Các kiểu dữ liệu, độ chính xác và miền giá trị