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 LINEITE[r]
(1)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
Nội dung
Thiết kế sở liệu
Dạng chuẩn chuẩn hóa
Vấn đề hiệu năng
Các giải pháp, kỹ thuật (Thiết kế bảng)
(2)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| = bytes, |supplier_address| = 50 bytes
3
Nhận xét
Không gian lưu trữ
Cập nhật bảo trì liệu
(3)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 tốt hơn?
5
Nhận xét
Kích thước index account_id (khóa chính)
(4)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 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 quan hệ tốt khi:
(5)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 tốt hơn?
Phi chuẩn hóa tốt trường hợp đọc nhiều, ghiít (ít cập nhật 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,);
(6)lineitemdenormalized ( 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
(7)Exercises