0

次のように、ログインとユーザーの 2 つのテーブルがある場合:

Logins
 LoginIdNo
 UserIdNo
 HashedPassword 

Users
 UserIdNo
 LoginIdNo
 Username

各ログインには「ユーザーがいます」、各ユーザーには「ログインがあります」が、どれが「所属」しますか?

それは単なる判断の呼び出しですか、それとも外部キーをどこに置くべきかを決定するための明確な公式はありますか?

4

2 に答える 2

2

これは 1 対 1 の関係です。これらの場合、外部キーを置く場所はおそらくオプションによって決定されます。

これを 2 つのエンティティに分割した特定の理由はありますか? 私は 1 対 1 のマッピングの大ファンではありません。特に JPA のような ORM では、実装が面倒です (主キーをあるキーから別のキーへの外部キーとして使用する場合)。

あなたのシステムでは、ログインとユーザーの違いは何ですか?

ユーザーがログインするたびに Login が発生する場合 (つまり、ユーザー アクティビティの監査証跡)、User と Login の間に 1 対多の関係があり、Login は UserID 外部キーを使用する必要があります。

しかし、この場合、ユーザー名が 1 つのテーブルにあり、パスワードが別のテーブルにあり、2 つの間に 1 対 1 の関係がある場合、それらが分離されている理由を尋ねる必要があります。

于 2009-05-24T01:06:30.380 に答える
1

ログインが複数のユーザーに関連付けられることは決してないため (逆もまた同様)、関係を定義する方法 (したがって、外部キーを配置する場所) は任意に決定されます。他の属性 (Firleds) を追加したり、ロールを使用したりしない限り、次のように単純に定義する方が簡単かもしれません。

Users 
    UserIdNo 
    Username
    HashedPassword
于 2009-05-24T01:05:55.497 に答える