데이터베이스(8)
-
상품 테이블과 주문 테이블에 중복된 칼럼이 있는데 왜 그런거죠?
이번에는 웹 장바구니 미션을 진행했다. 장바구니에 물건을 담고, 이를 주문하는 프로세스를 개발하는 미션을 진행했다. 이러한 비즈니스 요구사항 속에서 구성했던 데이터베이스 테이블은 다음과 같다. 얼핏 보기에는 정규화가 안되어있는 모습을 볼 수 있다. orders_item 테이블을 살펴보면 total_price라는 컬럼이 존재한다. 해당 컬럼은 사실 orders_item 테이블의 quantity 컬럼과 product 테이블의 price 컬럼의 값을 곱하면 구할 수 있는 정보이다. 따라서 이는 정규화가 올바르게 되지 않은 모습을 알 수 있다. 그럼에도 불구하고 위와 같이 구성했던 이유는 상품의 정보가 언제든지 바뀔 여지가 있기 때문이었다. 만약 order_item에서 단순히 수량 정보만 가지고 있다면 나중에 ..
2023.06.07 -
데이터베이스(13), 트랜잭션
트랜잭션 1. 트랜잭션 개요 1) 개념 (1) 동시성 제어와 회복 대규모 데이터베이스를 수많은 사람들이 액세스하기에 동시에 동일한 부분이나 다른 부분을 액세스할 수 있다. 하지만 동일한 부분을 액세스하는 경우에는 문제가 야기될 수 있다.(race condition) 따라서 문제가 발생하는 것을 방지하기 위해 동시성 제어를 해야한다. 제대로 수행되는 것은 여러 개가 순차적으로 사용되는 결과와 동시에 수행된 결과는 동일해야한다. 회복은 데이터베이스를 사용하면서 여러 fail이 있을 수 있다. 예를 들면 전원이 나가는 경우가 이에 해당할 수 있다. 제대로 끝나지 않는 경우에는 이를 일관된 상태로 되돌려줘야한다. 즉, 수행되다가 멈추면 수행되기 전 상태로 되돌려줘야한다. 또한 끝났다고 선언한 것은 제대로 끝난 ..
2023.02.05 -
데이터베이스(10), 릴레이션 정규화
릴레이션 정규화 1. 정규화 개요 원래의 릴레이션에는 중복이 있기에 이를 작은 릴레이션으로 분할한다. 이때 함수적 종속성을 사용한다. 좋은 관계 데이터베이스 스키마를 설계하는 목적 정보가 중복되면 갱신이상이라는 주요한 문제가 발생한다. 어떤 시스템을 개발할 때에는 정확하게 구현하는 것부터 시작해서 퍼포먼스를 고려해야한다. 데이터 베이스 설계에서도 기능을 요구사항대로 구현할 수 있는지 따지고, 그 뒤 성능에 대해 고려한다. 갱신 이상(update anomaly) (1) 수정 이상(modification anomaly) (2) 삽입 이상(insertion anomaly) (3) 삭제 이상(deletion anomaly) 회사의 방침이 바뀌어서 부서가 3개나 1개만 속할 수 있다고 하면 스키마를 바꿔야한다. ..
2022.12.20 -
데이터베이스(9), 물리적 데이터베이스 설계
물리적 데이터베이스 설계 물리적 데이터 베이스 설계란? 1. 보조 기억 장치 블록은 저장 장치와 메인 메모리 사이에서 데이터를 주고받는 단위를 의미한다. 전형적인 블록 크기는 시대에 따라 달라진다. 최근에는 4kb, 16kb, 32kb를 사용하기도 한다. cf) 캐릭터 장치(문자 장치): 이는 한문자마다 데이터를 전송하는 장치를 의미한다. 대표적으로 키보드가 있다. 저장 장치의 계층 구조 cpu는 디스크에 있는 데이터를 직접 쓰거나 읽을 수 없다. 디스크에 있는 블럭 단위의 데이터를 주기억 장치와 주고받는 식으로 진행한다. 따라서 read, update, write하는 순서로 데이터를 작성한다. 백업을 위해선 싼 가격의 저장 장치인 자기테이프를 사용해 이를 저장한다. 자기디스크 자기 물질: 마그네틱 물질..
2022.12.14 -
데이터베이스(5), SELECT문
SELECT 문 1. SELECT 문 1) SELECT 문은? 관계 대수의 실렉션, 프로젝션, 조인, 카티션 곱 등을 결합한 것을 의미한다. 관계 데이터베이스에서 가장 자주 사용된다. SELECT 절과 FROM 절은 필수적인 절이며 나머지는 선택적으로 사용할 수 있다. SELECT 절 뒤에 어트리뷰트가 들어가서 이는 관계 대수의 프로젝션을 의미한다. WHERE 절 뒤에 조건이 들어가는데 이는 관계 대수의 셀렉션에 의미한다. 이는 튜플에 대한 조건이다. 조건을 작성할 때 중첩 질의를 사용할 수도 있다. GROUPBY는 그룹화를 위해 사용한다. HAVING 절은 그룹이 만족시켜야하는 조건을 명시한다. 이는 그룹에 대한 조건이다. ORDER BY 절은 정렬하기 위해 사용된다. ex) SELECT 3 x 3;을..
2022.10.21 -
데이터 베이스(4), SQL 개요 및 데이터 무결성
SQL 개요 1. SQL 개요 1) SQL 개요 다양한 상용관계 DBMS마다 지원하는 SQL의 기능에는 다소 차이가 있을 수 있다. 관계 데이터 모델은 집합을 기반으로 두고 있어 테이블 내에 동일한 튜플을 허용하지 않지만 SQL은 이를 허용한다. 2) SQL의 발전 역사 SQL 2 버전을 많이 사용한다. SQL 3 버전은 SQL 2 버전보다 더 많은 기능이 추가되었다. 3) SQL 특징 SQL은 비절차적 언어(선언적 언어)이므로 사용자는 자신이 원하는 바만 명시하며, 원하는 것을 처리하는 방법은 명시할 수 없다. 관계 DBMS는 사용자가 입력한 SQL문을 번역하여 사용자가 요구한 데이터를 찾는데 필요한 모든 과정을 담당한다. 자연어에 가까운 구문을 사용하여 질의를 표현할 수 있다. 두 가지 인터페이스가 ..
2022.10.21