bài 7: thiết kế cơ sở dữ liệu vật lý
DESCRIPTION
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ệuTRANSCRIPT
Bài 7:THIẾT KẾ CƠ SƠ DỮ LIỆU VẬT LÝ
Tì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ũ
Slide 7- Thiết kế CSDL vật lý 2
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
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
Slide 7- Thiết kế CSDL vật lý 3
Thiế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ý
Slide 7- Thiết kế CSDL vật lý 4
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ểu
diễ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ểu
diễn dưới dạng bảng như sau
Slide 7- Thiết kế CSDL vật lý 5
KhachHang
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)
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)
Slide 7- Thiết kế CSDL vật lý 6
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
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
Slide 7- Thiết kế CSDL vật lý 7
4 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ụ
Slide 7- Thiết kế CSDL vật lý 8
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
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
Slide 7- Thiết kế CSDL vật lý 9
Thiết kế thành ba bảng
Slide 7- Thiết kế CSDL vật lý 10
Thiết kế thành hai bảng
Slide 7- Thiết kế CSDL vật lý 11
Thiết kế thành một bảng duy nhất
Slide 7- Thiết kế CSDL vật lý 12
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:
SoLuong, DonGia, ThanhTien
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:
SoLuong, DonGia, ThanhTien
Slide 7- Thiết kế CSDL vật lý 13
Hãy thiết kế các bảng cho CSDL trên???
Bài tập ví dụ
Slide 7- Thiết kế CSDL vật lý 14
Kết quả:
Bài tập ví dụ
Slide 7- Thiết kế CSDL vật lý 15
Đặ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
Đặ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
Slide 7- Thiết kế CSDL vật lý 16
Quy 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
Quy 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
Slide 7- Thiết kế CSDL vật lý 17
Quy tắc đặt tên các ràng buộc: theo quy cáchTENBANG_KIEU_TENTHUOCTINH
Trong đó: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áchTENBANG_KIEU_TENTHUOCTINH
Trong đó: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 đó
Slide 7- Thiết kế CSDL vật lý 18
Quy tắc đặt tên chỉ mục (Index): theo quy cách
TENBANG_KIEU_TENTHUOCTINH
Trong đó:
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
TENTHUOCTINH: Tên của cột mà chỉ mục được định nghĩa trên
đó
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_TENTHUOCTINH
Trong đó:
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
TENTHUOCTINH: Tên của cột mà chỉ mục được định nghĩa trên
đó
Slide 7- Thiết kế CSDL vật lý 19
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
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
Slide 7- Thiết kế CSDL vật lý 20
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)
Các kiểu dữ liệu, độ chính xác và miền giá trị
Các Trigger
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)
Các kiểu dữ liệu, độ chính xác và miền giá trị
Các Trigger
Slide 7- Thiết kế CSDL vật lý 21
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);
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);
Slide 7- Thiết kế CSDL vật lý 22
Ràng buộc khóa chính trên một cột sẽ quy định cột đó là khóa chính
cho 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);
Ràng buộc khóa chính
Ràng buộc khóa chính trên một cột sẽ quy định cột đó là khóa chính
cho 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);
Slide 7- Thiết kế CSDL vật lý 23
Sử dụng từ khóaPRIMARY KEY
Tên cột được quy địnhlà khóa chính
Ràng buộc khóa ngoại trên một cột sẽ quy định cột chỉ được phép
chứ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óa
ngoạ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 CUSTOMERALTER 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ép
chứ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óa
ngoạ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 CUSTOMERALTER TABLE INVOICE
ADD CONSTRAINT INVOICE_FK_CUSTOMER_NUMBER
FOREIGN KEY (CUSTOMER_NUMBER)
REFERENCES CUSTOMER (CUSTOMER_NUMBER);
Slide 7- Thiết kế CSDL vật lý 24
Sử dụng từ khóaPRE FERENCES
Cột đóng vai trò kết nối bảngINVOICE với bảng CUSTOMER
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);
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);
Slide 7- Thiết kế CSDL vật lý 25
Sử dụng từ khóaUNIQUE
Tổ hợp giá trị của hai cộtCUSTOMER_NUMBER và
CUSTOMER_PO_NUMBER phải khác nhau
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ột
phả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ột
phả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);
Slide 7- Thiết kế CSDL vật lý 26
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
cột của bảng.
Nguyên tắc chung:
Mỗi quan hệ đã chuẩn hóa trở thành một bảng, các thuộc tính trở thành
các cột trong bảng.
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)
Tổng kết bài họ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
cột của bảng.
Nguyên tắc chung:
Mỗi quan hệ đã chuẩn hóa trở thành một bảng, các thuộc tính trở thành
các cột trong bảng.
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)
Slide 7- Thiết kế CSDL vật lý 27
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ị
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ị
Slide 7- Thiết kế CSDL vật lý 28