Inflearn brand logo image

인프런 커뮤니티 질문&답변

장지영님의 프로필 이미지
장지영

작성한 질문수

실습으로 손에 잡히는 SQLD의 정석(2과목)

노랭이 39번 문제풀이

노랭이 39번 문제풀이 관계규칙

작성

·

200

1

안녕하세요.

수업에 배운내용과 다르게 알고있는 질문 일 수 있지만 궁금한사항이 있어 질문드립니다.

학생과 수강신청관계가 N:M 관계가 아닌지 헷갈립니다.

 

하나의 학생은 여러개의 수강신청을 신청한다.

하나의 수강신청은 여러명의 의해 신청하게된다

여기서 N:M 관계가 아닌가요?

답변 2

1

땃지님의 프로필 이미지
땃지
지식공유자

안녕하세요.

"하나의 학생은 여러 개의 수강신청을 하고", "하나의 수강신청은 여러 학생이 할 수 있다"고 하셨는데, 여기서 살짝 혼동이 있는 것 같아요. '수강신청'은 어떤 행위나 과정이 아니라, 관계를 표현하기 위해 만들어진 하나의 테이블로 봐주시면 좋아요.

제가 만든 데이터세트에는 학생(Student)강의(Course)가 다대다(N:M) 관계인데, 관계형 데이터베이스에서는 이런 관계를 직접 표현할 수 없기 때문에, 그 관계를 풀어내기 위해 '수강신청(Enrollment)'이라는 중간 테이블을 만듭니다.

즉, 수강신청 테이블은 각각의 학생이 어떤 강의를 신청했는지를 기록하는 역할을 해요.

정리하지면,

  • 학생 강의: N:M 관계

  • 그걸 풀어내기 위해 수강신청이라는 중간 테이블을 둔 것

만약 수강신청을 하나의 독립된 개체로 본다면,

  • 학생 수강신청: 1:N 관계

  • 강의 수강신청: 1:N 관계

이렇게 해석할 수 있어요.

감사합니다.

 

 

장지영님의 프로필 이미지
장지영
질문자

덕분에 이해 된 것 같습니다!

감사합니다 :)

0

안녕하세요, 인프런 AI 인턴입니다. 장지영님.

질문하신 학생과 수강신청의 관계는 다대다(N:M) 관계로 볼 수 있습니다. SQL 및 데이터베이스 설계에서 이러한 관계는 다음과 같은 특징을 가집니다:

  1. 학생과 수강: 한 명의 학생이 여러 개의 수업을 신청할 수 있다면 학생과 수강의 관계는 1:N의 관계입니다.
  2. 수강과 학생: 하나의 수업에 여러 학생이 등록할 수 있다면 수강과 학생의 관계는 N:1의 관계입니다.

이러한 두 관계가 결합될 때, 학생과 수강신청의 관계가 다대다(N:M)가 됩니다. 이를 구현하기 위해서는 보통 학생 테이블, 수강 테이블, 그리고 학생과 수강 사이를 연결해주는 중간 테이블을 사용하여 관계를 관리합니다.

다양한 예시와 상황에 대한 설명은 아래 링크의 기존 질문과 답변을 확인하시면 도움이 될 것입니다:

이러한 답변들은 데이터베이스 구조를 설계하는 데 있어 유용한 정보를 제공합니다. 추가적으로 궁금한 사항이 있으시면 계속 질문해 주시기 바랍니다. 곧 지식공유자께서도 더 상세한 답변을 제공해주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

장지영님의 프로필 이미지
장지영

작성한 질문수

질문하기