| English | 의미 |
|---|---|
| entity-relationship diagram/ˈentɪti rɪˈleɪʃənʃɪp ˈdaɪəɡræm/ | Glossary {"sense": "실체 관계도", "subject": "A-Level 컴퓨터 과학", "term": "entity-relationship diagram"} |
| normalisation/ˌnɔːməlaɪˈzeɪʃn/ | Glossary {"sense": "정규화", "subject": "A-Level 컴퓨터 과학", "term": "normalisation"} |
| entity/ˈentɪti/ | 엔티티 |
| cardinality/ˌkɑːdɪˈnælɪti/ | Glossary {"sense": "카디널리티", "subject": "A-Level 컴퓨터 과학", "term": "cardinality"} |
| one-to-many/wʌn tə ˈmeni/ | 일대다 관계 |
| many-to-many/ˈmeni tə ˈmeni/ | 다대다 관계 |
| link table/lɪŋk ˈteɪbl/ | Glossary {"sense": "연결 표", "subject": "A-Level 컴퓨터 과학", "term": "link table"} |
| normal forms/ˈnɔːml fɔːmz/ | Glossary {"sense": "范式", "subject": "A-Level 컴퓨터 과학", "term": "normal forms"} |
| atomic/əˈtɒmɪk/ | Glossary {"sense": "원자적", "subject": "A-Level 컴퓨터 과학", "term": "atomic"} |
| transitive dependency/ˈtrænsɪtɪv dɪˈpendənsi/ | Glossary {"sense": "전이 의존성", "subject": "A-Level 컴퓨터 과학", "term": "transitive dependency"} |
전화번호 하나 변경을 위해 40개의 행 수정
- 한 학교는 등록 정보를 하나의 스프레드시트에 보관합니다. 각 행은 하나의 학생이 하나의 과정에 등록한 것을 나타내며, 각 행에는 해당 학생의 담임 교사와 교사의 전화번호도 함께 저장되어 있습니다.
- 교사가 전화번호를 변경합니다. 40개의 행을 수정해야 합니다. 39개는 수정되었지만, 나머지 행들은 한 학기 내내 낯선 사람으로 통화를 할 것입니다.
- 타가 발생한 것은 아닙니다. 문제는 설계에 있었습니다. 교사에게 속하는 사실이 각 등록 기록마다 한 번씩 저장되었으므로,一处에서는 참이其他地方에서는 거짓이 될 수 있었습니다.
- 이 수업에서는 그 문제를 방지하는 두 가지 설계 도구, 즉 구조를 도식화하는 엔티티-관계도와 중복을 제거하는 정규화를 다룹니다.
엔티티-관계도
- 엔티티-관계도(E-R diagram)는 데이터베이스 설계를 문서화합니다: 각 엔티티는 사각형으로 표현되고, 각 관계는 두 사각형 사이의 선이며, -cardinality(카디널리티) 는 양단에 표시됩니다.
- ' crow's-foot notation(갈매기 발 모양 표기법)'에서 단일 막대선은 "하나"를 의미하고, 세 갈래의 발 모양은 "여러 개"를 의미합니다. 각 선을 양방향으로 읽으십시오: 각 고객은 여러 건의 주문을 placing하지만, 각 주문은 한 명의 고객이 placing합니다.
- 이 도식은 테이블이 생성되기 전에 그려지며, 도식에 있는 관계들이 외래 키(foreign keys)가 됩니다.

엔티티당 사각형 하나, 관계당 선 하나

