본문 바로가기

Database

(8)
MySQL과 모바일 웹으로 만나는 데이터베이스의 정석 (1) 1. 서론 naver edwith에서 부산대학교 김연정 교수님의 데이터베이스 이론 강의와 함께 MySQL과 모바일 웹으로 만나는 데이터베이스의 정석 (박성진) 책을 같이 공부했다. 전자인 인터넷 강의는 100% 이론 강의이며 후자인 책의 경우는 절반은 실습, 절반은 이론으로 이루어져 있다. 블로그에 정리한 이론 내용은 모두 인터넷 강의의 내용이며, 책의 내용은 실습과정만 기록하려고 한다. 쓸데없는 서론이긴 한데 아무튼 이제 MySQL을 가지고 실습을 진행한다는 이야기다. MySQL 설치에 관한 글은 따로 작성하지 않을 것이며 딱 한가지 다른 사람들에게 말하고 싶은 것은 아래 두 가지 설치 버전(웹 설치, 설치 파일 설치) 중 아래 것으로 다운받아야 한다는 것이다. windows10의 경우 밑에 것을 다운..
[E-R Diagram, Weak Entity Set] SQL 중급 (edwith 데이터베이스 강의 - 부산대학교 김연정 교수님) 1. E-R Diagrams 기본 골격 E-R model을 Diagram으로 표현하는 방법을 배울 것인데, 가장 기본이 되는 구조는 다음과 같다. 그림에서 instructor 개체 집합과 student 개체 집합이 각각 세 가지 속성을 가지고 있고, 둘 사이에 advisor라는 관계 집합을 가지고 있다고 보면 된다. 속성 중 primary key를 갖는 속성엔 밑줄이 그어져 있는 것도 확인할 수 있다. 속성 표현 (상세) 위의 instructor 개체 집합은 앞에서 배웠던 Composite, Multivalued와 같은 다양한 형태의 속성을 포함하고 있다. name의 경우 Composite Attribute로 first_name, middle_initial, las_name으로 분할할 수 있다. 또한 a..
[E-R model, Entity, Relationship, Attribute] SQL 중급 (edwith 데이터베이스 강의 - 부산대학교 김연정 교수님) 지금부터는 E-R model(개체-관계 모델)을 통해 데이터베이스 스키마를 설계하는 방법에 대해 살펴보도록 한다. 1. Modeling 데이터베이스는 개체(entity)들의 집합과 개체들 간의 관계(relationship)로 모델링할 수 있다. 개체는 다른 개체와 구별되는 하나의 개체이다. 예를 들어 사람이나 책처럼 구체적인 것과 수업, 비행기예약과 같은 추상적인 것이 개체가 될 수 있다. 2. 개체(entity) 개체는 속성(attrubute)을 가지고 있다. 속성은 각 개체 집합의 구성원들이 가지는 특징을 표현해준다. 어떤 개체의 속성들의 일부는 그 개체를 고유하게 식별할 수 있게 도와주기도 한다. 개체 집합은 같은 특성을 가지고 있는 같은 타입의 개체들의 집합이며, 개체 집합은 서로 중첩될 수도 있..
[JDBC Programming] SQL 중급 (edwith 데이터베이스 강의 - 부산대학교 김연정 교수님) 1. JDBCB 사용 준비 JDBC 패키지 import하기 코드에는 나와있지 않지만 JDBC 관련 패키지를 사용하기 위해서 import 해야한다. JDBC 드라이버 로드하기 데이터베이스에 접속하기 위해서는 드라이버를 적재해야 하는데 JDBC를 지원하는 데이터베이스 제품은 자바 프로그램에서 데이터베이스로 접근할 수 있게 해주는 JDBC 드라이버를 제공한다. Class.forName ("oracle.jdbc.driver.OracleDriver"); Connection 객체 생성 connection 객체 생성하기 위해 참조 변수(conn) 하나를 선언하고 DriverManager.getConnection 메소드를 사용해서 객체를 하나 생성한다. 이때 세 개의 매개변수를 가진다. "jdbc:oracle:thin..
[응용프로그램 인터페이스 JDBC, ODBC] SQL 중급 (edwith 데이터베이스 강의 - 부산대학교 김연정 교수님) 1. Accessing SQL From a Programming Language SQL은 범용 응용프로그램과 함께 사용되어지는데, 강력하다고 하는 SQL이 독립적으로 사용되지 않는 이유는 무엇일까에 대해 이야기 하고자 한다. SQL은 선언적 언어로, 어떤 데이터를 필요로 하는지에 대해서만 기술하고 데이터를 어떻게 가져오는지에 대한 기술은 없다(비절차적 언어). SQL는 이렇게 사용하기는 용이하지만 모든 질의를 다 표현할 수는 없다. 즉 C와 JAVA와 같은 프로그래밍 언어로만 표현할 수 있는 질의가 존재한다. 따라서 SQL 표현할 수 없는 질의를 작성하기 위해 더 강력한 프로그래밍 언어에 SQL을 내장시켜야 한다. 또한 보고서 출력, 사용자와의 상호작용, 질의 결과를 GUI로 전달하는 등의 작업은 SQL..
[Built-in Data Types in SQL] SQL 중급 (edwith 데이터베이스 강의 - 부산대학교 김연정 교수님) 1. Built-in Data Types in SQL 모두 비교 연산과 산술 연산이 가능하다. Type Information Example date 연, 월, 일 순으로 구성된 날짜를 저장 '2005-7-27' time 그 날의 시간, 시, 분, 초, 소수점까지 저장 '09:00:30.75' timestamp date와 time을 합친 것 '2005-7-27 09:00:30.75 interval date/time/timestamp 의 빼기 연산의 결과, 더해질 수도 있음 '1'(day) 2. Index Creation Index 검색속도를 높이기 위해 인덱스(index)라는 데이터 타입을 만든다. 예를 들면, student relation을 만들고 난 후 다음과 같은 명령어를 사용하여 index를 만들 ..
[Transaction, Integrity constraints] SQL 중급 (edwith 데이터베이스 강의 - 부산대학교 김연정 교수님) 1. Transactions 트랜잭션(Transaction)이란 데이터베이스에서 작업의 단위로 여러 개의 쿼리로 구성될 수 있다. - 원자성 모든 작업이 수행되면 commit하고 한 작업이라도 제대로 수행되지 않으면 rollback이 필요하다. - 독립성 다른 트랜잭션에 영향을 받지 않아야 한다. - 일관성 - 지속성 - commit 데이터베이스에서는 레코드를 업데이트하는 의미로 쓰이고, 트랜잭션에서는 데이터베이스를 저장하는 것을 의미한다. 따라서 commit을 하면 모든 사용자가 데이터의 변화를 볼 수 있다(영구적으로 반영된다). - rollback 트랜잭션이 실패하면, 현재 실행중인 트랜잭션을 취소하고 트랜잭션 수행 이전의 상태로 복구하는 것이다. 대부분의 데이터베이스에서 SQL문은 하나의 트랜잭션으..
[Join, View] SQL 중급 (edwith 데이터베이스 강의 - 부산대학교 김연정 교수님) 1. Join operations course에는 CS-347에 대한 정보가 존재하지 않고, prereq 에는 CS-315에 대한 정보가 존재하지 않는다. => natural join을 실행하면 누락되는 정보가 생긴다. (선수과목이 없는 과목은 나타낼 수 없게 된다) 이러한 문제를 해결하기 위해서 Outer Join을 수행할 수 있다. 2. Outer Join Outer Join은 양쪽의 relation에 join을 수행할 때 서로 공통으로 가지지 않는 tuple도 결과 relation에 포함시키며, 누락된 attribute를 null 값으로 채우는 것이다. Outer Join과 구분하기 위해서 기존의 Join 방법을 Inner Join이라고 부른다. - natural left outer join 이 경..