1

簡単な質問です。Visual Studio 2010 エンティティ フレームワークと MySQL を学習するためだけに、単純なフレンド データベース テスト アプリケーションを作成しようとしています。問題は、これが正しいかどうかわからないということです。

これが私の現在のモデルの画像です。

問題は、なぜ 2 つのフレンドのナビゲーション プロパティと 2 つのアカウント ナビゲーション プロパティがあるのか​​ということです。2 人の友人のアカウントに到達できるように、2 つのアカウント ナビゲーション プロパティを持つ唯一のエンティティは友人エンティティではないかと思いました。

これが私のテーブルレイアウトです:

  • アカウント:
    1. idaccounts - 主キー、null ではない
    2. nick - ユーザーのニックネーム
  • 友達:
    1. idfriends - 主キー、null ではない
    2. friend_one - 最初のアカウント番号
    3. friend_two - 2 番目のフレンド番号
    4. status - 友情のステータスが含まれます (1. 保留中、2. 承認済み、3. 拒否済み)

また、友人テーブル内にアカウント テーブルへの 2 つの外部キーを作成しました。1 つは friend_one という名前で、friend テーブルの friend_one 列を使用して accounts テーブルを参照します。もう 1 つは friend_two という名前で、friend_two 列を使用して accounts テーブルを参照します。

これは通常の方法ですか、それとももっとまともな方法がありますか?

4

2 に答える 2

0

ごく普通だと思います。アカウントに複数の友達がいる場合は、Friendテーブルにもう 1 行追加するだけです。

ただし、データベースの正規化についてまだ読んでいない場合は、何かを読むことを強くお勧めします:) 多分ウィキペディアから始めてください

于 2012-08-23T02:21:14.867 に答える
-1

答えは.. 場合によります。通常、1 つのテーブルでフィールドを繰り返すことはありません (つまり、FriendOne、FriendTwo など)。なぜなら、あなたはフレンドリーな人で(Wiggels氏はフレンドリーな名前のように聞こえます)、2人以上の友達がいるからです。じゃあ何?

以下は私がそれを行う方法です。 AccountおよびFriendAccountは、データベース内の同じ Account テーブルへのエイリアスです。

アカウント / フレンド スキーマを正規化する

ただし、あなたの場合、友達が多​​くても2人しかいないことが確実な場合、これは技術的には機能します. しかし、繰り返しになりますが、縮尺が合っていないため、デザインが悪い可能性があります。

于 2012-08-23T02:12:40.227 に答える