これを行う通常の方法は、サブジェクト用に別のテーブルを用意し、そのテーブルには、所有するユーザー レコードへの外部キーであるユーザー ID を設定することです。
そうすれば、カンマ区切りの文字列を編集する必要がなくなります。また、User テーブルに存在しない UserID を持つ Subjects レコードを挿入できないようにする外部キー制約を (DB ができる限り) 定義することもできます。
ユーザーのサブジェクトをロードするには、ユーザーの ID を使用してサブジェクト テーブルからすべてのレコードを取得するだけです。
User を多くの Subject にリンクし、Subject を多数の Users にリンクできる多対多の関係がより適切な場合は、各 UserID と SubjectID のペアを含む UserSubjectJoin などの結合テーブルを使用します。繰り返しになりますが、これには、ID がユーザー テーブルとサブジェクト テーブルに存在する必要があることを保証するための制約が含まれる場合があります。
このシナリオでは、UserSubjectJoin テーブルを Subjects テーブルに結合して、指定した UserID のすべての Subjects レコードを取得する必要があります。
質問に完全に答えるには、Subjects テーブルに行を追加/削除するだけで関連付けが自動的に更新されるため、Users テーブルに文字列の列を維持する必要がないため、これはより効率的です。
また、実際に多対多の関係がある場合、最初の設計では、Subjects テーブルに UserID の列も必要になるため、メンテナンスが 2 倍になり、間違いを犯すリスクがあります。