과목1 데이터 모델링의 이해 문제풀이

Song Chae Won·2023년 8월 12일
0

DATABASE_STUDY

목록 보기
11/19
post-thumbnail

p.11 - 10번

🔻 Q. 다음 중 엔티티의 특징으로 가장 부적절한 것은?

1) 속성이 없는 엔티티는 있을 수 없다. 엔티티는 반드시 속성을 가져야한다.
➡️ 엔티티는 반드시 속성이 있어야한다.

2) 엔티티는 다른 엔티티와 관계가 있을 수 밖에 없다. 단, 통계성 엔티티나, 코드성 엔티티의 경우 관계를 생략할 수 있다.
➡️ 엔티티는 다른 엔티티와 최소 한 개 이상의 관계가 있어야한다.

3) 객체지향의 디자인 패턴에는 싱글턴패턴이 있어 하나의 인스턴스를 가지는 클래스가 존재한다. 이와 유사하게 엔티티는 한 개의 인스턴스를 가지는 것만으로도 충분한 의미를 부여할 수 있다.
➡️ 엔티티는 관계가 핵심이 되어야하기 때문에 1개의 인스턴스만으로는 충분한 의미를 가질 수 없다.

4) 데이터로서 존재하지만 업무에서 필요로 하지 않으면 해당 업무의 엔티티로 성립될 수 없다.
➡️ 엔티티는 업무 프로세스에 의해 이용되어야한다.

➕ 추가적인 엔티티의 특징

  • 해당 업무에서 필요로 하고 관리하고자 하는 정보여야 한다.
  • 유일한 식별자에 의해 식별이 가능해야 한다.
  • 영속적으로 존재하는 두 개 이상의 인스턴스의 집합이어야 한다.

p.17 - 29번

🔻 Q. 프로젝트를 전개할 때는 식별자관계와 비식별자관계를 선택하여 연결해야하는 높은 수준의 데이터모델링 기술이 필요하다. 다음 중 비식별자관계를 선택하는 기준으로 가장 부적절한 것은?

1) 관계의 강약을 분석하여 상호간에 연관성이 약할 경우 비식별자관계를 고려한다.

2) 자식테이블에서 독립적인 PK의 구조를 가지기 원할 때 비식별자관계를 고려한다.

3) 모든 관계가 식별자 관계로 연결되면 SQL Where절에서 비교하는 항목이 증가되어 조인에 참여하는 테이블에 따라 SQL문장이 길어져 SQL문의 복잡성이 증가되는 것을 방지하기 위해 비식별자관계를 고려한다.

4) 부모엔티티의 주식별자를 자식엔티티에서 받아 손자엔티티까지 계속 흘려보내기 위해 비식별자관계를 고려한다.
➡️ 주식별자를 자식엔티티에서 받아 손자엔티티까지 계속 전해주기 위해서는 강한 연관관계를 유지하기 위해 식별자관계를 사용해야한다. 비식별자관계는 부모쪽 관계 참여가 선택함.

➕ 식별자와 비식별자관계 비교

항목식별자관계비식별자관계
목적강한 연결관계 표현약한 연결관계 표현
자식 주식별자 영향자식 주식별자의 구성에 포함자식의 일반 속성에 포함
표기법실선 표현점선 표현
연결 고려사항- 반드시 부모엔티티 종속
- 자식 주식별자구성에 부모 주식별자포함 필요
- 상속받은 주식별자속성을 타엔티티에 이전 필요
- 약한 종속관계
- 자식 주식별자구성을 독립적으로 구성
- 자식 주식별자구성에 부모 주식별자 부분 필요
- 상속받은 주식별자속성을 타 엔티티에 차단 필요
- 부모쪽의 관계참여가 선택관계

p.31 - 48번

🔻 Q. 다음 중 논리데이터모델의 슈퍼타입과 서브타입 데이터모델을 물리적인 테이블 형식으로 변환할 때 설명으로 가장 부적절한 것은?

1) 트랜잭션은 항상 전체를 대상으로 일괄 처리하는데 테이블은 서브타입별로 개별 유지하는 것으로 변환하면 Union 연산에 의해 성능이 저하될 수 있다.

2) 트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합하여 변환하면 불필요하게 많은 양의 데이터가 집적되어있어 성능이 저하될 수 있다.

3) 트랜잭션은 항상 슈퍼+서브 타입을 함께 처리하는데 개별로 유지하면 조인에 의해 성능이 저하될 수 있다.

4) 트랜잭션은 항상 전체를 통합하여 분석 처리하는데 하나로 통합되어있으면 데이터 집적으로 인해 성능이 저하될 수 있다.
➡️ 트랜잭션은 항상 전체를 통합하여 분석처리하는데 슈퍼-서브타입이 하나의 테이블로 통합되어 있으면 하나의 테이블에서 데이터를 읽어올 수 있기에 성능이 좋아진다!

➕ 슈퍼/서브 타입 데이터 모델의 변환기술

  • 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성
  • 슈퍼+서브 타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼+서브 타입 테이블로 구성
  • 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성
profile
@chhaewxn

0개의 댓글