私はいくつかの入力を希望します。アカウントの電子メールアクティベーションの設計(Hibernateを念頭に置いて)
- アカウントを登録するには、各ユーザーに電子メールアドレスが必要です。ユーザーアカウントを登録するときは、アカウントを有効にするために必要なアクティベーションコードを含むアクティベーションEメールを送信する必要があります。
- 各ユーザーアカウントは、正確に1つの会社に存在する1つのオフィスにのみ存在します。
- 会社の最初の登録ユーザーは、会社と1つのオフィスを作成します。残りの企業ユーザは、最初のユーザによって招待されます。
- 企業は相互にやりとりすることができますが、会社の最初のユーザーがアクティブ化されている(登録後にそれぞれのアクティベーションリンクをクリックした)場合のみです。ここ
解決することができる方法の小UMLダイアグラムである:上記の図で
alt text http://i43.tinypic.com/2dj5bhh.png
いくつかの詳細が省略されています。この図はクラスとフィールドのみを示しています。フィールドになると、概念的にどの情報を格納するかを示すために使用されますが、その範囲を無視してください。
いくつかの考えや質問:
- ユーザーとNotActivatedUserはほとんど同じです。彼らは1つのクラスでなければならないのでしょうか?それらが分離されている場合、どのような形のHibernate継承永続性を使用しますか?
- アカウントが特定の時間の後にアクティブ化されない場合は、アカウントを削除する必要があります。それが最初のユーザーであった場合は、ユーザーと会社も作成されています。これらの両方を削除する必要があります。 NotActivatedOfficeとNotActivatedCompanyも必要ですか? (データベース内の完全な分離のため)
このようなソリューションをどのように設計しますか?アクティブでないアクティブなエンティティをデータベース内で別々のものにすることは重要だと思いますか?なぜ、なぜそうではないのですか?
オフィスオーナーのフラグは不要です。特定のユーザーによって作成されたオフィスを見つけるには、本当に簡単なクエリでなければなりません。 –
オフィスからユーザーへの後方参照がある場合のみ。これは別のオプションになります。 –