inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

데이터베이스 중급(Modeling)

성적관리 연습문제 3

Subject 테이블과 Lecture 테이블 질문드립니다.

227

twosom

작성한 질문수 69

1

요구사항에서 과목은 학년별로 담당선생님이 따로 있다.

"과목은 '학년별로'"  이 부분에서, 강의에서는 Subject를 마스터 테이블로 만들고, OpenLecture 관계 테이블에 GradeId 를 외래키로 썼더라구요. 혹시 이 부분에서 Grade를 OpenLecture 테이블이 아닌 Subject 테이블의 외래키로 설정하고, SubjectId 랑 GradeId를 묶어서 PK로 선언하고 Subject 테이블의 PK를(GradeId, SubjectId) OpenLecture 테이블의 외래키로 설정해도 상관 없을까요?

컬럼 수로만 따지면 변경사항은 없으나 관계 매핑에서 차이가 좀 있더라구요.

항상 좋은 강의 감사드립니다.

DBMS/RDBMS 데이터 엔지니어링

답변 1

2

이교준

상관 없겠죠. 그러나 중요한 것은 정규화를 생각해야 합니다. Grade가 어느 테이블의 속성에 있는 것이 맞는가를 정확하게 고려해야 합니다. PK, FK구성에는 문제가 없지만 있어야 할 테이블에 없다면 비즈니스 로직을 구현하는데 문제가 되겠죠. 물론 이래도 되고 저래도 되는 경우도 있습니다. 그런 경우는 쉽지만 찾아보기 힘들죠.

Subject가 복잡해지면 나중에 확장성이 크게 떨어집니다. 즉 Subject가 어느 학년에 적용될지 예측할 수 있나요? 만약 Subject의 학년이 바뀌게 되면 일이 생깁니다. 즉, 마스터는 스스로 존재하는 것이기 때문에 그 성격이 바뀌지를 않습니다. 물론 키의 설계가 그렇다는 것이지요. 그런데 Grade가 바뀌어야 하는 상황이 될 수도 있겠군요. 테이블 설계 시 필요 이상의 속성과 키를 갖는 다는 것은 그만큼 부담이 되는 것을 의미하며, 확장성이 현저하게 떨어집니다. 그래서 정규화를 공부해보면 왜 테이블은 최소의 단위로 쪼개져야 하는지 명확하게 알 수 있습니다.

두 FK를 묶어서 PK로 하는 경우에...

0

531

1

SEQ auto increment

0

430

1

사용하시는 프로그램

0

473

2

28분 성별 테이블 유무에 관해 여쭤봅니다.

0

388

1

책구분 테이블 관련 질문드려요

0

442

3

기준 테이블이라는 단어를 처음 사용하셨는데요 ㅜㅜ

0

672

1

데이터베이스 설계시 INT , TINYINT , SMALLINT 이런 걸 선택하는 게 중요한가요?

1

669

1

1:M 과 M:N 선택 질문

0

399

2

기준테이블과 마스터테이블

0

324

1

1정규화 대상 추가질문

0

266

1

안녕하세요 선생님~

0

240

1

테이블명 칼럼을 조인할 때 어떻게 사용한다는 말씀이신지 이해가 되지 않습니다.

0

280

1

seq 칼럼을 pk로 주기에 아까운 이유가 무엇인가요?

0

331

1

useflag 사용하는 이유

0

443

2

숫자 형태의 컬럼 데이터 타입 질문드립니다

0

255

1

PK관련 질문

0

292

1

식별관계 관련

0

284

1

이력 관리 테이블 설계에 대해 질문드립니다

0

5071

2

49 분 대체키를 이용한 select

0

263

1

책구분과 기본목록의 관계에 대해서

0

257

1

1:1관계 질문드립니다.

0

293

1

1:1 관계에 질문이 있습니다.

0

194

2

PK 선정하기

0

380

1

안녕하세요!

0

192

1