티스토리 뷰
I. 데이터 모델링의 이해
1. 데이터 모델링의 이해
3. 데이터 모델링 유의점 헷갈리는 거
- 비유연성 : 프로세스와 데이터의 정의를 분리
- 비일관성 : 데이터와 데이터 간 상호 연관 관계 명확히 정의 - 프로세스와 테이블의 연계성을 낮춰야 함
5-6. 데이터베이스 스키마 구조 헷갈리는 거
- 외부 스키마 : 여러 사용자 관점, View (외뷰..로 외우자)
- 개념 스키마 : 통합 사용자 관점, 모든 사용자 관점
12. 발생시점 기준의 엔티티 분류 : 기본 > 중심 > 행위 (기중행)
30. 비식별자 관계, 식별자 관계
| 식별자 관계 | 비식별자 관계 |
| 강한 연결관계 | 약한 연결관계 |
| 자식 주식별자에 포함 | 자식 일반속성에 포함 |
| 실선 | 점선 |
| 반드시 부모 엔터티에 자식이 종속됨 자식 주식별자 구성에 부모 주식별자 포함 필요 상속받은 주식별자 속성을 타 엔터티에 이전 필요 조인 관계 최소화 |
약한 종속 관계 자식 주식별자 구성은 독립적 자식 주식별자 구성에 부모 주식별자 부분 필요 상속받은 주식별자 속성을 타 엔터티에 차단 필요 부모쪽 관계참여는 선택관계 |
2. 데이터 모델과 SQL
35. 정규형, 정규화
정규화 : '논리 데이터 모델'의 일관성 확보, 중복 제거
| 제 1 정규형 | 제 2 정규형 | 제 3 정규형 |
| 속성 중복 X, 분해되지 않는 상태 | 일반속성은 주식별자 전체에 종속 | 일반속성 간 서로 종속 X |
| 원자성 충족 | 완전 함수적 종속 상태 | |
| 부분 함수적 종속 X | 이행적 함수 종속 X | |
| 한 튜플안에 여러개가 들어가있는경우 (쉼표로 구분되어 여러개가 들어간다던지) | 기본키가 아닌 다른 속성에 종속된 상태를 부분 함수적 종속이라고 함 | X를 통해 Y를 알고, Y를 통해 Z를 알 수 있어서 X->Z 가 성립할 때 이를 이행적 함수 종속 상태라고 함 |
49. NULL
- NULL + 숫자 = NULL
- NULL (비교연산자) 숫자 = Unknown
- NVL/ISNULL : NULL을 치환할 때 사용
- 레코드 간 연산 중 NULL : 무시 / 컬럼간 연산 중 NULL : NULL
II. SQL 기본 및 활용
1. SQL 기본
1. SQL 명령어들 총정리
| 명령어 종류 | 명령어 |
| DML(Manipulation 조작) | SELECT INSERT UPDATE DELETE |
| DCL(Control) | GRANT REVOKE |
| DDL(Definition) | CREATE ALTER DROP RENMAE |
| TCL(Transaction Control) | COMMIT ROLLBACK |
11. 공백 문자('') 처리 in Oracle : NULL, in SQLServer : ''(그대로)
14,27. GROUP BY에서는
- ALIAS(별칭) 사용 불가
- NULL도 집계에 포함
20. NULL 관련 함수
| 함수명 | 설명 |
| NVL/ISNULL(표현식1, 표현식2) | 표현식1 이 NULL이면 표현식2의 값을 출력 |
| NULLIF(표현식1, 표현식2) | 표현식1,2가 서로 같으면 NULL, 다르면 표현식1 |
| COALESCE(표현식1, 표현식2, ...) | NULL이 아닌 최초의 표현식, 다 NULL이면 NULL |
37. 순수 관계 연산자 : SELECT, PROJECT, JOIN, DIVIDE (셀프조디)
41. A INNER JOIN B INNER JOIN C ON ~~~~~ (X)
A INNER JOIN B ON ~~~~~ INNER JOIN C ON ~~~~~ (O)
43. TABLE 간 JOIN 조건이 없으면 : CROSS JOIN 발생

49. (+) JOIN : 왼쪽에 붙으면 RIGHT OUTER, 오른쪽에 붙으면 LEFT OUTER
2. SQL 활용
54. UNION 에 ORDER BY는 마지막 줄에 한 번만 사용 가능
57. SQL 집계 함수
- ROLLUP : 전체 합계까지 누적되는 게 특징

- CUBE : 모든 조합

- GROUPING SETS : 소그룹에 대한 합계만 (조합하지 않음)

- GROUPING : 집계결과에 대해 1을 가지므로, CASE WHEN으로 1일 때 NULL을 변경하는데 사용
70. EXISTS, NOT EXISTS
SELECT 1 ? SELECT가 불필요해서 그냥 넣는 값이라고 함
72. 연관/비연관 서브쿼리
| 연관 | 비연관 |
| 서브쿼리가 메인쿼리 컬럼을 가지고 있는 형태 | 서브쿼리가 메인쿼리 컬럼을 가지고 있지 않음 |
| 메인쿼리의 조건을 확인 목적 | 메인쿼리에 값을 제공하기 위한 목적 |
지옥의 서브쿼리... 모르겠다;;
3. 관리 구문
99. CONSTRAINT
- ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] [제약조건]
- CREATE 내에서 CONSTRAINT [제약조건명] [제약조건]
108. 외래키의 참조 무결성 제약 :외래키 값은 NULL이거나 참조하는 릴레이션의 기본키 값과 동일해야 한다는 제약
113. 참조 동작
| DELETE/MODIFY ACTION | 설명 |
| CASACADE | MASTER 삭제 시 CHILD 같이 삭제 |
| SET NULL | MASTER 삭제 시 CHILD 해당 필드 NULL |
| SET DEFAULT | MASTER 삭제 시 CHILD 해당 필드 DEFAULT |
| RESTRICT | CHILD에 PK가 없는 경우만 MASTER 삭제 허용 |
| NO ACTION | 참조무결성을 위반하는 삭제/수정 액션을 취하지 않음 |
| INSERT ACTION | 설명 |
| AUTOMATIC | MASTER 테이블에 PK가 없는 경우 MASTER PK 생성 후 CHILD 입력 |
| SET NULL | MASTER 테이블에 PK가 없는 경우 CHILD 외부키를 NULL로 |
| SET DEFAULT | MASTER 테이블에 PK가 없는 경우 CHILD 외부키를 DEFAULT로 |
| DEPENDENT | MASTER 테이블에 PK가 존재할 때만 CHILD 입력 허용 |
| NO ACTION | 참조무결성을 위반하는 입력 액션을 취하지 않음 |
119. DELETE, TRUNCATE, DROP 비교하기
| DROP | TRUNCATE | DELETE |
| DDL | DDL(일부 DML 성격) | DML |
| AUTO COMMIT(ROLLBACK X) | AUTO COMMIT(ROLLBACK X) | USER COMMIT(ROLLBACK O) |
| 정의까지 다 삭제 | 뼈대는 남김(초기 상태로) | 삭제해도 사용한 공간은 남김(데이터만) |