Khái niệm lược đồ quan hệ sử dụng các dạng chuẩn normal forms: là tập hợp các tiêu chuẩn cho CSDL quan hệ nhằm giảm thiểu dư thừa và phụ thuộc của dữ liệu dựa vào khoá và các phụ thuộc
Trang 1Bài 7: Chuẩn hoá dữ liệu,
Một số vấn đề khác
Trang 2Chuẩn hoá dữ liệu
(data normalization)
Trang 3Khái niệm
lược đồ quan hệ
sử dụng các dạng chuẩn (normal forms): là tập hợp các tiêu chuẩn cho CSDL
quan hệ nhằm giảm thiểu dư thừa và phụ thuộc của
dữ liệu (dựa vào khoá và các phụ thuộc dạng hàm)
Trang 4Các dạng chuẩn
Dạng chuẩn thứ nhất (First normal form – 1NF): 1970
Dạng chuẩn thứ hai (Second normal form – 2NF): 1971
Dạng chuẩn thứ ba (Third normal form – 3NF): 1971
Dạng chuẩn Boyce-Codd (Boyce-Codd normal form –
BCNF): 1974
Dạng chuẩn thứ tư (Forth normal form – 4NF): 1977
Dạng chuẩn thứ năm (Fifth normal form – 5NF): 1979
Dạng chuẩn thứ sáu (Sixth normal form – 6NF): 2003
Trang 5Dạng chuẩn thứ nhất – 1NF
có nhóm thuộc tính nào được lặp lại
Order
id: int shipdate: date customer: string address: string item_name1: string item_number1: int item_price1: int item_name2: string item_number2: int item_price2: int
item_name9: string item_number9: int item_price9: int
Trang 6item_name: string item_number: int item_price: int
OrderItem
order_id: int
Trang 7 Tính dư thừa dữ liệu: họ tên
được lưu trữ nhiều lần
Trang 9Phụ thuộc dạng hàm
(functional dependencies): là sự tổng quát hoá của
khái niệm khoá
là hai tập thuộc tính của R Gọi β phụ thuộc dạng
hàm vào α (ký hiệu: α → β) khi và chỉ khi mỗi giá trị của α xác định một giá trị của β
Với ví dụ trước ta có:
mã-sv → họ-tên
Với khái niệm này, có thể định nghĩa lại 2NF: không
có tập thuộc tính không khoá nào phụ thuộc dạng
hàm vào một tập con của thuộc tính khoá
Trang 10Các tính chất của phụ thuộc dạng hàm
Trang 11(Tồn tại phụ thuộc dạng hàm: tác-giả → năm-sinh-tg)
tên sách năm tác-giả năm-sinh-tg
The universe in a nutshell 2001 Stephen Hawking 1942
A brief history of time 1988 Stephen Hawking 1942
Trang 12Chuyển về 3NF
tên sách năm tác-giả
The universe in a nutshell 2001 Stephen Hawking
The Da Vinci code 2003 Dan Brown
A brief history of time 1988 Stephen Hawking
Digital fortress 1998 Dan Brown
The lost symbol 2009 Dan Brown tác-giả năm-sinh-tg
Stephen Hawking 1942
Trang 13Dạng chuẩn Boyce-Codd – BCNF
được gọi là 3.5NF
khi: với mỗi phụ thuộc dạng hàm α → β, một trong hai điều kiện sau thoả mãn:
Tính chất:
hợp
Trang 14Khung nhìn
(views)
Trang 15Khái niệm
logic, được tạo ra dựa trên các quan hệ thực, nhằm giúp thuận tiện trong sử dụng
Ví dụ:
nhà với các người dùng thông thường
DangKy thành một quan hệ ảo khác để dễ sử dụng
Việc sửa đổi hay trích thông tin trên khung nhìn phải đảm bảo phản ánh đúng như khi thao tác trên các quan hệ thực
Trang 16Lý do chính dùng khung nhìn
Chỉ làm việc trên một phần của dữ liệu
Có thể gộp nhiều quan hệ thành một quan hệ ảo
Tạo ra các quan hệ có khả năng tuỳ biến cao theo nhu cầu sử dụng
Khung nhìn không lưu trữ
thêm dữ liệu, mà thực thi
Trang 17SQL
create view tên as select …;
select
drop view tên;
Sau khi được tạo, việc truy vấn và cập nhật dữ liệu của khung nhìn tương tự như với các quan hệ
thường
Trang 183 rows in set (0.00 sec)
mysql> create view t1 as select qty, price as value from t where qty>2;
Query OK, 0 rows affected (0.02 sec)
mysql> select * from t1;
Trang 19Đánh chỉ mục
(indexing)
Trang 20Khái niệm
nhiều so với dữ liệu không được sắp xếp
Ví dụ: bài toán tra từ điển
Đánh chỉ mục (indexing) là việc tạo ra các cấu trúc
dữ liệu (cây, bảng băm,…) phụ để giúp tìm kiếm dữ liệu nhanh hơn
được index (VD: tìm kiếm chuỗi con,…)
Trang 21drop index tên-index on tên-quan-hệ;
Liệt kê các index:
(SQL Server) exec sp_helpindex tên-quan-hệ;
vẫn như trước Việc sử dụng tới các index là tự
động do DBMS tự quyết định
Trang 221 row in set (1.74 sec)
mysql> create index thivien_poem_AUTHOR on thivien_poem(AUTHOR);
Query OK, 40349 rows affected (1 min 14.00 sec)
Records: 40349 Duplicates: 0 Warnings: 0
mysql> select count(*) from thivien_poem where AUTHOR=20;
Trang 23Bài tập
1 Xác định xem quan hệ sau thuộc dạng chuẩn nào:
ITEM (SKU, PromID, Vendor, Style, Price)
(SKU, PromID) → (Vendor, Style, Price)
SKU → (Vendor, Style)
2 Chuẩn hoá quan hệ trên về dạng cao hơn
3 Chọn một khoá và liệt kê các phụ thuộc dạng hàm cho:
ITEMS (PONum, ItemNum, PartNum, Desc, Price, Qty)