0

私のデータベースには3つのテーブルがあります(もっとありますが、同じ場合、ユーザーは会社でも独身でもかまいません)。

  • Users主キーがありますid_user;
  • Company主キーid_companyと外部キーがありますusers_id_user;
  • job_offers主キーid_job_offersと2つの外部キーがあります:company_id_companycompany_users_id_user

私の質問は次のとおりです。

  1. 主キーは意味がありjob_offersますか?理由はないと思います。
  2. job_offers2つの外部キーがあります。1つはに関連しcompany、もう1つはに関連していusersます。これに問題はありますか?同じタスクを実行する別の方法はありますか?

EER

4

4 に答える 4

2

すべてのテーブルに主キーが必要です。主キーを代理キーにするか自然キーにするかを尋ねているようです。

他のテーブルにも同じ質問をするかもしれません。たとえば、 usersテーブルのemail列が必須で一意であるとすると、(自然な)主キーとして使用できます。

この質問はかなり激しく議論されており、両方のアプローチが機能します(混合アプローチも機能します)。このテーマについて一般的に読みたい場合は、「ナチュラルvs.サロゲートキー」をグーグル検索してください。

于 2011-05-06T02:33:13.523 に答える
1
  1. 私はあなたが正しいと思います。idそこに別のフィールドは必要ありません。2つの外部キーは、一緒になってテーブルの主キーを構成する必要があります。
  2. 私には元気そうです。
于 2011-05-06T01:23:32.497 に答える
1

1)job_offersの主キーに意味がありますか?理由はないと思います

はい、あります-すべてのテーブルに主キーが必要です。これは「正規化」と呼ばれます。

あなたの選択はあまり良くないかもしれません。2つの外部キーは、id列ではなく、主キーである必要があります。

2)求人には2つの外部キーがあります。1つは会社に関連し、もう1つはユーザーに関連しています。問題はありますか?これを行うための別の方法(最良の方法)が存在しますか?

いいえ、それは多対多の関係が行われる数です。

于 2011-05-06T01:25:58.553 に答える
1

主キーはjob_offersで意味がありますか?理由はないと思います。

はい 。すべてのテーブルに独自のPKが必要であることに同意します。 すべてのテーブルに主キーが必要ですか?

私はもっ​​と持っていますが、ケースが等しい場合、ユーザーは企業または独身者である可能性があります

job_offersには2つの外部キーがあり、1つは会社に関連し、もう1つはユーザーに関連しています。これに問題はありますか?同じタスクを実行する別の方法はありますか?

システムには、通常ユーザー(個人)と会社ユーザーの2種類のユーザーがあります。job_offersは、会社からの求人を保存するテーブルです。会社のユーザーがジョブを投稿する場合は、job_offersテーブルにレコードが挿入されます。次に、通常のユーザーがこの求人を取得すると、job_offers.company_user_id_userがこの通常のユーザーのユーザーIDに割り当てられます。

しかし、ERダイアグラムから、Company.users_id_userはPKであり、これをnullにすることはできません。このPKはjob_offers.company_users_id_user、でFKとして使用されます。したがってjob_offers.company_users_id_user、nullにすることもできません。

その結果、会社のユーザーが求人を投稿するだけで、通常のユーザーがこの求人を取得する前、または最終的に誰もこの求人を取得しないという状況に対処できません。この場合、 nullに設定する必要があります。これは、 ' job_offers.company_users_id_usersnotに違反します。job_offers.company_users_id_usernull制約。

この設計を使用して同じタスクを実行します。

Users
=================
id_user (PK)
email 
activation
password

Company
=================
id_company (PK)
activities 
foundation 
user_id (FK to Users)
description

job_offer
=================
id_job_offer (PK)
id_company (FK to Company)
description_offer 
tags

user_offer
=================
id (PK)
user_id (FK to Users)
job_offer_id (FK to job_offer)
于 2011-05-06T02:35:51.247 に答える