sql >> データベース >  >> RDS >> Mysql

外部キーは主キーとして機能できますか?

    もちろん。これは、スーパータイピング として知られる一般的な手法です。 テーブル。あなたの例のように、1つのテーブルにはエンティティのスーパーセットが含まれ、一般的なエンティティを説明する共通の属性があり、他のテーブルには特定の属性を持つエンティティのサブセットが含まれているという考え方です。オブジェクト指向設計の単純なクラス階層と同じです。

    2番目の質問では、1つのテーブルに2つの列を含めることができます。これらの列は、同じ他のテーブルへの個別の外部キーです。データベースがクエリを作成するとき、他のテーブルを2回結合します。 SQLクエリで説明するために(MySQL構文についてはよくわかりませんが、長い間使用していなかったため、これは具体的にはMS SQL構文です)、データを選択するときにそのテーブルに2つの異なるエイリアスを指定します。このようなもの:

    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と組み合わせます テーブルを2回、各列に1回ずつ配置し、それらを区別するために組み合わせるときに2つの異なるエイリアスを割り当てます。



    1. DLL「kernel32.dll」で「InterlockedIncrement」という名前のエントリポイントが見つかりません-[メール保護]64ビット

    2. #temptableと##TempTableの違いは?

    3. T-SQLのバグ、落とし穴、およびベストプラクティス–ピボットとピボット解除

    4. カンマ区切りの値を持つ単一のMySQLフィールド