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