2016-11-18 13 views
0

私は2つのテーブルがあります。Student_Class(StudentID, ClassID) table.多対多のテーブルから参照主キーに

many-to-many関係にStudentClassを私はまた、テーブルPayment(StudentID, ClassID, Fee...)Request(StudentID, ClassID, Request,...).

を必要とする私は、上記などのようなStudent_Classテーブルを作成する必要があります次のようになります。(StudentClassID,StudentID, ClassID)PaymentおよびRequestの2つのPKを新しいPKで削除します:StudentClassID?どちらが優れていて、なぜですか?

答えて

2

この回答では、技術的なデータベース側(パフォーマンス、ストレージ、整合性など)とビジネス上の問題の2つが考えられます。

Student (StudentID, ...) 
Class (ClassID, ...) 

をそして他のテーブルには2つのオプションは現在あります:

それでは、修正再表示するには、次のように与えられている

Student_Class (StudentID, ClassID, ...) 
Payment (StudentID, ClassID, Fee, ...) 
Request (StudentID, ClassID, Request, ...) 

Bは

Student_Class (Student_ClassID, StudentID, ClassID, ...) 
Payment (Student_ClassID, Fee, ...) 
Request (Student_ClassID, Request, ...) 

2番目のスキームでは、ストレージ(+)の使用量が少なくなり、クエリ( - )のパフォーマンスが多少低下し、より複雑になります( - )。

オプションBでは、クラス( - )に関連付けられていない学生の支払いやリクエストを追跡することが必要な場合は、手間がかかります。

ほとんどの場合、私はおそらくオプションAをお勧めします。

+0

ありがとうございます@mendosi :)。正確に私は男が必要なもの:) –