하나용 막대선, 여러 개용 발 모양
E-R 도표에서 하나의 엔티티가 다른 하나의 엔티티와 관련될 수 있는 개수는 선의 양 끝에 표시되며, 이는 ____입니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
카디널리티는 각 끝에서 하나 또는 많음을 의미하며, 까마귀발 notation은 하나로 막대를, 많음으로 발을 그립니다.
세 가지 유형의 관계
- 일대일(1:1): 각 회원은 하나의 도서관 이용증을 가지고 있으며, 각 이용증은 한 명의 회원에게 속합니다. 드물게 발생하며, 두 엔티티는 종종 하나의 테이블로 통합됩니다.
- 일대다(1:M): 한 고객이 여러 건의 주문을 placing합니다; 각 주문은 한 명의 고객에게 속합니다. "일" 쪽의 주키(primary key)를 "다" 쪽 테이블의 외래 키로 넣음으로써 구현됩니다.
- 다대다(M:N): 한 학생은 여러 과목을 수강하고, 한 과목은 여러 명의 학생이 수강합니다. 직접 구현할 수 없으며, 연결 테이블(link table)이 필요합니다.
각 고객은 많은 주문을 placing할 수 있지만, 각 주문은 하나의 고객에 속합니다. 이 관계는:
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
한 고객 → 많은 주문, 각 주문 → 한 고객: 일대다 관계입니다.
각 관계를 그 카디널리티로 매칭하십시오.
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
1:1 양쪽 모두 하나; 1:M 한 쪽이 많음; M:N 양쪽 모두 많음(연결 테이블 필요).
worked example: E-R 도식 그리기
- 한 학교에는 교사, 학급, 학생이 있습니다. 각 교사는 여러 학급을 가르치며, 각 학급은 한 명의 교사에 의해 가르쳐집니다. 각 학급에는 여러名学生이 있으며, 각 학생은 한 학급에 속합니다. 학생들은 여러 동아리에 가입할 수 있으며, 각 동아리에는 여러 명의 학생이 있습니다.
- 네 개의 사각형:
TEACHER,CLASS,STUDENT,CLUB.TEACHER—CLASS는 일대다이며, 발 모양이CLASS에 있습니다.CLASS—STUDENT는 일대다이며, 발 모양이STUDENT에 있습니다.STUDENT—CLUB는 다대다이며, 양단에 발 모양이 있습니다. - 표시 내용: 존재하는 모든 엔티티, 그려진 모든 관계, 그리고 각 끝부분에 올바른 카디널리티 기호가 포함되어야 합니다. 기호가 없는 선은 답의 절반입니다.
연결 테이블
- 다대다 관계는 두 개의 일대다 관계로 분해되며, 이를 위해 두 개의 외래 키를 포함하는 연결 테이블(link table) 이 사용됩니다.
ENROLMENT(StudentID, CourseID, EnrolmentDate): 한 학생은 여러 등록 기록을 가지고 있으며, 한 과목은 여러 등록 기록을 가집니다. 각 행은 한 학생이 한 과목에 등록된 것을 나타냅니다. 주키는 두 외래 키의 합성(composite) 입니다.- 페어링 자체에 대한 데이터, 날짜, 성적 등은 연결 테이블에 저장되며, 학생이나 과목에 대한 데이터는 각자 별도의 테이블에 유지됩니다.

하나의 다대다 관계가 두 개의 일대다 관계로 바뀜
다대다 관계는 관계형 데이터베이스에서 어떻게 구현됩니까?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
연결(중계) 테이블은 양측에 대한 외래 키를 보유하여 M:N을 두 개의 1:M 관계로 전환합니다.
ENROLMENT(StudentID, CourseID, EnrolmentDate)는 연결 테이블입니다. 다음 중 참인 문장은 무엇입니까? 모든 해당하는 것을 선택하십시오.
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
연결 테이블은 쌍과 그에 대한 사실을 보유합니다. 학생의 자체 데이터는 STUDENT에 remain하며, 그렇지 않으면 모든 등록 시에 중복됩니다.
정규화
- 정규화(normalisation) 은 테이블을 정리하여 각 사실이 정확히 한 번만 저장되도록 하여 중복과 불일치를 줄입니다. 정규형(normal forms) 을 순서대로 거칩니다: 첫째, 둘째, 셋째.
- 절차: 엔티티와 속성을 찾습니다; 각 엔티티의 주키를 선택합니다; 반복되는 그룹과 비원자적(non-atomic) 값을 제거합니다(1NF); 합성 키의 일부에만 의존하는 속성을 제거합니다(2NF); 다른 비키 속성에 의존하는 속성을 제거합니다(3NF); 관계에 대한 외래 키를 추가합니다.
- 비용은 더 많은 테이블과 더 많은 조인(join)입니다. 시험에서는 3NF를 요구합니다.
데이터베이스 서비스 실험실
DBMS가 질문을 안전한 공유 데이터 접근으로 변환하는 과정을 확인하십시오.
적용 순서에 따라 정규화 단계를 배치하십시오.
난이도 3/5 · 200 코인 + 오늘 첫 완료 시 소액 보너스
(3)NF에 도달하려면 먼저 (1)NF를 거쳐 (2)NF를 통과해야 합니다—각 단계는 이전 단계를 기반으로 합니다.
정규화의 주요 목적은:
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
3NF까지 정규화하면 각 사실을 한 번만 저장하여 업데이트/삽입/삭제 이상 현상을 제거합니다(더 많은 연결이 필요한 대신).
첫 번째 정규형
- 테이블이 1NF 상태라면 모든 필드가 단일 원자적(atomic) 값을 가지며, 반복되는 그룹이 없고, 주키가 있어야 합니다.
STUDENT(StudentID, Name, Phone)에Phone가0123, 0456를 포함하고 있다면 이는 원자적이지 않습니다.STUDENT(StudentID, Name, Course1, Course2, Course3)에는 반복되는 그룹이 있습니다.- 반복된 데이터를 값당 한 행씩 가진 별도의 테이블로 이동하여 둘 다 수정합니다:
STUDENT_PHONE(StudentID, Phone),ENROLMENT(StudentID, CourseID).
한 학생에 대해 Phone 필드에 "0123, 0456"이 들어 있습니다. 이 테이블은 어떤 정규화 단계를 위반합니까?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
한 셀에 두 값은 1NF 위반입니다. 숫자를 STUDENT_PHONE(StudentID, Phone)로 이동하여 각 행당 하나씩 배치하십시오.
worked example: 두 번째 정규형
ORDER(OrderID, CustomerID, CustomerName, ProductID, Quantity)는 합성 주키(OrderID, ProductID)를 가지고 있습니다. 2NF 상태입니까?- 비키(non-key) 필드를 전체 키에 대해 테스트합니다.
Quantity는OrderID과ProductID모두에 의존합니다: 어떤 주문인지, 어떤 제품인지. 적절합니다. CustomerID와CustomerName은OrderID에만 의존하므로 키의 일부에만 의존합니다: 부분 종속(partial dependency) 이므로, 해당 테이블은 2NF 상태가 아닙니다. 분리하십시오:ORDER(OrderID, CustomerID, CustomerName)과ORDER_LINE(OrderID, ProductID, Quantity).
worked example: 셋째 정규형
ORDER(OrderID, CustomerID, CustomerName)는 3NF 상태입니까?- 테이블이 3NF 상태라면 2NF 상태여야 하며, 모든 비키 필드는 주키에만 의존해야 하며, 다른 비키 필드에 의존해서는 안 됩니다.
CustomerName는CustomerID에 의존하는데, 이것이 키가 아닙니다: 종속 종속(transitive dependency) 이므로, 테이블은 3NF 상태가 아닙니다. - 다시 분리합니다:
ORDER(OrderID, CustomerID)와CUSTOMER(CustomerID, CustomerName), 여기서CustomerID는 외래 키입니다. 고객의 주문 횟수가 아무리 많아도 이름은 한 번만 저장됩니다.

