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.
INFORMATION_SCHEMA.TABLE_CONSTRAINTS, KEY_COLUMN_USAGE, REFERENTIAL_CONSTRAINTS (SQL Server).
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:
Đang tải editor...