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.1] Nhận diện quan hệ 1-1 hay 1-n

    📖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

    Một khóa ngoài có thể tạo quan hệ 1-n (nhiều dòng con cùng trỏ về 1 dòng cha) hoặc 1-1 (mỗi dòng cha có tối đa 1 dòng con). Quy tắc nhận diện theo lược đồ: cột khóa ngoài đóng vai trò khóa duy nhất của bảng con - tức chính nó (một mình) là PRIMARY KEY hoặc UNIQUE -> quan hệ 1-1; ngược lại là 1-n. Cột chỉ là một phần của khóa chính nhiều cột (như Portfolio.account_id) vẫn là 1-n.

    Cho mọi khóa ngoài một cột của CSDL hiện tại, in: bảng con, cột khóa ngoài, bảng cha và loại quan hệ ('1-1' hoặc '1-n'). Sắp theo LOWER(bảng con), LOWER(cột). Gợi ý: xác định trước tập các cột "đứng một mình" trong PK/UNIQUE (gom nhóm theo ràng buộc, HAVING COUNT(*) = 1), rồi LEFT JOIN vào danh sách khóa ngoài.

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

      INFORMATION_SCHEMA.TABLE_CONSTRAINTS, KEY_COLUMN_USAGE, REFERENTIAL_CONSTRAINTS (SQL Server).

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

      child_table, child_column, parent_table, relationship ('1-1' | '1-n'); sắp theo LOWER(child_table), LOWER(child_column).

    Ví dụ:

    Đầu vào:

    Đầu ra:

    Accounts	customer_id	Customers	1-n
    Customers	referrer_id	Customers	1-n
    CustomerStats	customer_id	Customers	1-1
    MarketPrices	symbol	Securities	1-n
    Orders	account_id	Accounts	1-n
    Orders	symbol	Securities	1-n
    Portfolio	account_id	Accounts	1-n
    Portfolio	symbol	Securities	1-n
    Trades	order_id	Orders	1-n
    Trades	symbol	Securities	1-n

    Giải thích:

    Dữ liệu gốc: CustomerStats.customer_id vừa là PK vừa là FK nên là 1-1 với Customers; các FK còn lại đều 1-n (Portfolio.account_id chỉ là một phần của PK).

    Chủ đề

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

    Đang tải editor...