Skip to content

Commit

Permalink
Merge pull request #71 from freedom07/main
Browse files Browse the repository at this point in the history
[W5] 윤 문제풀이
  • Loading branch information
leehosung authored Jan 7, 2022
2 parents 1e04d10 + 0c22566 commit e58b8b8
Show file tree
Hide file tree
Showing 3 changed files with 218 additions and 0 deletions.
90 changes: 90 additions & 0 deletions chapter10/exercise_yun.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
1. 관계가 왜 중요한지, 대표적인 이유 두 개를 서술하라.

- 관계는 논리적으로 연관이 있는 두 테이블 사이의 연결을 설정한다.
- 관계는 테이블 구조를 정제하고 중복 데이터를 최소화하는 것을 돕는다.
- 관계는 우리가 여러 테이블에서 동시에 데이터를 뽑아낼 수 있는 방법이 된다.

2. 관계의 세 유형을 적어라.

- 1대1 관계
- 1대다 관계
- 다대다 관계

3. 어떤 관계가 가장 많은 문제를 일으키는가?

- 다대다 관계

4. 다대다 관계에서 마주칠 수 있는 두 개의 문제를 서술하라.

- 테이블 중 하나에서 정보를 추출하는 것이 따분하고 다소 어렵다.
- 테이블 중 하나에는 대량의 중복 데이터가 포함될 것이다.
- 중복 데이터가 양쪽 테이블에 모두 존재할 것이다.
- 데이터를 삽입, 갱신, 삭제하기 어려울 것이다.

5. 자가 참조 관계는 무엇인가?

- 한 테이블 내에 있는 레코드들 사이에 존재하는 관계이다.

6. 데이터베이스에 있는 테이블 사이에 관계를 식별하는 절차는 어떻게 시작하는가?

- 데이터베이스에 있는 모든 테이블에 대한 행렬을 만드는 것으로 관계를 식별하는 프로세스를 시작한다.

7. 이미 있는 관게를 식별하기 위해서 사용할 수 있는 두 종류의 질문은 무엇인가?

- 연결 측면
- 문맥 측면
- 소유권 기반의 질문
- 활동 기반의 질문

8. 테이블 행렬에 있는 1대다 관계를 지정할 때 사용하는 단축 기호는 무엇인가?

- 1:N

9. 행렬에 있는 각 쌍의 테이블 사이에 어떤 종류의 관계가 공식적으로 존재하는지는 어떻게 결정하는가?

- 1:1, 1:N, M:N 의 공식을 사용하여 각 테이블간의 관계를 판단한다.

10. 1대다 관계는 어떻게 설정하는가?

- 관계의 "1" 쪽에 있는 테이블에 기본 키의 복사본을 취해서 "다" 쪽의 테이블에 있는 테이블 구조에 포함시킨다.

11. 참/거짓 문제: 자가 참조 관계를 가진 테이블에서 정보를 추출하는 것은 지루하고 다소 어려울 수 있다.

-

12. 자가 참조 다대다 관계는 어떻게 설정하는가?

- 두 테이블을 연결할 때와 마찬가지로 자가 참조의 다대다 관계를 설정하기 위해 연결 테이블을 사용한다.

13. 데이터베이스에 있는 외래 키는 어떻게 개선하는가?

- 외래 키의 특별한 요소들을 따라서 개선한다

14. 외래 키의 필드 명세 중에서 어떤 두 요소들을 반드시 수정해야 하는가?

- 일반적인 요소, 논리적인 요소

15. 삭제 규칙의 기능은 무엇인가?

- 관계에 있는 부모 테이블에서 특정 테이블을 삭제하고자 할 때 RDBMS 가 무엇을 해야하는지를 결정한다.

16. 테이블에 대하여 지정할 수 있는 두 가지 참여 종류는 무엇인가?

- 의무적
- 선택적

17. 참여의 정도는 무엇을 나타내는가?

- 참여의 정도는 특정 테이블이 관련된 테이블에 있는 하나의 레코드와 연결되어야 하는 최소 숫자와 연결될 수 있는 최대 숫자를 가리킨다.

18. 관계는 언제 관계 수준 무결성을 획득하는가?

