책/SQL 첫걸음

정규화란 DB의 테이블을 규정된 올바른 형태로 개선해 나가는 것이다. DB의 설계 단계에서 행해진다. 기존 시스템을 재검토할 때 정규화하는 경우도 있다. 정규화 (쇼핑물 사이트의 주문처리 시스템) 상품은 상품코드를 이용해 다루어 보자 주문번호 날짜 성명 연락처 주문상품 1 1/1 박준용 010-xxxx 0001 OO 1개, 0002 XX 10개 2 2/1 김재진 010-xxxx 0001 OO 2개, 0002 XX 3개 3 2/5 박준용 010-xxxx 0001 OO 3개, 0003 AA 1개 ‘0001 OO 1개’은 상품코드가 0001인 상품 OO를 1개 주문 했다는 뜻이다. 대충 만들어진 데이터를 정규화해 DB테이블로 만들어보자 정규화의 순서는 이전의 DB 기술자들이 고안해 정리한 것이다. 정규화 하는..
DB는 트랜잭션이라는 기능을 제공한다. INSERT나 UPDATE 명령으로 데이터를 추가, 갱신할 때도 트랜잭션 기능을 사용한다. START TRANSACTION COMMIT ROLLBACK 지금까지 특별히 의식할 필요가 없던 이유는 자동 커밋이라 불리는 기능이 동작했기 때문이다. 트랜잭션 정규화에 의해 분할된 주문 테이블과 주문상품 테이블의 관계를 생각해보자 주문 테이블에 행이 존재한다면 주문상품 테이블에는 적어도 하나의 행이 존재해야 한다. 그렇지 않으면 주문한 상품이 없는데 주문이 된 상태가 된다. 테이블 사이에는 의존관계가가 존재한다. 발주처리 주문이 발생했을 때 생각해보자 발주처리에 관한 것으로 먼저 주문번호를 지정해야 한다. 기존 주문과 구분되는 주문번호를 발행하는 처리가 필요하다. 자동 증가..
테이블 집합 연산에서는 세로(행) 방향으로 데이터가 늘어나거나 줄어드는 계산을 했다. join을 통한 결합에서는 가로(열) 방향으로 데이터가 늘어나는 계산이 된다. 보통 데이터베이스는 하나의 테이블에 많은 데이터를 저장하지 않고 몇 개의 테이블로 나누어 저장한다. 여러 개로 나뉜 데이터를 하나로 묶어 결과를 내는 방법이 테이블 결합이다. 결합을 이해하는 동시에 기본이 되는 개념이 집합론의 ‘곱집합’이다. 곱집합과 교차결합 곱집합은 합집합이나 교집합처럼 집합의 연산 방법 중 하나이다. 두 개의 집합을 곱하는 연산 방법으로 ‘적집합’ 또는 ‘카티전곱(Cartesian product)’라고 불린다. 집합 X 는 {A, B, C} 집합 Y는 {1, 2, 3}이라는 세 개의 요소를 가진다. 집합 X와 Y의 곱집합..
집합 연산 관계형 모델에서의 관계형은 수학 집합론의 관계형 이론에서 유래했다. 데이터베이스의 데이터를 집합으로 간주해 다루기 쉽게 하자는 것 SQL과 집합 원 안에 적혀있는 숫자가 요소에 해당한다. 데이터베이스에서는 테이블의 행이 요소에 해당한다. 행은 여러 개의 열로 구성되는 경우도 있으므로, 수치 상으로는 복수의 값이 존재한다. 집합의 요소라는 측면에서 보면 하나의 행이 곧 하나의 요소가 된다. SELECT 명령을 실행하면 데이터베이스에 질의하며 그 결과 몇 개의 행이 반환된다. 반환된 결과 전체를 하나의 집합이라고 생각하면 된다. UNION으로 합집합 구하기 2개의 집합A,B로 A = {1, 2, 3}, B = {2, 10, 11} 이라는 세개의 요소가 있을 때 2라는 요소는 A,B집합에 모두 존재..
‘색인’이라고도 불리는 인덱스는 데이터베이스 객체 중 하나이다. 테이블에는 인덱스를 작성할 수 있다. 인덱스 인덱스의 역활은 검색속도의 향상이다. ‘검색(혹은 탐색)’이란 SELECT 명령에 WHERE 구로 조건을 지정하기도 하고 그에 일치하는 행을 찾는 일련의 과정을 말한다. 테이블에 인덱스가 지정되어 있으면 효율적으로 검색할 수 있어 WHERE로 조건이 지정된 SELECT 명령의 처리 속도가 향상된다. 쉽게 생각하면 책 안에 있는 특정한 부분을 찾고 싶은 경우, 본문을 처음부터 읽어나가기보다 목차나 색인을 참고해서 찾는 편이 효율적인데 인덱스가 이런 역활을 한다. 데이터베이스의 인덱스에는 검색 시에 쓰이는 키워드와 대응하는 데이터 행의 장소가 지정되어 있다. 인덱스는 테이블과는 별개로 독립된 데이터베..
uhanuu
'책/SQL 첫걸음' 카테고리의 글 목록