2022-02-26 프로그래머스 1주차 강의
0. 지난 과제 리뷰(Ch 01 관계 대수)
- 셀렉트를 먼저하고 JOIN을 나중에 해야 프로그램의 속도를 높여 최적화시킬 수 있다.
- 무결성 제약 특징 중요하다.
- 한 식에 조인의 개수가 적을 수록 좋다.
- 같은 속성에 대한 조건이 두 개이면 한 번에 쓰는 게 아니라 두 식의 교집합으로 나타낼 수 있다.
-> 왜냐하면 한 개의 투플에 속성의 값이 하나씩 있기 때문이다.
- SQL은 접해본 적이 있어서 이해가 갔는데 관계대수식이라는 것은 처음 봤다.
- 관계대수식를 바탕으로 SQL을 작성한다는 것을 알았다.
- 기본키와 외래키에 대한 개념은 컴활을 공부해서 알고 있는 내용이라 어렵지 않았다.
- 그런데 조인에 대한 내용에 대해서 프로젝트, 셀렉트, 조인을 이용하여 식을 세우는 게 많이 헷갈렸다.
- 평균을 구하는 식에서 프로젝트나 GROUP이 나오지 않을 때도 있다.
-> 셀렉트에서 조건을 넣으면 기준을 나누는 GROUP이 필요없는 건가?
-> 프로젝션을 하기 전에 기본키인(학번, 학수번호)를 꼭 포함한다. (AVG 같은 통계함수 이용할 때만??)
- 과제에서 휴학생도 포함하라는 게 무슨 말인가 했으나 학생테이블을 Left Outer Join하라는 의미였다.
-> 그러면 모든 학생의 튜플이 표시되기 때문이다.
0.1 느낀 점
- 지난 주에 내주신 과제를 공들여서 한 덕분에 기프티콘을 받게 됐다.
- 매니저님과 교수님도 자세하게 피드백 해주셔서 수업을 이해하고 공부하는데 큰 도움이 됐다.
- 앞으로의 남은 기간에도 충분히 이해할 수 있도록 집중해서 학습해야겠다.
- 강의 내용에서 중요한 부분만 요약하여 공부하는 습관을 가져야겠다.
1. 1주차 세션 리뷰
1.0 ERD란?
- 아주 중요!
- Relationship Type의 특성: 매핑(일대일, 일대다, 다대다) / 참여(전체, 부분)
-> 등록하지 않은 학생(빨간 점)이 있으면 => 부분참여(단일선)
-> 학생은 지도에 전체 참여 => 전체잠여(이중선)
-> ERD는 개념적ERD(Classic Notation) / 논리적 ERD로 나뉜다.
1.1 논리적 ERD ( 확장된 IE 표기법, IDEF1X )
- 식별관계( 실선 ) / 비식별관계( 점선 ) 구분 가장 중요한 개념
Ex) 팀, 선수 테이블
- 선수 테이블에서 팀번호 + 백넘버를 해야 => PK
-> 팀번호는 선수 테이블에서 PK이자 FK
-> 팀 테이블의 번호(PK) - 선수 테이블의 팀번호(FK)
- 논리적 ERD의 공통점 (개념적ERD와 차이점)
-> (중요) 테이블에 FK를 명시적으로 표현한다. 개념적 ERD에는 FK가 없다.
-> 1(부모) : 다(자식)
-> 다대다 매핑 허용하지 않는다.
1.2 확장된 IE(Information Engineering) 표기법(MySQL)
- Crow's foot 표기법(까마귀 발자국)
- 작은 동그라미 부분참여, 안 쪽 vertical 바(person이 realation에 전체참여-mandatory ??) , 바깥 쪽 vertical 바(부분참여- optional )
- 지점에 속하지 않는 직원은 없다.
- PK속성: 노란 열쇠(PK), 주황 열쇠(PK/FK)
- Non-PK속성: 주황 마름모: FK, 파란 마름모(일반 속성), 속이 찬 하늘/ 주황: NotNull제약
1.3 IDEF1X (SqlDBM)
- 자식 테이블(일대다의 '다')에 작은 동그라미
- 식별관계(실선) / 비식별관계(점선)
- IE표기법과 다르게 아이콘이 없고 KEY를 구분하기에 명확하다.
- 마름모: 부분참여
- 자식이 부분/전체참여인지 구분하는 것이 중요하다.
- 다
- 개념적 설계(클래식 표기법)과 논리적 설계의 명확히 다른 점: "FK 유무"(논리적 설계에만 있음)
1.4 테이블 만드는 방법(MySQL)
new model -> name: testDB -> add diagram -> 모눈지 -> 테이블 클릭 -> name: offices
-> 속성: officeCode: int(PK) / name: varchar(45) , address: varchar -> 일대다 만들기 -> mandaty: NotNull / Null
... 순으로 만든다.
본 게시글은 프로그래머스의 "학교 밖에서 듣는 전공 필수SQL/DB Essentials" 강의 내용을 토대로 업로드 했습니다.
(코드리뷰 개선 과정)
https://programmers.co.kr/learn/courses/13484
'컴퓨터 과학 > [프로그래머스] SQL DB Essentials' 카테고리의 다른 글
Chapter 06 DML : 내장 함수와 갱신문 (0) | 2022.03.08 |
---|---|
Chapter 05 DML : 단일 테이블 검색문 (Part 2) (0) | 2022.03.06 |
[2주차] 강의노트 DDL & DML (0) | 2022.03.05 |
Chapter 04 DML : 단일테이블 검색문(Part 1) (0) | 2022.03.02 |
Chapter 03 스키마와 테이블 정의를 위한 명령문 (0) | 2022.02.28 |