- 관계가 적절하게 연결되고, 이에 대한 특징이 적절하게 설정된 이후에 관계 수준 무결성이 확보된다.
- 관계에서 두 테이블(혹은 키 필드) 사이의 연결이 적절하다.
- 의미 있는 방법으로 각 테이블에 새로운 레코드를 넣을 수 있다.
- 어떤 역효과가 없이 현재 있는 레코드를 삭제할 수 있다
- 관계에서 서로 연결될 수 있는 레코드의 숫자를 제한한다.

---

친구 추천 테이블을 만든다고 했을 때 자가 참조 관계에서 1대다로 만드는게 좋을까 새로운 연결테이블을 하나 만드는게 좋을까?
55 changes: 55 additions & 0 deletions chapter11/exercise_yun.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
1. 업무 규칙이란 무엇인가?

- 업무 규칙(Business)은 필드 명세 내의 요소들이나 주어진 관계의 특성들처럼 데이터베이스의 특성 측면에 어떤 형태의 제약을 부과하는 문장이다.

2. 업무 규칙의 두 가지 중요한 종류들의 이름을 기술하라.

- 데이터베이스 지향
- 응용프로그램 지향

3. 데이터베이스의 논리적 설계 내에서 응용프로그램 지향 업무 규칙을 설정할 수 있는가?

- 아니다. 논리적 설계 내에서 제약조건들을 의미 있고 명확하게 설정할 수 있으면, 제약조건을 도출하는 문장은 데이터베이스 지향 업무 규칙이다.

4. 데이터베이스 지향 업무 규칙의 두 가지 범주는 무엇인가?

- 필드 특유
- 관계 특유

5. 필드 특유의 업무 규칙이란 무엇인가?

- 필드 특유의 업무 규칙은 특정 필드를 위한 필드 명세의 요소들에 제약조건을 부과한다. 주어진 규칙이 영향을 미치는 요소들의 수는 이 규칙을 정의하는 방법에 의존한다.

6. 언제 업무 규칙은 테스트되는가?

- 테이블에 한 레코드 또는 필드에 한 항목을 삽입하거나 삭제하거나 갱신할 때

7. 업무 규칙을 어떻게 문서화하는가?

- 업무 규칙 명세서를 채움으로써, 장래의 참조를 위해 주어진 업무 규칙을 문서화할 수 있다.

8. 업무 규칙 명세서가 제공하는 두 가지 장점을 적어라.

- 모든 데이터베이스 지향 업무 규칙을 문서화하도록 해준다.
- 모든 응용프로그램 지향 업무 규칙을 문서화하도록 해준다.
- 모든 업무 규칙을 기록하기 위한 표준적인 방법을 제공한다.

9. 업무 규칙 명세서의 처리사항(action taken) 부분의 목적은 무엇인가?

- 필드 명세의 요소들이나 관계 다이어그램에 가한 수정을 나타내는 곳이다.

10. 검증 테이블의 목적은 무엇인가?

- 검증테이블(룩업 테이블로도 알려져 있다)은 데이터 무결성을 구현하기 위한 구체적으로 사용하는 데이터를 저장한다.

11. 검증 테이블의 전형적인 구조는 무엇인가?

- 검증테이블은 보통(그러나 항상 그렇진 않다) 두 개의 필드로 구성된다. 첫번째는 주 키의 역할을 하고 데이터 무결성을 강화하기 위해 사용되는 것이고 두번째는 데이터베이스의 어떤 다른 필드에 의해 요구되는 값들의 집합을 저장하는 단순한 비 키 필드다.

12. 업무 규칙과 검증 테이블 사이의 연관성은 무엇인가?

- 업무 규칙이 필드 값 범위를 제한할 때, 검증 테이블을 사용함으로써 제약조건을 강화할 수 있다.

13. 완성된 업무 규칙 명세서를 모두 검토해야 하는 이유는 무엇인가?

- 각 명세서를 주의 깊게 검사하고 규칙을 적절하게 설정했는지 그리고 명세서상의 모든 적절한 영역을 명확하게 표시했는지 확인한다.
73 changes: 73 additions & 0 deletions chapter12/exercise_yun.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
1. 왜 뷰를 가상 테이블이라고 부를 수 있는가?

- 자체적으로 데이터를 저장하는 대신 기반 테이블로부터 데이터를 추출하기 때문이다.

2. 왜 뷰가 가치 있는지 두 가지 이유를 적어라.