각 정규형은 한 종류의 종속성을 제거합니다
3NF까지 정규화하면 각 사실을 한 번만 저장하여 업데이트 이상 현상을 제거하지만, 더 많은 테이블과 연결이 필요한 대가로 치릅니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
이러한 트레이드오프 — 데이터의 정제 versus joins 수 증가 — 때문에 3NF가 일반적인 목표가 됩니다.
테이블이 3NF인지 아닌지에 대한 이유 설명
- 3NF에 속하지 않음: 종속성을 명시해야 한다. "
TEACHER은 비키 속성DepartmentName이 주 키가 아닌 비키 속성DepartmentID에 의존하므로, 3NF에 속하지 않는다." - 3NF임: 세 가지 조건을 모두 충족함을 보여줍니다. "모든 속성은 원자적이고 반복되는 그룹이 없으며, 키의 일부에 대한 부분 종속성이 없으며, 모든 비키 속성은 주키에만 의존하고 종속 종속성이 없습니다."
- 이후 요청 시 표준 표기법으로 외래 키를 표시한 정규화된 테이블을 제시하십시오.
TEACHER(TeacherID, Name, DepartmentID, DepartmentName) 테이블에서 이 테이블이 3NF에 속하지 않는 이유는 무엇인가?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
전이 종속(transitive dependency)입니다. DEPARTMENT(DepartmentID, DepartmentName)을 분리하고 TEACHER에서 DepartmentID를 외래 키(foreign key)로 유지해야 합니다.
놓칠 수 있는 점
- 2NF는 복합 키일 때만 문제가 됩니다. 단일 필드 키에는 부분 종속이 존재할 수 없습니다.
- 3NF는 2NF를 필수로 포함합니다. 근거를 제시할 때 두 가지 모두 언급하십시오.
- **원자성(Atomic)**은 각 셀에 하나의 값만을 의미합니다. "한 필드에 두 개의 전화번호"가 있는 것은 1NF 위반이며, 3NF 위반이 아닙니다.
- 정규화 형식을 이름으로 언급하는 것이 정답이 아닙니다. 종속 관계의 이름을 언급하는 것이 정답입니다. 정규화 후 표가 더 많아지는 것은 결함이 아니라 목표입니다.
이해했습니다
- E-R 도표는 엔티티를 직사각형으로, 관계를 양 끝에 **카디널리티(cardinality)**가 표시된 선으로 나타냅니다: 1:1, 1:M, M:N
- 다대다(many-to-many) 관계는 두 외래 키의 **연결 표(link table)**를 통해 저장되며, 이 표의 주키(composite key)는 해당 두 외래 키로 구성됩니다.
- 1NF: 원자적 값, 반복 그룹 없음, 주키 있음 · 2NF: 복합 키의 일부에 대한 부분 종속 없음 · 3NF: 비주키 속성 간 전이 종속(transitive dependency) 없음
- 종속 관계의 이름을 언급하여 근거를 제시한 후, 외래 키가 포함된 분할된 표를 나열하십시오.