Разбира се. Това е често срещана техника, известна като супертипиране маси. Както във вашия пример, идеята е, че една таблица съдържа надмножество от обекти и има общи атрибути, описващи общ обект, а други таблици съдържат подмножества от тези обекти със специфични атрибути. Не е различно от обикновена йерархия на класове в обектно-ориентирания дизайн.
За втория ви въпрос една таблица може да има две колони, които са отделно външни ключове към същата друга таблица. Когато базата данни изгради заявката, тя се присъединява към тази друга таблица два пъти. За да илюстрирате в 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
таблицата два пъти, веднъж на всяка колона, и присвоява два различни псевдонима, когато ги комбинира, за да ги разграничи.