본문 바로가기

데이터베이스7

트랜잭션(Transaction) 트랙잭션이란 특정 단위로 처리되는 하나 이상의 SQL 작업의 시퀀스이다. 트랜잭션은 독립적으로 실행되어야 하고 만약 트랜잭션 수행이 실패하면 실행결과는 트랜잭션의 의도대로 완전히 반영되거나 아니면 전혀 반영되지 않아야 한다. 이것이 DB에서 중요한 이유는 동시성 때문이다. 물론 모든 DB 작업을 동시에 처리하면 성능적으로는 가장 좋겠지만 데이터의 안정성을 보장할 수 없다. 예를 들면, 잔고가 10,000원인 계좌에 A가 1,000원을 입금하고 잔액을 확인하는 것과 B가 2,000원을 입금하고 잔액을 확인하는 작업이 동시에 이루어 졌다고 생각해보자. UPDATE 작업이 이루어지고 각자 잔액을 확인했을 때 A는 11,000이 아닌 13,000원을 조회하게 될 수가 있다. 만약 입금과 조회가 한 단위로 묶여 .. 2022. 12. 10.
Relational design theory 그전까지는 관계대수나 SQL을 통해 DB의 데이터들을 어떻게 다루는지에 대해 알아보았다. 해당 파트에서는 관계형 DB를 어떻게 효율적으로 설계할 수 있는지에 대한 내용을 다룰 것이다. 동일한 내용의 데이터를 담아도 테이블들이 어떻게 설계되는지에 따라 전체적인 구조가 크게 달라질 수도 있기 때문이다. Rel Design Overview 이 글에서는 대학 지원 정보와 관련된 데이터를 예시로 들면서 각 개념을 설명할 예정이다. Apply(SSN, sName, cName, HS, HScity, hobby) 대충 파악이 되겠지만, Apply에는 사회 보장 번호(SSN, PK), 학생 이름, 대학 이름, 고등학교 이름, 고등학교가 속한 지역, 학생의 취미 정보들이 담겨있다. 이때 다음과 같은 경우가 있다고 생각해보.. 2022. 11. 3.
SQL 3 Aggregation Aggreation 함수들은 데이터들을 정리해서 보여주는 기능을 한다. 다음과 같은 구조로 이뤄진다. 여기서도 이전과 동일한 데이터를 기준으로 설명이 진행된다. select avg(GPA) from Student; avg를 통해 학생들 GPA의 평균을 구할 수 있다. Student 테이블의 GPA attributes의 평균을 구하는 것이므로 쉽게 이해할 수 있다. select min(GPA) from Student, Apply where Student.sID = Apply.sID and major = 'CS'; min을 통해 CS 전공에 지원한 학생들의 GPA 중 가장 낮은 값을 구한다. 당연히 max는 최댓값을 구하는데 사용된다. select count(*) from College.. 2022. 9. 28.
SQL 2 Subqueries in WHERE clause Select 문은 fig 1-2처럼 구성이 되는데 또다른 Select문을 Where문 안에 위치 시킬 수 있다. 그리고 이것을 서브쿼리라고 한다. select sID, sName from Student where sID in (select sID from Apply where major = ‘CS’); 결과만 보면 전공을 CS로 선택한 학생들의 ID와 이름을 가져온다. 굳이 이렇게 하지 않고 일반적인 select 문으로 고쳐보면 다음과 같다. select distinct Student.sID, sName from Student, Apply where Student.sID = Apply.sID and major = ‘CS’; 여기서는 sID를 Student... 2022. 9. 23.