Tải bản đầy đủ (.pdf) (23 trang)

Bài 7 Chuẩn hoá dữ liệu, Một số vấn đề khác

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (608.55 KB, 23 trang )

Bài 7: Chuẩn hoá dữ liệu,
Một số vấn đề khác
1
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Chuẩn hoá dữ liệu
(data normalization)
2
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Khái niệm
 Việc thiết kế một CSDL quan hệ là xây dựng một
lược đồ quan hệ
 cho phép lưu trữ những dữ liệu mong muốn
 giảm thiểu tính dư thừa dữ liệu
 cho phép trích xuất thông tin dễ dàng
 sử dụng các dạng chuẩn (normal forms): là tập hợp
các tiêu chuẩn cho CSDL

 Chuẩn hoá dữ liệu là quá trình cấu trúc một 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)
3
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Cá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

4
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Dạng chuẩn thứ nhất – 1NF
 Một thực thể thoả mãn 1NF nếu nó không
có nhóm thuộc tính nào được lặp lại
 Loại bỏ các thuộc tính đa trị
 Phản VD: thực thể Order vi phạm 1NF vì
nhóm (item_name, item_number, item_price)
lặp lại 9 lần
 Đây là dạng chuẩn đơn giản nhất
 Chuyển về 1NF:
 Chia các nhóm thuộc tính lặp lại thành các
quan hệ nhỏ hơn
 Sử dụng thuộc tính khoá và khoá ngoài
 Liên kết 1 n giữa các quan hệ
5
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nộ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

Ví dụ: Chuyển một thực thể về 1NF







 Định nghĩa thêm quan hệ phụ: OrderItem
 Liên kết 1 n
 Chú ý sử dụng thêm khoá ngoài: order_id
6
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Order
id: int
shipdate: date
customer: string
address: string
item_name: string
item_number: int
item_price: int

OrderItem
order_id: int
Dạng chuẩn thứ hai – 2NF
 Một quan hệ thoả mãn 2NF khi và chỉ khi đồng thời:
 thoả mãn 1NF
 không có thuộc tính nào được xác định bởi một tập con
của khoá
7
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội

-
sv
lớp họ-tên
123
CSDL

Trần
Khánh Linh

123
KTLT

Trần
Khánh Linh

456
LTM

Bill Gates


456
CSDL

Bill Gates

456
KTLT

Bill Gates

789
VXL


Liên Kiệt
789
LTM


Liên Kiệt
 Phản VD: quan hệ bên không
thoả mãn 2NF vì:
 họ-tên được xác định hoàn
toàn bởi mã-sv
 mã-sv là tập con của khoá
(mã-sv, lớp)
 Tính dư thừa dữ liệu: họ tên
được lưu trữ nhiều lần
Chuyển về 2NF

 Để chuyển một quan hệ về 2NF:
 Tách thành các quan hệ nhỏ hơn
 Sử dụng liên kết 1 n

8
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội


SV
Họ tên
123
Trần
Khánh Linh

456
Bill Gates

789

Liên Kiệt


SV
Lớp
123
CSDL

123
KTLT


456
LTM

456
CSDL

456
KTLT

789
VXL

789
LTM

Phụ thuộc dạng hàm
 2NF sử dụng khái niệm phụ thuộc dạng hàm
(functional dependencies): là sự tổng quát hoá của
khái niệm khoá
 Định nghĩa: Trên một quan hệ R, cho α ⊆ R và β ⊆ R
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á
9

EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Các tính chất của phụ thuộc dạng hàm
 Các tiên đề Armstrong
 Phản xạ (phụ thuộc tầm thường): nếu β ⊆ α thì α → β
 Tăng cường: nếu α → β thì (α, μ) → (β, μ)
 Bắc cầu: nếu α → β và β → μ thì α → μ

 Một số tính chất khác
 Hợp: nếu α → β và α → μ thì α → (β, μ)
 Phân rã: nếu α → (β, μ) và α → β thì α → μ
 Giả bắc cầu: nếu α → β và (β, μ) → λ thì (α, μ) → λ
