問題
Userオブジェクトとオブジェクトを持つアプリケーションがありStudentます。一部のユーザーは学生です。すべての生徒がユーザーです。データベース (django-ORM ベース) では、これはStudentテーブルへの外部キーを持つテーブルとして表されUserます。
REST API と、この API をモデル化する iOS アプリのオブジェクト階層を作成しようとしています。これをモデル化する方法を決定するのに問題があります。
現在のソリューション
私が思いついた最高のものは次のとおりです。iOSにモデルUserを持ち、iOSにStudentモデルを継承しUser、それをより多くのプロパティで拡張します。次に、サーバーから JSON 応答を受信し、辞書に応じてa またはモデルを作成するメソッドを用意します。UserStudent
最後に、サーバーは常に最も具体的なタイプを提供する必要があります。つまり、サーバーにログインすると、サーバーは私が学生か通常のユーザーかを判断し、適切な辞書を返します。
これが最善の方法ですか?
これは少し複雑に聞こえます。しかし、データベースのレイアウト方法を変更するなど、モデル化について私が考えた他の方法では、データベースがすべての制約を認識していない設計が得られます。たとえば、Studentオブジェクトは他のオブジェクトを所有できます (例: homework_paper)。Userオブジェクトではなく、オブジェクトへの外部キーでこれをモデル化できます。これは、単にユーザーの拡張であるStudentと言えます。しかし、データベースは、 a が学生によって所有されなければStudentならないという事実を強制しません。homework_paper
私が見逃しているこの問題を解決するより良い方法はありますか?