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 명령의 처리 속도가 향상된다. 쉽게 생각하면 책 안에 있는 특정한 부분을 찾고 싶은 경우, 본문을 처음부터 읽어나가기보다 목차나 색인을 참고해서 찾는 편이 효율적인데 인덱스가 이런 역활을 한다. 데이터베이스의 인덱스에는 검색 시에 쓰이는 키워드와 대응하는 데이터 행의 장소가 지정되어 있다. 인덱스는 테이블과는 별개로 독립된 데이터베..
원격 저장소를 기존에 연결된 지역 저장소 외에 다른 지역 저장소에서 사용하려면 원격 저장소에 담긴 내용 전체를 지역 저장소로 가져와야 된다. git clone 복사한 주소 붙여넣기 디렉토리명 원격 저장소를 복제하면 자동으로 지역 저장소와 원격 저장소가 연결된다. git remote -v명령으로 확인 가능 clone을 통해서 master 브랜치는 origin에 이미 연결되어 있기 때문에 git pull origin master 말고 git pull 명령어를 입력하면 된다. git pull 명령 전에는 최신 커밋을 합치기 전에 원격 저장소에 어떤 변화가가 있는지 먼저 살펴봐야 된다. 원격 브랜치에서 정보만 먼져 가져올 수 있다. 지역 저장소의 master 브랜치처럼 원격 저장소도 만들 때 기본으로 maste..