Hệ thống báo cáo cũ lưu một bảng phẳng cho mỗi giao dịch: (trade_id, customer_code, customer_name, city, symbol, company_name, sector, quantity, price). Tên khách hàng, thành phố, tên công ty, ngành bị lặp lại ở mỗi dòng giao dịch (dư thừa, dễ sai lệch khi cập nhật). Hãy chuẩn hóa về 3NF bằng 3 bảng và nạp dữ liệu từ các bảng gốc, chỉ cho các giao dịch có trade_date >= '2026-09-21':
| Bảng | Cột | Ràng buộc |
|---|---|---|
RptCustomer |
customer_code (chuỗi 10), customer_name (chuỗi 120), city (chuỗi 30) |
PK customer_code; cả 3 cột NOT NULL |
RptSecurity |
symbol (chuỗi 10), company_name (chuỗi 150), sector (chuỗi 60, cho phép NULL) |
PK symbol |
RptTrade |
trade_id INT, customer_code, symbol, quantity INT, price DECIMAL(12,2) |
PK trade_id; FK customer_code -> RptCustomer; FK symbol -> RptSecurity; các cột NOT NULL |
Nạp: mỗi khách hàng/mã chỉ một dòng (dùng DISTINCT); RptTrade mỗi giao dịch một dòng, customer_code lấy qua chuỗi Trades -> Orders -> Accounts -> Customers. Nhớ tạo bảng cha trước bảng con. Hệ thống kiểm tra số dòng, tổng giá trị và các ràng buộc.
Bảng Trades, Orders, Accounts, Customers, Securities có sẵn.
Không có output từ bài nộp; hệ thống chấm theo cấu trúc và dữ liệu của ba bảng Rpt*.
Ví dụ:
Đầu vào:
Đầu ra:
a_customers 19.00
b_securities 11.00
c_trades 30.00
d_trade_value 1124275000.00
e_joined 30.00
f_pk_cols 3.00
g_fk_customer 1.00
h_fk_security 1.00
Giải thích:
Đang tải editor...