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

複数の値を持つ外部キーの挿入

    残念ながら、あなたは昔からの質問をしたばかりです。

    もちろん、答えはあなたがしないということです。 2つの列があります。従業員の例を拡張すると、従業員テーブルは次のようになります。

    create table employees (
       id number
     , name varchar2(4000)
     , skill_1 number
     , skill_2 number
     , constraint employee_pk primary key (id)
     , constraint employee_skill_1_fs 
          foreign key ( skill_1 ) 
       references skills(skillid)
     , constraint employee_skill_2_fs 
          foreign key ( skill_2 ) 
       references skills(skillid) 
       );
    

    ご覧のとおり、これは特にきれいなことではなく、正規化を破ります。従業員(またはもちろん従業員が望んでいる)に3つのスキルを持たせたい場合はどうなりますか?または10?

    3番目のテーブルを作成し、すべての結合を単一の主キーと外部キーで行う方がおそらく良いでしょう。だからあなたは

    employees ( employee_id, ..., pk employee_id);
    employee_skills ( employee_id, skill_id, ..., pk employee_id, skill_id, fk skill_id );
    skills ( skill_id, description, ..., pk skill_id );
    


    1. PostgreSQLで配列を比較する方法

    2. Laravel5の移行でテーブルを更新してデータを追加する

    3. MariaDBでのABS()のしくみ

    4. PHPでMYSQLデータベースを転置する方法