0

SQLServerデータベースの論理設計に問題があります。

それでも、どの関係が1対多でなければならないのか、どの関係が多対多でなければならないのかを区別することはできません。誰かが私に、両方のエンティティテーブルが独立している場合、それらは多対多の関係を持つことができ、そうでない場合は1対多になると私に言いました。

しかし、現在、従業員の個人情報を収集するプロジェクトに取り組んでいます。その一部には、従業JobStatus員の現在の仕事用のテーブルがあります。Personこのテーブルは、多対多の(テーブル)との関係があります。もちろん、それらの間にジャンクションテーブルがあります。

このような関係を築いたのは、1つの職位の名前が複数の人に割り当てられ、パフォーマンスが異なるためです。

例えば ​​:

Person A ----->Operator
Person B------>Operator and so on...

そして反対側では、人が2つの職位を持っている場合があります。つまり、彼はディレクターと教師のどちらかです。

例えば ​​:

Person C ------>Director & Teacher

それで、この曖昧な論理的意味で私を導いていただけませんか?

4

2 に答える 2

2

説明したプロジェクトに基づいて、employeeTable、jobType、jobAssignmentの3つのテーブルを作成します。各従業員に一意のID(主キー)を与え、各ジョブに一意のID(主キー)を与え、jobAssignmentテーブルをemployeeTableとjobAssignmentテーブルをリンクする接着剤にします。jobAssignmentテーブルには、employeeIDとjobIDのインデックスがあります。

jobAssignment
---------------
employeeID (indexed)
jobID (indexed)


employeeTable
---------------
employeeID (primary key)
employeeName


jobType
---------------
jobID (primary key)
jobName
jobDescription

これにより、各従業員に割り当てられている職務記述書の数に関係なく、jobAssignmentテーブルで従業員とそれぞれの職務を追跡できます。

于 2012-11-11T06:59:12.927 に答える
1

簡単に言えば、一方のテーブルが他方のテーブルのPKを外部キーとして持つことができない場合、多対多を認識します。

学生とコースのテーブルを取る

  • 学生は多くのコースを受講できます
  • コースは複数の学生に属することができます

もちろんFK(CourseID)を学生に適用すると、学生は1つのコースに制限されます

学生のFK(StudentID)をコースに配置すると、コースは1人の学生に制限されます

これを解決するために、3番目のテーブルStudentCourseにはStudentIDとCourseIDがあり、どちらのテーブルも独立しています。

それは多対多です。

1対多の場合、これは、一方のテーブルのIDをもう一方のテーブルのFKとして簡単に配置できる場合に発生します。

あなたの場合、2人の従業員が同時にオペレーターになることができ、従業員がオペレーターと教師になることができます-その設計は多対多です。あなたが正しいです

于 2012-11-11T06:56:31.097 に答える