我接受了一个问题的采访,我不确定,如果面试官试图混淆我或他是认真的。
问题是,我们有一个Student
表:
Student
ID, Name
和Course
表:
Course
ID, Name
现在我想要的是在N-N关系中与学生一起制作课程。
我创建了一个新表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
他说没关系,告诉我第三个解决方案。
我被困在那里,他没有告诉我第三种解决方案,但我很好奇,如果有任何第三种解决方案存在,因为最后当他说你想问某事时,我说是的,我想知道第三个解决方案,他就像,有第三个解决方案,去搜索它。
答案 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”解决方案可能是最好的。你可能已经问过面试官保持数据库规范化的重要性......