1. 데이터 모델링의 이해
데이터 모델리은 추상화, 단순화, 정확화의 의미를 가진다.
데이터 모델이 수시로 변경되고, 프로세스의 작은 변화가 애플리케이션과 데이터 베이스에 중대한 변화를 일으키는 가능성을 줄인다. → 비유연성
엔터티 = 테이블과 비슷한 의미
이름을 부여하는 방법은 자연어로 간결하고 명확하게 한다.
3~4차 까지 정규화하는 경우가 없어서, 답이 아닐 확률이 높다.
데이터가 PK에 따라서 같이 변화하는 값이 존재한다면 2차 정규화가 필요하다고 볼 수 있다.
참여자 수가 나오면 무조건 관계차수 선택
중복의 가능성이 있는 항목은 식별자로 사용할 수 없다.
주식별자 : 대표성을 가지며 여러 인스턴스중 유일하게 구분 가능
인스턴스 : row
보조식별자 : 유일하게 구분할 수 있으나, 대표성을 가질수는 없다.
본질식별자 : 집합을 명확하게 설명할 수 있고 업무적으로 의미가 부여된 식별자
외부식별자 : 상속이 되어 정의된 식별자
속성이 가질 수 있는 값의 범위를 지칭하는 용어는 → 도메인
2. 데이터 모델과 SQL
정규화 → 중복속성을 제거한다. 용량을 최소화 한다.
정규화 → 조회성능을 보장할 수는 없다.
반정규화 → 조회성능을 항상 향상시키는 것은 아니고, 때로는 정규화에 의해 성능이 향상될 수도 있다.
일반적으로 정규화 수행시 데이터 성능이 향상된다.
조인 → 식별자를 상속하고, 상속된 매핑키로 활용하여 데이터를 결합하는 것을 말한다.
조인키 → 다른 테이블에서 같은 항목을 가지고 테이블을 결합시키는 것
관계 → 식별자를 상속시키고 해당 식별자를 매핑키로 활용해 데이터를 결합해보겠다는 것
식별관계 → 강한관계 , 비식별관계 → 약한 관계
함수 종속성이란 어느 한 값을 따라가면 1대1로 매핑이 된다.
학번을 넣으면 지도교수를 바로 알수 있는 그런 관계
더 쪼갤게 없는 상태가 되는 상태가 고차원 정규화가 된 상태
NULL은 알수없는 값이라고 생각하면 된다.
NULL == NULL 은 true가 안되는 것
집계함수에서는 NULL값은 그냥 제외 시킨다.
인조식별자는 대첼로 본질식별자가 복잡한 구성을 가질 떄 만들어진다.
인조식별자를 사용하면 중복데이터를 막기 어려워진다.
인조식별자를 사용하면 본질식별자를 사용할 때와 비교하여 추가적인 인덱스가 필요해진다.
3. SQL 기본
Update - 입력한 정보중에 변경이 필요하여 정보를 수정할 때 사용한다.
DISTINCT 옵션을 통해 중복된 데이터를 제거할 수 있다.
WHERE 절은 필수가 아니므로 생략이 가능하다.
서브쿼리는 SELECT절에 사용할 수 있다.
집계함수 (avg)가 있다면 group by가 필요하다
집계함수에서는 null은 제외하고 계산이 된다.
그런데 직접 연산할 떄는 null 이된다. + 같은거
오라클에서 ‘’으로 입력하면 null이 입력된다.
group by절이 있다면 반드시 having절이 있어야 된다.
group by를 썻다면 함수명이 그대로 와야된다. ALIAS명을 사용할 수 없다.
group by는 having절로 조건을 건다.
where절은 group by 이전에 조건을 설정하는 것이고 having절은 group by 이후에 조건을 설정하는 것이다.
case location when ‘new york’ then ‘east’ else ‘etc’
case절에 is는 쓰지 않는다.
8번째 자리에서 4개를 출력해라.
left outer join 이지만 on절에 있는 것은 빼는 게 맞다
oracle문법에서는 outer join했을 때 +가 붙지 않은 곳이 기준이다.
ANSI SQL에서 (+)가 ON절에 가야 된다.
SET OPERAATOR중에서 수학의 교집합과 같은 역할을 하는 것은 INTERSECT이다.
UNION을 하면 중복이 제거가 된다.
START WITH 부터 먼저 봐야된다.
SIBLINGS는 같은 레벨에서 묶어 주는 역할을 한다.
계층형 질의문
RATIO TO REPORT는 합에 대한 비율을 말한다.
NTILE은 같은 크기로 쪼개는 개념
CUM_DIST 누적 비율
단일 행 서브쿼리는 실행결과가 한 건이하 , 그래서 = > 로 사용
다음 칼럼에서 이전 칼럼의 값이 한행 밑으로 따라 나오는 걸 LAG, LEAD는 다음행이 나온다.
CASCADE는 연관된 객체를 모두 삭제하는 SQL
INTERSECT에 대한설명..
BARKER 표기법
# - PK
* - NOT NULL
O - NULLABLE
테이블 명은 가능한 단수명을 권고한다.
구조를 변경할 때는 ALTER를 사용
ID로 STRING을 넣어도 AUTO CASTING이 된다.
TOP(3) → 순위 3위 까지
WITH TIES → 동일한 값 같이 출력
4. 관리 구문
날짜에서는 MIN은 과거 MAX는 최근데이터이다