2

ある質問のインタビューを受けましたが、インタビュアーが私を混乱させようとしていたのか、それとも本気だったのかはわかりません。

Student質問は、テーブルがあることでした。

Student
ID, Name

そしてCourseテーブル:

Course
ID, Name

今私が欲しいのは、NN関係で学生とコースをマッピングすることです。

新しいテーブルを作成しましたStudentCourseRelationship

 StudentCourseRelationShip
 ID    StudentID    CourseID

彼は、新しいテーブルを作成する権限がないと答えたので、新しい列を追加できますか、と尋ねたところ、イエスと答えました。

だから私は彼に、これは推奨される方法ではないと答えましたが、どちらかCourseまたはStudentテーブルに列を追加して、カンマ区切りの値を入れることができます。

お気に入り

Student 
ID  Name
1   abc
2   def
3   ghi
4   hij
5   jkl

Course 
ID  Name      StudentIDs
 1  English   1,3,4
 2  Maths     3,5
 3  Geography 1,2,4

彼は大丈夫だと言いました、3番目の解決策を教えてください。私はそこで立ち往生しました.彼は私に3番目の解決策を教えてくれませんでしたが,私は興味があります.3番目の解決策が存在するかどうか. 3番目の解決策、そして彼は、3番目の解決策があるようでした、行ってそれを探してください。

4

2 に答える 2

1

技術的に言えば、解決策は両方のテーブルにリストを格納することです (双方向での検索を高速化するため)。

既成概念にとらわれず、DBA に親切にテーブルを作成してもらうことも解決策だと思います :o)

于 2013-05-23T15:48:57.743 に答える
0

IDどちらのテーブルでも、たとえばテーブル内の列の一意性制約をいつでも削除できCourseます。次に、Courseテーブルは、あなたがテーブルと呼んだものになりStudentCourseRelationshipます。もちろん、これは正規化を破りますが、それでもカンマ区切りのID列を追加するよりも「ハッキー」ではありません。

Course
ID Name    StudentID
 1 English 1
 1 English 3
 1 English 4
 2 Maths   3
 ...

「DBAに尋ねる」ソリューションがおそらく最も優れていることに同意します。インタビュアーにとって、データベースを正規化することの重要性を尋ねたことがあるかもしれません...

于 2013-05-24T13:03:49.380 に答える