電子メールのフォルダ構造を表す SQL スキーマを設計しようとしていますが、いくつかの問題があり、階層的なフォルダ/電子メール構造を表す SQL スキーマに関するスタック オーバーフローに関する質問は他にもたくさんありますが、どれもありません。私が持っているすべての質問に答えているようです。
私の要件は次のとおりです。
- 各ユーザーにはメールボックスがあり、このメールボックスには多数の必須フォルダ (受信ボックスや送信済みなど) が含まれています。
- 各メールボックスには、ユーザーがメールを整理するために作成できるカスタム フォルダーが含まれている場合もあります。
- フォルダーは階層に表示できますが、強制フォルダーはルート レベルにある必要があります。
データベース レベルで強制したいことがたくさんありますが、それらすべてに対応することはできませんでした。
- 必須フォルダーは、メールボックスごとに 1 回だけ表示される場合があります。同じメールボックスに別の強制フォルダーを挿入することは不可能であるべきです。
- 階層に関しては、親フォルダーと子フォルダーはすべて同じメールボックスに属している必要があります。
これまでのところ、すべてのメールボックスのすべてのフォルダーを含む "Folders" テーブルと、必須テーブルの定義を含む "SystemFolders" テーブルの 2 つのテーブルがあります。
CREATE TABLE Folders(
ID Int
, Mailbox_ID Int
, Name varchar(25)
, Parent_ID Int
, SystemFolder_ID Int
, PRIMARY KEY (ID)
);
CREATE TABLE SystemFolders(
ID Int
, Name varchar(25)
, PRIMARY KEY (ID)
);
私の問題は、制約を追加する方法です。
- 階層的な整合性を強制するにはどうすればよいですか (親フォルダーまたは子フォルダーはすべて同じメールボックスに属している必要があります)?**
- 1 つのメールボックスのコンテキスト内に各タイプのシステム フォルダーが 1 つだけ存在できるようにするにはどうすればよいですか?**
理想的には、ソリューションは、特定の SQL のフレーバーに固有のものではありません。どんな助けでも感謝します。