Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 블로그

[데이터베이스] 릴레이션 분석 지침 본문

전공 공부/데이터베이스

[데이터베이스] 릴레이션 분석 지침

토산인 2022. 12. 14. 14:24

릴레이션 분석 지침은 릴레이션이 잘 설계되었는지 아니면 문제가 있는지 간단히 확인하는 기본지침이다. 

 

릴레이션 분석 기본 지침

1. 스키마에서 속성의 의미가 명확한지 확인한다.

-> 속성의 이름으로 해당 속성이 어떤 의미를 가졌는지 알 수 있어야 한다. 속성의 이름을 모호하지 않게 작명해야 한다. 예를 들어 회원 릴레이션에서 '날짜, 시간' 속성은 가입 날짜 시간인지 수정 날짜 시간인지 모호하다. 

그리고 여러 엔티티의 속성들이 하나의 기본 릴레이션에 혼합되면 안된다. 예를 들어 게시글 릴레이션에는 게시글과 관련된 속성들만 존재해야 한다. 

 

2. 튜플들에서 중복되는 값들이 있는지 확인한다.

속성의 의미가 명확하지 않으면 중복되는 값들이 존재하게 된다. 릴레이션의 속성 중 의미상 별도의 릴레이션으로 분리할 수 있음에도 분리하지 않아 동일한 값이 존재하는 경우, '진짜' 중복이며 이 중복은 문제를 일으킨다. 

삽입 이상 : 동일한 값을 가지는 튜플을 추가할 때, 잘못된 정보로 넣을 때 문제가 발생한다. 

수정 이상 : 동일한 값을 가지는 모든 튜플들을 수정하는 것이 아니라 일부만 수정하면 문제가 발생한다.

삭제 이상 : 게시글 행을 삭제하면 회원 정보도 완전히 삭제되며 데이터 누락으로 문제가 발생한다. 

 

3. 튜플들에 저장된 NULL 값을 확인한다. 

속성에 NULL 값이 빈번하게 저장된다면, 불필요한 저장 공간을 사용하는 것이고 NULL 값의 의미가 모호해진다. 따라서 NULL 값을 최대한 피하는게 좋다. 

 

4. 가짜 튜플이 생성되는지 확인한다. 

하나의 릴레이션에서 잘못 분리된 두 개의 릴레이션은 조인 시 가짜 튜플을 생성할 수 있다. 

위의 과정을 설명해보면, 먼저 과목과 강사 한 릴레이션을 두 릴레이션으로 분리한다. 그러면 각 릴레이션은 강사가 강의하고 있는 과목, 회원이 수강하는 과목으로 나뉜다. 하지만 두 릴레이션을 조인하면 가짜 튜플이 생긴다. 이러한 문제는 릴레이션을 제대로 분리하지 않거나 잘못된 설계를 했을 때 일어난다. (잘못된 릴레이션 설계로 인해 조인 시 잘못 생선된 튜플을 가짜 튜플이라고 한다).

 

 

 

 

 

참고: https://www.codelatte.io/courses/database_basic/33NQA1M66BT9E0QE