책뿌수기 - 기초가 든든한 데이터 베이스 12

Ch 12. 정규화 Section 1. 이상 현상 anomaly : 불필요한 NULL이 삽입되거나, 연쇄 삭제, 데이터 일관성이 깨지는 현상 1.1 삽입 현상(insertion anomaly) 데이터 삽입 시 특정 열에 해당하는 값이 없어서 필요하지 않은 NULL을 강제로 입력해야 하는 현상 예) 신규 회원이 가입 되어 회원 정보를 넣지만 주문 정보가 없어 주문 정보를 NULL로 채워야 하는 상황 1.2 삭제 이상(delete anomaly) 데이터 삭제 시 유용한 다른 데이터까지 함께 삭제되는 현상 예) 주문을 취소했는데 회원 정보까지 사라짐 1.3 수정 이상(update anomaly) 중복 데이터중에서 일부만 수정되어 데이터의 불일치 문제가 불생하는 현상(inconsistency) Section 2. 정규화 normalization 이란 anomaly를 테이블 설계를 수정해 정상적으로 만드는 과정 관계형 데이터베이스에 저장될 구조의 중복을 최소화 하는 과정 이렇게 표현된 테이블이 어떤 특정의 제약 조건ㅇㄹ 만족하면 그 제약조건으로 정의된 정규형에 속하게 된다. 2.1 제 1 정규형 하나의 셀에는 하나의 값만 저장할 수 있다. 이 과정에서 기본키가 변경 될 수 있음 2.2 제 2 정규형 기본키 열과 기본 키가 아닌 열 간의 종속 곤계가 있을 경우 이를 별도의 테이블로 분리하는 과정 부분 종속을 없애는 과정 제 1 정규형이고, 키에 속하지 않는 속성 모두가 기본키에 완전 함수 종속이면, 제 2 정규형이다. 2.3 제 3 정규형 기본 키가 아닌 열끼리 종속 관계가 있을 경우 이를 분리하는 과정 제 2 정규형이고, 키에 속하지 않는 모든 속성들이 기본키에 이행적함수 종송이 아닐 때 제 3정규형에 속한다. 2.4 정규형 요약 DB 이론으로 제시된 정규형 필요시 참고 2.5 비정규화 정규화 이후에 성능 때문에 고려해 보는 것 분리된 테이블을 성능 향상(Join을 피하기 위해)을 위해 다시 합쳐야 하는 경우

12월 4, 2018 · Jaejin Jang

책뿌수기 - 기초가 든든한 데이터 베이스 8

Ch 8. 데이터 검색 Section 1. 기본적인 SELECT 명령문 SELECT [DISTINCT] 열_이름 ~ FROM 테이블_이름 [WHERE 조건 [중첩질의]] [GROUP BY 열_이름[ ]] [HAVING 조건] [ORDER BY 열_이름 ~ [ASC|DESC]]; HAVING 절은 GROUP BY 절의 결과로 나내는 그룹을 제한하는 역할을 한다 Section 2. WHERE 절을 이용한 조건 검색 NOT 연산자는 속도가 느리므로 가급적 다른 연산자 사용을 권장 사이값 검색 : BETWEEN A AND B IN, NOT IN LIKE 연산자 : 문자 패턴 매칭 % : 0개 이상의 문자열 대체 [] : 지정된 범위의 한개 문자 대체 [^] : 지정된 범위에 없는 한 개 문자 대체 _ : 임의의 한개 문자 대체 NULL을 찾는 것은, IS NULL이나 IS NOT NULL 연산자를 사용한다. Section 3. ORDER BY절을 이용한 정렬 기본값은 ASC로 오름차순이다. NULL은 오름차순 일 경우 가장 마지막에 표시되는 값이다. SELECT 절에 나온 열의 위치를 이용해 정렬할 수도 있다. EX) ORDER BY 2 Section 4. 서브쿼리 하나의 SQL 명령문 처리 결과를 다른 SQL 명령문에 전달을 필요로 할 때 사용 예) 회원 테이블에서 송혜교와 등급이 동일한 회원들의 회원명, 등급, 주소를 검색하라 우선 서브쿼리를 이용해 송혜교의 등급을 검색한다 이후에 메인쿼리에서 전달받은 등급(송혜교 등급)과 동일한 회원의 정보를 검색한다 서브쿼리에는 ORDER BY 절을 사용할 수 없다 4.1 단일 행 서브쿼리 하나의 행만 메인쿼리에 반환하는 것 4.2 다중 행 서브쿼리 IN, NOT IN, EXISTS 연산자로 해결 Section 5. 집단함수를 이용한 요약 정보의 검색 검색된 행에서 요약된 내용을 필요로 할 때 5.1 집단함수 COUNT(), SUM(), AVG(), MAX(), MIN() SELECT나 HAVING 절에서 사용할 수 있다 5.2 그룹화, GROUP BY 5.3 그룹검색 조건, HAVING Section 6. 여러 개 테이블에서의 데이터 검색 6.1 조인(Join) 하나의 SQL 명령문으로 여러 테이블에 저장된 데이터를 한 번에 검색 테이블을 연결하기 위해서는 공통의 값, 외래키가 있어야 한다. N개의 테이블을 조인하기 위해서는 적어도 N-1 개의 조인 조건절이 필요하다. 열이름 앞에 테이블 이름을 지정하면, 구문분석시간이 줄어들어 SQL 처리 성능이 향상된다.

