Mysql
 sql >> база данни >  >> RDS >> Mysql

Може ли външният ключ да действа като първичен ключ?

Разбира се. Това е често срещана техника, известна като супертипиране маси. Както във вашия пример, идеята е, че една таблица съдържа надмножество от обекти и има общи атрибути, описващи общ обект, а други таблици съдържат подмножества от тези обекти със специфични атрибути. Не е различно от обикновена йерархия на класове в обектно-ориентирания дизайн.

За втория ви въпрос една таблица може да има две колони, които са отделно външни ключове към същата друга таблица. Когато базата данни изгради заявката, тя се присъединява към тази друга таблица два пъти. За да илюстрирате в SQL заявка (не съм сигурен за синтаксиса на MySQL, не съм го използвал от дълго време, така че това е специално синтаксис на MS SQL), бихте дали на тази таблица два различни псевдонима, когато избирате данни. Нещо като това:

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

Това по същество отнема student_rec таблица и я комбинира с user_accounts таблицата два пъти, веднъж на всяка колона, и присвоява два различни псевдонима, когато ги комбинира, за да ги разграничи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WampServer - mysqld.exe не може да стартира, защото липсва MSVCR120.dll

  2. Основни команди за администриране на база данни на MySQL – част I

  3. Изграждане на динамична заявка за PDO

  4. Оптимален брой връзки в пула за връзки

  5. Изберете записи от СЕГА() -1 ден