N:N关系的解决方案,无需创建辅助表的权限

时间:2013-05-23 05:49:28

标签: mysql sql sql-server-2008 sql-server-2005

我接受了一个问题的采访,我不确定,如果面试官试图混淆我或他是认真的。

问题是,我们有一个Student表:

Student
ID, Name

Course表:

Course
ID, Name

现在我想要的是在N-N关系中与学生一起制作课程。

我创建了一个新表StudentCourseRelationship

 StudentCourseRelationShip
 ID    StudentID    CourseID

他回答我们没有创建新表的权限,我问我们可以添加一个新列,他说是。

所以我回答他,这不是推荐的方法,但您可以在CourseStudent表中添加一列,并在其中添加逗号分隔值。

喜欢

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
他说没关系,告诉我第三个解决方案。 我被困在那里,他没有告诉我第三种解决方案,但我很好奇,如果有任何第三种解决方案存在,因为最后当他说你想问某事时,我说是的,我想知道第三个解决方案,他就像,有第三个解决方案,去搜索它。

2 个答案:

答案 0 :(得分:1)

从技术上讲,解决方案可能是您在两个表中存储列表(以便在两个方向上更快地进行检索)。

在盒子外思考,我会说要求DBA为你创建表格也是一个解决方案:o)

答案 1 :(得分:0)

您可以随时删除ID列中Course列的唯一性约束,例如,在Course表中。然后,StudentCourseRelationship表变为您所谓的ID表。当然,这会破坏规范化,但仍然不如添加以逗号分隔的Course ID Name StudentID 1 English 1 1 English 3 1 English 4 2 Maths 3 ... 列为“hacky”。​​

{{1}}

我同意“问DBA”解决方案可能是最好的。你可能已经问过面试官保持数据库规范化的重要性......