Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Khóa ngoại có thể hoạt động như một khóa chính không?

Tất nhiên rồi. Đây là một kỹ thuật phổ biến được gọi là supertyping những cái bàn. Như trong ví dụ của bạn, ý tưởng là một bảng chứa tập hợp siêu thực thể và có các thuộc tính chung mô tả một thực thể chung và các bảng khác chứa tập hợp con của các thực thể đó với các thuộc tính cụ thể. Nó không giống như một hệ thống phân cấp lớp đơn giản trong thiết kế hướng đối tượng.

Đối với câu hỏi thứ hai của bạn, một bảng có thể có hai cột là các khóa ngoại riêng biệt cho cùng một bảng khác. Khi cơ sở dữ liệu xây dựng truy vấn, nó sẽ tham gia bảng khác đó hai lần. Để minh họa trong một câu truy vấn SQL (không chắc về cú pháp MySQL, tôi đã lâu không sử dụng nó, vì vậy đây là cú pháp MS SQL cụ thể), bạn sẽ cung cấp cho bảng đó hai bí danh riêng biệt khi chọn dữ liệu. Một cái gì đó như thế này:

SELECT
    student_accounts.name AS student_name,
    counselor_accounts.name AS counselor_name
FROM
    student_rec
    INNER JOIN user_accounts AS student_accounts
      ON student_rec.student_number = student_accounts.user_id
    INNER JOIN user_accounts AS counselor_accounts
      ON student_rec.guidance_counselor_id = counselor_accounts.user_id

Điều này về cơ bản lấy student_rec và kết hợp nó với user_accounts bảng hai lần, một lần trên mỗi cột và chỉ định hai bí danh khác nhau khi kết hợp chúng để phân biệt chúng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel Cột JSON truy vấn hùng hồn với Where In?

  2. Truy vấn SQL để lấy Tổng của tất cả các giá trị cột trong hàng cuối cùng của tập kết quả cùng với tổng của hàng (nhóm theo)

  3. Tìm nạp dữ liệu từ cơ sở dữ liệu MySQL bằng PHP, Hiển thị nó dưới dạng biểu mẫu để chỉnh sửa

  4. Cách tìm nạp các giá trị thả xuống từ cơ sở dữ liệu và hiển thị trong jsp

  5. Tên có phải là một từ dành riêng trong MySQL không?