次のように、ログインとユーザーの 2 つのテーブルがある場合:
Logins
LoginIdNo
UserIdNo
HashedPassword
Users
UserIdNo
LoginIdNo
Username
各ログインには「ユーザーがいます」、各ユーザーには「ログインがあります」が、どれが「所属」しますか?
それは単なる判断の呼び出しですか、それとも外部キーをどこに置くべきかを決定するための明確な公式はありますか?
次のように、ログインとユーザーの 2 つのテーブルがある場合:
Logins
LoginIdNo
UserIdNo
HashedPassword
Users
UserIdNo
LoginIdNo
Username
各ログインには「ユーザーがいます」、各ユーザーには「ログインがあります」が、どれが「所属」しますか?
それは単なる判断の呼び出しですか、それとも外部キーをどこに置くべきかを決定するための明確な公式はありますか?
これは 1 対 1 の関係です。これらの場合、外部キーを置く場所はおそらくオプションによって決定されます。
これを 2 つのエンティティに分割した特定の理由はありますか? 私は 1 対 1 のマッピングの大ファンではありません。特に JPA のような ORM では、実装が面倒です (主キーをあるキーから別のキーへの外部キーとして使用する場合)。
あなたのシステムでは、ログインとユーザーの違いは何ですか?
ユーザーがログインするたびに Login が発生する場合 (つまり、ユーザー アクティビティの監査証跡)、User と Login の間に 1 対多の関係があり、Login は UserID 外部キーを使用する必要があります。
しかし、この場合、ユーザー名が 1 つのテーブルにあり、パスワードが別のテーブルにあり、2 つの間に 1 対 1 の関係がある場合、それらが分離されている理由を尋ねる必要があります。
ログインが複数のユーザーに関連付けられることは決してないため (逆もまた同様)、関係を定義する方法 (したがって、外部キーを配置する場所) は任意に決定されます。他の属性 (Firleds) を追加したり、ロールを使用したりしない限り、次のように単純に定義する方が簡単かもしれません。
Users
UserIdNo
Username
HashedPassword