12월 4, 2018 · Jaejin Jang

12월 초 근황

으아~ 벌써 12월이라니, 시간 정말 빠르네요 새 직장에 오면서 고민도 하고 적응도 하느라 벌써 시간이 이렇게나 흘렀네요 저번주 주말에는 고향집에 내려갔다 왔어요. 참 살고싶은 곳인데 여건이 안되네요 기회도 안따라주고 우선은 있는 곳에서 열심히 하려고 합니다 요즘에는 공부좀 하고, 기록으로도 남겨야 겠다 싶어서 책보고 공부한 내용을 조금씩 올리는 편이에요 제가 글로 배우는 편이라 ㅋㅋ 책을 여러권 샀는데 너무 이론에만 치중하는거 같아서 우선 있는 책들을 다 끝내고 실전으로 연습해볼까해요 오픈소스 프로젝트 찾아서 참여해 보려고 합니다 근데 끝내야 될 책들이 꽤 있어요. 공부하고 싶은 거도 많아서 ㅎㅎ 우선은 DB 끝내고 네트워크랑 클라우드쫌 공부해보려고 합니다 그리고 딥러닝 스터디에 참가하려고 해요 계획은 거창한데 잘 지킬수 있을지 모르겠네요 한순간의 열정보다는 길게가는게 더 중요한거 같아요 지금 세운 목표에 집중해 보려고요 이글을 읽는 모두 화이팅입니다^^" ...

12월 4, 2018 · Jaejin Jang

책뿌수기 - 기초가 든든한 데이터 베이스 7

인용하는 그림은 다양한 곳에서 가져왔음을 밝힙니다 Ch 7. 데이터 관리 Section 1. 데이터 입력 INSERT INTO 테이블_이름 [열_이름 ~] VALUES (값 ~); 1.1 테이블에 데잍를 직접입력하는 방법 ...

11월 29, 2018 · Jaejin Jang

책뿌수기 - 기초가 든든한 데이터 베이스 6

인용하는 그림은 다양한 곳에서 가져왔음을 밝힙니다 Ch 6. 테이블 관리 Section 1. 테이블 생성 1.1 데이터 형식을 사용한 테이블 정의 CREATE TABLE 테이블이름 ( 열_이름 데이터 형식 [NOT NULL, UNIQUE, DEFAULT, CHECK ~], [PRIMARY KEY(열_이름)], [FOREIGN KEY(열_이름) REFERENCES 테이블_이름(열_이름)] ); ...

11월 29, 2018 · Jaejin Jang

책뿌수기 - 기초가 든든한 데이터 베이스 5

인용하는 그림은 다양한 곳에서 가져왔음을 밝힙니다 Ch 5. SQL Server 설치 및 예제 데이터 베이스 구축 Section 2. 예제 데이터베이스 구축 데이터베이스는 시스템 DB와 사용자 DB로 나뉜다. 시스템 데이터베이스 역할 master 데이터베이스 시스템 정보, 초기값, 설정 기록 tempdb 데이터베이스 임시 테이블, 임시 저장 프로시저, 임시 저장공간 model 데이터베이스 생성되는 DB에 대한 템플릿 msdb 데이터베이스 SQL Server 에이전트에서 알림과 작업 예약에 사용 ...

11월 29, 2018 · Jaejin Jang

책뿌수기 - 기초가 든든한 데이터 베이스 4

인용하는 그림은 다양한 곳에서 가져왔음을 밝힙니다 Ch 4. 관계 대수 Section 1. 관계 대수 관계 대수는 릴레이션을 처리하는 연산의 집합 관계 대수의 피연산자는 릴레이션 연산 결과도 릴레이션 원하는 정보를 유도하는 절차적 언어 ...

11월 28, 2018 · Jaejin Jang

책뿌수기 - 기초가 든든한 데이터 베이스 3

인용하는 그림은 다양한 곳에서 가져왔음을 밝힙니다 Ch 3. 관계 데이터 모델과 제약조건 Section 1. 관계 데이터 모델 관계 데이터 모델(relation data model) 집합론과 논리 분야에 근거해 튼튼한 이론적 토대를 가지고 있다. 널리 사용되는 모델이다. 1.1 릴레이션 개념 ...

11월 28, 2018 · Jaejin Jang

책뿌수기 - 기초가 든든한 데이터 베이스 2

인용하는 그림은 다양한 곳에서 가져왔음을 밝힙니다 Ch 2. 데이터 모델 Section 1. 데이터 모델 1.1 데이터 모델의 개념 데이터베이스의 구조를 단순화, 추상화하여 체계적으로 표현하는데 사용되는 도구 1.2 데이터 모델의 구성요소 ...

11월 27, 2018 · Jaejin Jang

백준알고리즘 1110번 - 더하기 사이클

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include <iostream> #pragma warning(disable:4996) using namespace std; int main(void) { int num, tmp, cnt = 0; cin.tie(NULL); ios_base::sync_with_stdio(false); #ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif cin >> num; tmp = num; do { tmp = ((tmp % 10) * 10) + (tmp%10 + tmp/10)%10; cnt++; } while (tmp != num); cout << cnt; #ifndef ONLINE_JUDGE fclose(stdin); fclose(stdout); #endif return 0; }

11월 26, 2018 · Jaejin Jang