私はDropboxのデータベーススキーマがどのように設計されるのだろうかと思いましたか?私は3つのテーブルについて考えています:ユーザー、ファイル、次の制約のフォルダ。データベーススキーマ:ユーザー、ファイル、フォルダ間の関係を設計する方法は?
制約:
- ユーザーが複数のファイルやフォルダを含めることができます。
- 各ファイルは複数のユーザー間で共有できます。
- ファイルは1人のユーザー用にフォルダに編成できますが、別のユーザー用には構成できません(ファイルが共有されている場合)。
- 各フォルダには、複数のファイルと他のフォルダを含めることができます。
どのように関係を作成しますか?
注意をこのスキーマでは、すべてのユーザーがフォルダの独自の個別のビューを持っていること:
であるかどうか、あなたは何をしようとしたのですか? –
1)user_id、file_id、folder_idを含む結合表をfkとして作成します。 file_idとfolder_idはnullでもかまいません。こうすることで、ユーザーのすべてのファイルとそのフォルダに含まれているかどうかを調べることができます。また、(ユーザーの)特定のフォルダーのすべてのファイルを見つけることができます。 – Agent47DarkSoul
2)folderはそれ自身と1対多の関係を持っているので、folder_idカラムを持つフォルダテーブルを作成することができます。これは親フォルダのpkを表すfkになります。 – Agent47DarkSoul