Thiết kế và quản trị cơ sở dữ liệu<br />
<br />
Tinh chỉnh lược đồ CSDL<br />
<br />
Vũ Tuyết Trinh<br />
trinhvt-fit@mail.hut.edu.vn<br />
Bộ môn Hệ thống thông tin, Viện CNTT&TT<br />
Đại học Bách Khoa Hà Nội<br />
<br />
Nội dung<br />
<br />
<br />
Thiết kế cơ sở dữ liệu<br />
<br />
<br />
Dạng chuẩn và chuẩn hóa<br />
<br />
<br />
<br />
Vấn đề hiệu năng<br />
<br />
<br />
<br />
Các giải pháp, kỹ thuật (Thiết kế bảng)<br />
<br />
<br />
<br />
phân đoạn dọc (vertical partitioning)<br />
chuẩn hóa vs. phi chuẩn hóa<br />
<br />
2<br />
<br />
Vũ Tuyết Trinh<br />
<br />
1<br />
<br />
Thiết kế và quản trị cơ sở dữ liệu<br />
<br />
Lược đồ quan hệ - ví dụ<br />
<br />
<br />
Lược đồ 1<br />
<br />
<br />
<br />
<br />
Lược đồ 2<br />
<br />
<br />
<br />
<br />
<br />
Onorder1(supplier_ID, part_ID, quantity,<br />
supplier_address)<br />
Onorder2(supplier_ID, part_ID, quantity)<br />
Supplier(supplier_ID, supplier_address)<br />
<br />
Giả thiết<br />
<br />
<br />
<br />
100,000 order & 2000 supplier<br />
|Supplier_ID| = 8 bytes, |supplier_address| = 50 bytes<br />
<br />
3<br />
<br />
Nhận xét<br />
<br />
<br />
Không gian lưu trữ<br />
<br />
<br />
<br />
Cập nhật và bảo trì dữ liệu<br />
<br />
<br />
<br />
Tốc độ xử lý<br />
<br />
4<br />
<br />
Vũ Tuyết Trinh<br />
<br />
2<br />
<br />
Thiết kế và quản trị cơ sở dữ liệu<br />
<br />
Ví dụ (2)<br />
<br />
<br />
<br />
<br />
<br />
<br />
R (account_ID, balance, address)<br />
account_ID address<br />
account_ID balance<br />
Chuẩn hóa<br />
R (account_ID, balance, address)<br />
hoặc<br />
R1 (account_ID, address)<br />
R2 (account_ID, balance)<br />
Lược đồ CSDL nào tốt hơn?<br />
5<br />
<br />
Nhận xét<br />
<br />
<br />
Kích thước index trên account_id (khóa chính)<br />
<br />
<br />
<br />
Tần suất truy cập các trường dữ liệu<br />
<br />
6<br />
<br />
Vũ Tuyết Trinh<br />
<br />
3<br />
<br />
Thiết kế và quản trị cơ sở dữ liệu<br />
<br />
Ví dụ (3)<br />
<br />
<br />
<br />
<br />
Lược đồ CSDL<br />
R1 (account_ID, street_address, zip_code)<br />
R2 (account_ID, balance)<br />
hoặc<br />
R1 (account_ID, street_address)<br />
R2 (account_ID, zip_code)<br />
R3 (account_ID, balance)<br />
Lược đồ CSDL nào tốt hơn?<br />
<br />
7<br />
<br />
Lưu ý<br />
<br />
<br />
1 quan hệ chuẩn hóa XYZ thường tốt hơn<br />
2 quan hệ chuẩn hóa XY & XZ<br />
<br />
<br />
<br />
Tách 2 quan hệ là tốt hơn khi:<br />
<br />
<br />
<br />
Vũ Tuyết Trinh<br />
<br />
Người dùng thường truy nhập trên Y hoặc Z<br />
Kích thước dữ liệu của Y và Z lớn<br />
<br />
4<br />
<br />
Thiết kế và quản trị cơ sở dữ liệu<br />
<br />
Phi chuẩn hóa<br />
<br />
<br />
Lược đồ<br />
<br />
<br />
Onorder1(supplier_ID, part_ID, quantity,<br />
supplier_address)<br />
<br />
hoặc<br />
<br />
<br />
<br />
Onorder2(supplier_ID, part_ID, quantity)<br />
Supplier(supplier_ID, supplier_address)<br />
<br />
<br />
<br />
Lược đồ CSDL nào tốt hơn?<br />
<br />
<br />
<br />
Phi chuẩn hóa tốt trong trường hợp đọc nhiều,<br />
ghi ít (ít cập nhật dữ liêu)<br />
9<br />
<br />
Ví dụ<br />
lineitem ( L_ORDERKEY, L_PARTKEY , L_SUPPKEY,<br />
L_LINENUMBER, L_QUANTITY, L_EXTENDEDPRICE ,<br />
L_DISCOUNT, L_TAX , L_RETURNFLAG, L_LINESTATUS ,<br />
L_SHIPDATE, L_COMMITDATE,<br />
L_RECEIPTDATE, L_SHIPINSTRUCT ,<br />
L_SHIPMODE , L_COMMENT );<br />
region( R_REGIONKEY, R_NAME, R_COMMENT );<br />
nation( N_NATIONKEY, N_NAME, N_REGIONKEY, N_COMMENT,);<br />
supplier( S_SUPPKEY, S_NAME, S_ADDRESS, S_NATIONKEY,<br />
S_PHONE, S_ACCTBAL, S_COMMENT);<br />
<br />
Size: lineitem (600000 rows), supplier (500 rows)<br />
nation (25 rows), region (5 rows)<br />
<br />
Vũ Tuyết Trinh<br />
<br />
5<br />
<br />