実現したいこと
以下を満たすような適切なテーブル定義をしたいと思っています。
- RDBMS(PostgreSQL)を使いたい
- グループテーブルが複数のファイルを操作する権限を持つ
- グループが持ちたい操作権限は、読み取りと編集の2つ
考えたこと
まず、groupsテーブルの中に、複数の読み取り可能なファイルID(カラム名:can_read_file_ids)と複数の編集(書き込み)可能なファイルID(カラム名:can_edit_file_ids)を保持するための2つのカラムを用意しようとしました。
しかし、1つのカラムに複数の値を持たせてはいけない(多対多の関係)と思い、中間テーブルを2つずつ、ファイルテーブルを1つ用意することにしました。
案1 読み取り可能、編集可能で中間テーブルを作成
そのあと、中間テーブルを1つにし、新しくpermissionsテーブルを作成してpermissions_idを中間テーブルに追加することを考えました
このようにすれば、現時点では読み取りと編集の権限さえ扱えればよいのですが、今後グループに持たせたい権限が増えた場合にも対応できるのではと思いました。
案2 中間テーブルを1つ、permissionsテーブルを作成
案1と同様mermaidを利用して以下のようなER図を考えました
知りたいこと
以下の2点を知りたいです。
- 中間テーブルに4列以上のカラムを設定することは可能ですか?(案2のER図では、中間テーブル(group_files)に外部キーカラムを3つ設定しています)
- どちらの案を採用すればよいのでしょうか?あるいは、もっと良いテーブル定義があるのでしょうか?