- 여러 테이블로부터 동시에 온 데이터로 작업하기 위해 사용할 수 있다.
- 가장 최근의 정보를 반영한다
- 개인 또는 그룹의 특별한 요구에 개인화시킬 수 있다.
- 데이터 무결성을 강화하는데 사용할 수 있다.
- 보안이나 기밀성의 목적으로 사용할 수 있다.

3. 데이터베이스의 논리적 구조를 설계하면서 정의할 수 있는 뷰 종류의 이름을 적어라.

- 데이터 뷰
- 집계 뷰
- 검증 뷰

4. 데이터 뷰(또는 이 문제에 관해서는 임의 종류의 뷰)를 액세스 할 때마다 RDBMS는 무엇을 하는가?

- 뷰에 엑세스 할 때마다 RDBMS는 이것을 재구축 및 재이식하므로, 이 뷰는 직원 테이블의 데이터에 적용한 최근의 변경사항을 반영한다.

5. 뷰의 데이터에 적용할 수 있는 수정의 종류를 무엇이 결정하는가?

- 단일 테이블 뷰의 경우처럼, 필드 명세와 업무 규칙들은 데이터에 가할 수 있는 수정의 종류를 결정한다.

6. 다중 테이블 데이터 뷰를 정의하기 위해 충족시켜야 하는 유일한 요구사항은 무엇인가?

- 둘 이상의 테이블을 사용하여 데이터 뷰를 정의할 수 있는데 이를 위한 유일한 요구사항은 뷰를 만들기 위해 사용하는 테이블들이 서로 관계를 가져야 한다는 것이다.

7. 왜 데이터 뷰는 자신의 주 키를 포함하지 않는가?

- 뷰는 테이블이 아니기 때문에 주키가 없다. 진짜 테이블은 데이터를 저장하고 따라서 레코드 각각을 위한 유일 식별자로 사용하기 위해 주 키를 필요로 한다. 그러나 뷰가 제공하는 정보에 기여한다고 판단된다면 뷰 내의 어떤 기반 테이블로부터 주 키를 포함시킬 수는 있다.

8. 집계 뷰의 목적은 무엇인가?

- 특정 데이터의 집합을 집계해서 생성된 정보를 표시하기 위해 이 종류의 뷰를 사용한다.

9. 데이터 집합에 적용할 수 있는 가장 일반적인 집계 함수들은 무엇인가?

- 합계, 평균, 평균값, 최솟값, 최대값, 개수

10. 그룹화 필드란 무엇인가?

- 주어진 클래스 이름의 모든 인스턴스를 하나의 인스턴스로 그룹화한 필드이다. 집계 뷰내의 모든 데이터 필드들은 그룹화 필드다.

11. 참/거짓 문제: 집계 뷰 내의 데이터를 수정할 수 있다.

- 거짓, 모두 계산된 필드이다.

12. 검증 테이블과 검증 뷰의 차이점은 무엇인가?

- 이 둘의 차이점은 데이터 생성에 있는데, 검증 테이블은 자신의 데이터를 저장하는 반면, 검증 뷰는 기반 테이블로부터 데이터를 추출한다. 비록 하나의 테이블을 사용하여 검증 뷰를 정의할 수 는 있지만 보통은 하나의 테이블을 사용하여 검증 뷰를 정의하고 기반 테이블의 두세개 필드만 포함시킨다.

13. 뷰 요구사항을 식별할 때 고려해야 하는 두 가지 요점의 이름을 적어라.

- 그룹과 작성한 메모를 검토한다.
- 설계 프로세스 앞 단계에서 수집한 데이터 입력, 보고서, 프레젠테이션 샘플들을 검토한다.
- 테이블들과 그것들이 나타내는 주제를 검사한다.
- 테이블 관계들을 분석한다.
- 업무 규칙들을 검토한다.

14. 언제 계산된 필드를 사용해야만 하는가?

- 적절하고 의미 있는 정보를 제공하거나, 뷰가 데이터를 사용하는 방법을 개선한다면 그것들을 사용하는 것

15. 공상 과학 서적만 표시하는 뷰를 어떻게 정의하는가?

- 적절한 테이블과 필드에 적절한 필터를 적용한다.

16. 왜 데이터베이스 내의 모든 뷰를 위해 뷰 명세서를 완성해야만 하는가?

- 이름이나 종류와 같은 뷰의 특성들을 문서화해놓고 이를 최종적으로 데이터베이스 구현에 유용하게 사용될 수 있다.

0 comments on commit e58b8b8

Please # to comment.