Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: [SQL 7.3] Chuẩn hóa bảng báo cáo phi chuẩn về 3NF

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 7: Mối quan hệ giữa bảng & Normal Form — khóa SQL

    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.

    • Định dạng đầu vào:

      Bảng Trades, Orders, Accounts, Customers, Securities có sẵn.

    • Định dạng đầu ra:

      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:

    30 giao dịch từ 2026-09-21 trở đi, thuộc 19 khách hàng và 11 mã: nhờ chuẩn hóa mỗi khách và mỗi mã chỉ lưu một lần.

    Chủ đề

    📊 SQLSQLSQL: Buổi 7 – Quan hệ bảng & Normal FormTất cả môn học

    Đang tải editor...