inflearn logo
강의

講義

知識共有

[7日完成]考えるデータベースモデリング

12_論理的なモデリング(独立型、継承型PK)

12_논리적인 모델링(독립형,상속형PK)에서 질문드립니다.

解決済みの質問

252

dajfna

投稿した質問数 3

0

안녕하세요!

강의에서 수강취소의 경우 수강번호(AK)를 WHERE절로 삭제한다고 말씀하신 부분에 추가적으로 궁금한게 있어서 질문드립니다.

예를들어 수강취소를 한다고 할 때 수강 테이블에 DEL_YN이라는 컬럼이 있고 삭제의 경우 delete가 아닌 DEL_YN을 N에서 Y로 update한다면, 학생코드/과목코드/DEL_YN이 1/1/Y인 레코드가 여러개 있을 수 있고 1/1/N인 레코드는 하나만 존재해야할 것 같습니다. 제가 생각하는 방법이 정상적인 방법인지도 궁금하고, 또 이 경우에는 학생코드, 과목코드, DEL_YN=N 이렇게 3개를 묶어서 PK를 해야하는지 그리고 수강취소 예시에서 delete가 아닌 DEL_YN같은 값을 update해야한다면 보통 어떤식으로 제약조건을 추가하는지 말씀 부탁드립니다.

감사합니다.

sql dbms/rdbms ERD backend

回答 2

0

bitcocom

image.png

위 2가지의 경우를 참고하시면 좋겠습니다.

0

dajfna

답변 감사드려요!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 맛땅님

학생이 수강취소를 할 때 DEL_YN 컬럼을 활용하여 삭제하지 않고 상태를 업데이트하는 방식은 꽤 일반적입니다. 이것을 Soft Delete라고 하며 데이터가 물리적으로 삭제되지 않으면서도 논리적으로는 삭제된 것 같은 효과를 냅니다. 이는 데이터 복구나 이력을 남기고자 할 때 유용합니다.

  1. PK(Primary Key) 설정: 기본적으로 학생코드, 과목코드가 결합되어 수강 테이블의 기본키 역할을 할 수 있습니다. DEL_YN은 내부 로직 제어를 위한 플래그로 사용되므로 직접 PK로 사용하는 경우는 드뭅니다. 대신 PK는 학생코드와 과목코드 조합으로 설정되어 있어야 합니다.

  2. 제약조건 설정: DEL_YN의 상태를 N에서 Y로 변경할 때, 이미 N 상태인 레코드가 단 하나만 존재해야 하는 것은 논리적인 제약 사항입니다. 이를 보장하기 위해서는 비즈니스 로직 레벨에서 이를 처리하는 것이 일반적입니다. 예를 들어, 트리거나 어플리케이션 레벨에서 수강등록 시 유효성 검사를 하여 한 학생이 동일 과목에 대해 미완료(N) 수강이 중복되지 않도록 합니다.

이와 관련하여 기존 질문과 답변을 참고하시는 것도 좋습니다:
- 테이블정의서 NN(NotNull): 테이블 제약 조건의 개념에 대한 질문입니다. 제약 조건을 설정하는 다양한 사례에 대해 배우실 수 있습니다.
- 회원테이블과 권한테이블 간 관계 분석: 데이터베이스의 관계 설정과 제약에 대한 이해를 도울 수 있는 답변입니다.

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

수강 완료한 강의 수료증 어떻게 받나요?

0

5

1

복합인덱스 설계 질문

0

12

0

app logs 데이터로 쿼리 연습

0

9

2

마스터패스...

0

17

1

[과제] 연습문제 쿼리 작성했습니다!

0

12

2

SubStack 신청 완료했습니다!

0

13

2

실습소 페이지

0

21

2

노드

0

22

1

장치 의존성과 CSR

0

30

1

57번

0

29

1

안녕하세요. 요약집 어디서 볼 수 있을까요?

0

27

1

아무도 모르게 책 내시면 모르실 줄 알고!!

1

43

2

64비트 다운로드 링크

0

26

2

리뷰

0

39

2

3번 문제 질문!

0

37

2

nestjs 강의는 없나요??

1

40

2

41번과 43번 문제

0

39

1

쿼리 질문드립니다!

0

171

2

계산 로직을 Java 단이 아닌 쿼리문에서 하신 이유가 궁금합니다.

0

236

2

테이블정의서 NN(NotNull)

0

310

1

테이블 이름에 "t_" 프리픽스를 붙이는 이유가 있나요?

0

572

1

마프1탄은 언제개강예정인가요?

0

220

1

제품테이블에서 제품색상처리는/

0

233

1

intellij Ultimate tomcat server로 구동시 생긴문제입니다.

0

395

1