2016-04-25 25 views
-1

UserProfileを作成するDB ERDを試しています。ユーザーはフォロワーと、ユーザーがフォローしているプロファイルを見ることができます。1つのテーブルから2つの外部キー

Database ERD

問題がある:

両方のセクションのいずれかの「フォロワー」または「後」のユーザーはプロフィールではありません

更新: 次のアプローチは大丈夫か、上図のですか?

SQL> Create table users(
    2 user_id number(5) primary key, 
    3 reg_date date, 
    4 name varchar2(50), 
    5 password varchar2(50)); 

Table created. 

SQL> Create table Follow(
    2 follow_id number(5), 
    3 following number(5) constraint User_fk references users(user_id), 
    4 follower number(5) constraint User_fk1 references users(user_id)); 

Table created. 

助言してください。予期して感謝します

+2

"参照...外部キー"とはどういう意味ですか?主キーのみが参照され、外部キーを参照しません。 1つのテーブルに2つの外部キーを持つことができるかどうかを尋ねる場合、それぞれが2つの異なるテーブルのプライマリキーを参照している場合、答えは「はい」です。あなたの取り決めでは、テーブルPROFILEを参照するためにテーブルFOLLOWが必要なのはなぜですか? – mathguy

+1

一部の表のFKは、一部の表でPK/UNIQUEを参照しています。どのテーブルのどの列がどのテーブルのどの列を参照しているかを各FKに対して正確に明記してください。あなたの文章は明確ではありません。第1パラグラフとポイント1を表現するために、より多くの言葉を使用し、ポイント2の詳細を与えてください。 – philipxy

+0

@mathguy私の質問を更新しました。どのアプローチが良いかアドバイスしてください。 – LifeSaver

答えて

1
  1. プロファイルは、Userから分離されたエンティティ/テーブルか、またはマージする必要がありますか?

これは要件によって異なります。ユーザーが1つのプロファイル(たとえば、このサイトのサイトなど)を1つだけ持つ場合、プロファイルは別のエンティティである必要はありません。次に、次の関係がユーザーまたはプロフィールを指すかどうかの疑問は消えます。しかし、ユーザーが複数のプロフィール(あなたのFK type_idから推測されるかもしれない)を持つことができれば、彼のスポーツのためのものと彼の音楽的利益のためのものと言うと、2つのエンティティとテーブルが必要です。

  1. フォロワーはユーザーを指すか、プロフィールにする必要がありますか?

ユーザーエンティティが1つの場合、followerfollowingは、User以外を指している必要があります。これがあなたのSQLソリューションです。

別のプロファイルエンティティの場合は、要件に応じて変更します。フォロワーは全体としてユーザーをフォローするか、ユーザーの特定のプロフィールアングルに興味を持っているだけですか? (ジャックに従うか、ジャックに従ってスポーツマンとしてではなく、ミュージシャンではありません)。最初のケースでは、followingはユーザーを指します。

+0

ユーザーは、 。ここで、「フォロワー」とは、プロファイルフォロワーを意味します。私はこのプロファイルエンティティを分離して、ユーザーモジュールとは全く別のモジュールにしました – LifeSaver

+0

まだコンセプトが明確ではありません – LifeSaver

関連する問題