15:29 수강 테이블 BCNF 질문

위 가정과 설명해주시는 내용을 봤을 때, (교수번호) -> (과목번호) 에 대한 FD가 있다고도 보이는데 맞을까요? "교수를 알면 과목을 알 수 있다"는 가정은 없기 때문에 종속성이 없다고 가정하신 건지 궁금합니다.
테이블 이름이 '수강'이기 때문에 학생이 과목을 수강하는 것이 더 적절하다고 설명하시는 맥락이 있는데, BCNF 정규화 보다도 테이블 pk를 학생, 교수를 대상으로 설정한 것 자체가 문제인 것 같아 보이기도 하네요.
Answer 2
1
네. 간단한 설정을 하기 위해서 위와같이 가정을 했어요. 정확한 내용은 학생과 과목이 있어야 하고 이 둘은 수강이라는 관계로 연결됩니다. 과목을 알고 사실은 시간, 학년 등 몇가지 정보가 더 있어야 해당 교수를 (참조를 통해서) 찾을 수 있는거죠. 이렇게 되면 설명이 복잡해서 그냥 교수와 과목이 매핑된다고 가정하기 위함이었습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 내용에 기반하여, “교수번호 -> 과목번호” 에 대한 함수적 종속성(FD)의 존재 여부는 설계된 데이터베이스 스키마와 실제 비즈니스 규칙에 따라 달라질 수 있습니다. 만약 한 교수가 오직 하나의 과목만을 가르친다는 비즈니스 규칙이 있다면, “교수번호 -> 과목번호”에 대한 함수적 종속성이 존재한다고 볼 수 있겠죠. 하지만, 현실에서는 대부분의 교수가 여러 과목을 가르칠 수 있으므로, 이러한 종속성을 일반적으로 가정하기는 어려울 수 있습니다.
수강 테이블의 경우, 주로 학생과 과목 간의 관계를 나타내기 때문에, 학생과 과목을 이 관계의 주요 엔티티로 보고 이를 기반으로 테이블을 설계하는 것이 일반적입니다. 학생ID와 과목ID를 합성 주요키(Primary Key, PK)로 사용하는 것이 자연스러울 것입니다. 여기서 교수를 대상으로 PK를 설정하는 것은, 해당 비즈니스 규칙에 따라 다를 수 있지만, 보통 ‘수강’의 주된 관심사가 학생에 의한 과목 수강이라는 점에서는 다소 이례적인 설계로 볼 수 있습니다.
BCNF(Boyce-Codd Normal Form) 정규화는 모든 결정자가 후보 키인 관계를 만족해야 하는 강력한 정규형입니다. 만약 교수번호와 과목번호 사이에 분명한 함수적 종속성이 있다면, 이를 적절하게 고려하여 정규화 과정을 거쳐야 할 것입니다. 그러나 실제로는 교수와 과목 사이의 다대다 관계가 존재할 수 있으므로, 이를 정확히 모델링하는 것이 중요합니다.
결론적으로, 테이블을 BCNF 정규화 상태로 유지하기 위해서는 실제 비즈니스 규칙과 데이터 간의 관계를 정확히 이해하고 이에 기반하여 적절한 함수적 종속성을 정의하고 테이블 구조를 설계하는 것이 필수적입니다.
Substack 1년 제공
1
21
3
astro dev start - python 라이브러리 설치 fail
0
22
1
특별 학습 자료 프로모션 1년 멤버십 무료 제공 문의드립니다
0
27
2
맥북 환경구성 에러
0
19
2
간단한 오타 제보입니다.
0
19
1
큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.
0
35
2
실제 FK제약조건을 설정하지 않는이유
0
35
2
Sequence 관련 질문
1
32
2
Image Only Query
1
29
2
섹션 1 퀴즈 3번 문제에 질문이 있습니다.
0
77
2
강의 교재가 어디에 있나요?
0
237
1
M:N관계 강의에서 말씀하신 표현
0
245
2
릴레이션 개념
0
286
2
서가,책 primary key 설정에 대한 질문입니다.
0
269
2
선생님 도메인이란게 뭔가요???
0
438
3
수업중 99.99%의 정밀도에 관한 설명
0
293
2
3정규화
0
232
2
PK에 임의의 식별자(정수형 시퀀스값)부여에 관한 질문드립니다.
0
425
2
강의자료 section 04 인덱스 및 최적화
0
420
3
json 구조의 데이터를 저장할 때 재귀 관계가 맞는 방법인지 궁금합니다.
0
455
2
M:N 관계 테이블의 상속형 PK 질문
0
547
2
데이터를 넣으려고 하면 오류가 발생합니다.
0
469
1
두 FK를 묶어서 PK로 하는 경우에...
0
520
1
SEQ auto increment
0
422
1