10
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Dạng chuẩn thứ ba – 3NF
 Một quan hệ thoả mãn 3NF khi và chỉ khi đồng thời:
 thoả mãn 2NF
 không có phụ thuộc dạng hàm nào với thuộc tính không
khoá
 Phản ví dụ:





(Tồn tại phụ thuộc dạng hàm: tác-giả → năm-sinh-tg)
11
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội

tên sách năm tác-giả năm-sinh-tg
The universe in a nutshell
2001
Stephen Hawking
1942
The Da Vinci code
2003
Dan Brown
1964
A brief history of time
1988
Stephen Hawking
1942
Digital fortress
1998
Dan Brown
1964
The
lost symbol 2009
Dan Brown
1964
Chuyển về 3NF
 Để chuyển một quan hệ về 3NF (tương tự với 2NF):
 Tách thành các quan hệ nhỏ hơn
 Sử dụng liên kết 1 n
 Thêm thuộc tính khoá của quan hệ mới

12
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội

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
Dan Brown
1964
Dạng chuẩn Boyce-Codd – BCNF
 BCNF được định nghĩa để bổ trợ cho 3NF  còn
được gọi là 3.5NF
 Định nghĩa: quan hệ R thoả mãn BCNF khi và chỉ
khi: với mỗi phụ thuộc dạng hàm α → β, một trong
hai điều kiện sau thoả mãn:
 α → β là phụ thuộc dạng hàm tầm thường (tức β ⊆ α)
 α là khoá của R
 Tính chất:
 Nếu R thoả mãn BCNF thì thoả mãn 3NF
 Ngược lại chưa chắc đúng, nhưng chỉ một số ít trường
hợp


13
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Khung nhìn
(views)
14
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Khái niệm
 Khung nhìn là các quan hệ ảo thuần tuý về mặt

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ụ:
 Trên CSDL nhân viên, ẩn thông tin về mức lương, địa chỉ
nhà với các người dùng thông thường
 Trên CSDL sinh viên, gộp các quan hệ SinhVien, LopHoc,
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
15
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Lý 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
16
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
 Khung nhìn không lưu trữ
thêm dữ liệu, mà thực thi
trên các quan hệ thực
 Hỗ trợ thêm khả năng bảo
mật thông tin
 Ẩn những phần dữ liệu
không muốn thể hiện ra
bên ngoài
SQL

 Tạo khung nhìn:
create view tên as select …;
 Định nghĩa của khung nhìn phụ thuộc vào câu lệnh
select
 Xoá khung nhìn:
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

17
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Ví dụ (MySQL)
mysql> select * from t;
+ + +
| qty | price |
+ + +
| 3 | 50 |
| 5 | 60 |
| 2 | 20 |
+ + +
3 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;
+ + +
| qty | value |

+ + +
| 3 | 50 |
| 5 | 60 |
+ + +
2 rows in set (0.01 sec)

mysql> _
18
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Đánh chỉ mục
(indexing)
19
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Khái niệm
 Việc tìm kiếm với dữ liệu có sắp xếp sẽ nhanh hơn
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ó thể tạo nhiều index cho mỗi quan hệ
 Nên tạo index cho các thuộc tính hay được dùng trong
các điều kiện tìm kiếm (mệnh đề where )
 Không phải điều kiện tìm kiếm nào cũng có thể dùng
được index (VD: tìm kiếm chuỗi con,…)
20
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội

SQL
 Tạo index:
create index tên-index
on tên -quan-hệ(tên-thuộc-tính );
 Xoá index:
drop index tên-index on tên-quan-hệ;
 Liệt kê các index:
(MySQL) show indexes from tên-quan-hệ;
(SQL Server) exec sp_helpindex tên-quan-hệ;
 Sau khi index được tạo, việc sử dụng các 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.
21
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Ví dụ (MySQL)
mysql> select count(*) from thivien_poem where AUTHOR=20;
+ +
| count(*) |
+ +
| 158 |
+ +
1 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;
+ +

| count(*) |
+ +
| 158 |
+ +
1 row in set (0.00 sec)

mysql> _
22
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội
Bà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)
23
EE4509, EE4253, EE6133 – HK1 2013/2014
TS. Đào Trung Kiên – ĐH Bách khoa Hà Nội

×