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

テーブルの設計中に1対1、1対多、および多対多の関係を実装するにはどうすればよいですか?

    1対1: 参照されるテーブルへの外部キーを使用します:

    student: student_id, first_name, last_name, address_id
    address: address_id, address, city, zipcode, student_id # you can have a
                                                            # "link back" if you need
    

    また、外部キー列に一意性制約を設定する必要があります(addess.student_id )子テーブル(address)の複数の行を防ぐため )参照されたテーブルの同じ行に関連することから(student

    1対多 :「1つ」側にリンクしている関係の多くの側で外部キーを使用します:

    teachers: teacher_id, first_name, last_name # the "one" side
    classes:  class_id, class_name, teacher_id  # the "many" side
    

    多対多 :ジャンクションテーブルを使用する(例):

    student: student_id, first_name, last_name
    classes: class_id, name, teacher_id
    student_classes: class_id, student_id     # the junction table
    

    クエリの例:

     -- Getting all students for a class:
    
        SELECT s.student_id, last_name
          FROM student_classes sc 
    INNER JOIN students s ON s.student_id = sc.student_id
         WHERE sc.class_id = X
    
     -- Getting all classes for a student: 
    
        SELECT c.class_id, name
          FROM student_classes sc 
    INNER JOIN classes c ON c.class_id = sc.class_id
         WHERE sc.student_id = Y
    



    1. MSSQLレプリケーションの管理

    2. OracleのJSON_ARRAY()関数

    3. getReadableDatabase()のNullPointerException

    4. 認証プラグイン「caching_sha2_password」はサポートされていません