DB 16

[ DB ] H2 DB를 사용하는 이유

H2 데이터베이스는 간단한 프로젝트나 테스트용으로 적합한 데이터베이스이다. H2의 장점은 Embeded모드를 지원하기 때문이다. Application과 DB의 통신 Oracle , MySQL, MariaDB의 작동원리는 위 그림과 같다. Application에서 DB에 read/write 하려면, DBMS와 맞는 JDBC 라이브러리를 설치하여 TCP/IP 통신을 해야한다. 이와같이, Application과 DBMS가 독립된 프로세스로 분리되어 있으면 DBMS는 많은 기능을 제공할 수 있다. 하지만 반대급부로 설정이 어려워지고 무거워진다. 개발자는 DB를 설치 및 설정해야 하고 프로세스를 유지해야 한다. 또한 App과 DBMS는 독립된 프로세스이기에 '통신' 과정이 수반된다. 그러므로 속도도 느리다. 실운..

DB/H2 2023.04.15

[DB] 논리적 설계 모델

지난 포스팅에서 개념적 설계 모델을 알아보았다. 개념적 설계 모델은 인간이 이해하기 쉽도록 DB를 설계하는 방법이다. 그럼 이를 DBMS에 맞는 논리적인 설계로 변환해야한다. 관계형 데이터 모델에 맞게 DB를 설계해보자. 종속적 관계 개념적 설계 모델에서 종속적 관계는 약성 개체 집합이 강성 개체 집합에 종속됨을 표현했다. 그럼 이를 테이블로 나타내어 보자. 개체 집합 => 테이블 개체 집합의 속성 => 필드 기본키 => 기본키 약성 개체 집합은 강성 개체 집합에 종속된 관계로 독자적인 기본키를 갖지 못한다. 종속된 강성 개체에 따라 기본키가 달라진다. 기본키는 강성 개체를 특정 지을 수 있는 여러 속성을 묶은 부분키와 종속된 개체의 기본키를 묶어 만들어 진다. 강성 개체 집합 : 강좌 ( course_..

DB/DB Basic 2021.06.25

[DB] 시스템 권한 및 뷰(View) [Oracle]

Oracle DBMS 기준으로 권한은 시스템 권한과 객체권한으로 나뉜다. 지난 두 개의 포스팅에서 객체 권한과 관련된 내용을 다루어 보았다. 이번 포스팅에서는 시스템 권한을 다루어 볼까 한다. 시스테권한(System Privileges)은 '조작'보다는 '생성'과 '삭제'와 같이 시스템 구성에 영향을 끼치는 명령을 다루는 권한이다. 그러므로 데이터 관리자 권한이 있는 계정이 아니면 접근할 수 없는 중요한 권한이다. (SYS, SYSTEM) 사용자의 생성,삭제 (CREATE user, DROP user) 세션 생성 (CREATE session) (DB 로그인 권한) 테이블 생성, 삭제, 읽기 권한 (CREATE, DROP, SELECT) 뷰 생성 삭제 권한(CREATE, DROP) 테이블 스페이스 생성 삭..

DB/DB Basic 2021.06.25

[DB] 개념적 설계 모델

데이터베이스의 개념적 설계는 사람이 이해할 수 있는 설계이다. 데이터베이스의 구조를 사람의 관점에서 접근해보자. 개념적 설계의 핵심 요소 출처 입력 개념적 설계 모델의 핵심요소 3가지는 아래와 같다. 1. 개체( Entity ) 2. 속성 ( Attribute ) 3. 관계 ( Relation ) 개체는 현실에서 물리적으로 추상적으로 존재하는 실체이다. 속성은 개체가 가지고 있는 특성을 의미한다. 동일한 특성을 가진 개체들이 모이면 개체 집합(Entity Set)이 된다. 관계형 데이터 모델에서 개체 집합을 '테이블'이라 부르고 '속성'을 필드라 부른다. 같은 대상을 지목하지만 관점이 다르므로 특징도 다르다. 사용자 관점에서 보면 '속성'은 다중값이나 복합적인 특성을 가질 수 있지만 데이터베이스 관점의 ..

DB/DB Basic 2021.06.25

[DB] 데이터베이스 권한(ROLE) [Oracle]

지난 포스팅에서 GRANT와 REVOKE 명령어를 통해 사용자에게 권한을 부여하는 방법에 대해서 다루어 보았다. 이번 포스팅에서는 ROLE에 대해서 다루어 볼것이다. DB를 이용하는 사용자가 적다면 하나씩 권한을 부여할 수 있겠지만 사용자가 많다면 일일이 권한을 부여하는 것은 부담이 된다. 그래서 사용자 그룹을 만들어 그룹별로 권한을 부여하면 효율적이다. 여기서 사용자의 그룹이 롤( Role)이 된다. 롤은 데이터베이스 관리자만 생성할 수 있다. 1. 롤 생성 CREATE ROLE CREATE ROLE employee; CREATE ROLE manager; 이렇게 롤을 만든 다음, 사용자에게 권한을 부여할 때 DML이나 REFERENCES 같은 객체에 대한 권한을 부여하는 것이 아니라 ROLE을 부여하는..

DB/DB Basic 2021.06.25

[DB] 데이터베이스 권한(GRANT, REVOKE) [Oracle]

데이터베이스 권한은 크게 시스템 권한과 객체 권한으로 나뉜다 (Oracle DBMS 기준). 시스템 권한은 DB를 구성하는 시스템과 관련된 권한이다. 사용자를 생성한다던가 테이블이나 오라클 DBMS의 경우 테이블스페이스 생성과 같이, 시스템을 구성하는 권한을 의미한다. 시스템 권한은 중요하므로 데이터베이스 관리자 권한이 있는 계정만 접근 가능하다.(SYS, SYSTEM) 시스템 권한은 시스템을 구성하는 요소를 생성하는 권한이라면 생성된 요소를 조작하는 권한은 객체권한이라 부를 수 있다. 데이터베이스의 객체란 데이터를 저장할 수 있는 논리적 단위를 의미한다. 대표적으로 테이블, 뷰, 인덱스 등이 있다. 그러므로 데이터가 저장되는 논리적 단위의 조작 범위에 따라서 권한이 부여된다. 이번 포스팅에서는 객체권한..

DB/DB Basic 2021.06.25

[DB] 무결성 (Integrity)이란?

무결성이란? 20대 초중반의 남자들은 자유로운 생활을 살다가 군대를 가게 된다. 군대라는 집단에 속해진 남자들은 그동안의 생활을 뒤로하고 군인으로써 지켜야 할 규칙과 규약 아래 놓이게 된다. 로마에 가면 로마법을 따르듯, 어느 집단에 속해진 구성원은 그 집단의 법을 지키며 살아가야 집단의 구성원으로써 인정받는다. 그렇지 않으면 감옥에 들어가 집단에서 제외된다. 데이터 베이스도 이와 같다. 데이터가 데이터베이스에 들어와 데이터로써 인정받으려면 데이터베이스가 제공하는 제약조건을 지켜야한다. 제약조건을 지킨 데이터를 무결성이 있다고 말한다. 하지만 제약조건을 위반하게 되면 해당 데이터는 데이터로 인정받지 못한다. 실생활의 데이터를 모순없이 저장하고 여러 사람이 동시에 사용할 수 있는 데이터베이스를 만들려면 D..

DB/DB Basic 2021.06.25

[DB] SQL3 (Oracle)

중첩질의(nested query)에 대해서 알아보자. 중첩질의는 관계해석과 연관이 있는 SQL문이다. 관계해석은 명제를 통해서 테이블을 표현한다. 그래서 명제의 변수가 되는 튜플의 범위를 서술해주어야한다. 중첩질의는 SQL문을 중첩시켜, 출력되는 레코드(튜플)의 범위를 지정하는데 주로 사용되므로 관계해석을 기반으로 한 SQL문이다. IN, NOT IN SELECT title FROM course WHERE course_id IN ( SELECT distinct course_id FROM class WHERE classroom = '301호' ); IN 뒤에 나오는 SQL문을 부질의(subquery)라고 한다. IN 앞에 나오는 SQL문을 외부질의(Outer query)라고 한다. 외부 질의는 부질의에서 ..

DB/DB Basic 2021.06.25

[DB] SQL2 (Oracle)

SQL은 통계에서 자주 사용되는 연산을 함수로 제공한다. 이를 집계함수(aggregate function)이라 한다. 집계함수에는 count, sum, avg, max, min이 있다. 집계함수의 X는 필드이다. 테이블은 필드로 테이블을 정의하고 레코드로 테이블을 생성한다. 집계함수의 X는 레코드로 들어간 필드의 값들을 의미한다. SELECT count(distinct dept_id) FROM student; 학생 테이블에 저장된 학과 ID가 포함된 레코드의 개수를 세는 SQL문이다. distinct를 통해, 중복되는 학과 ID를 제거했다. 집계되는 레코드는 WHERE을 통해서 조건을 걸어줄수도 있다. SELECT count(*) FROM student s , department d WHERE s.dep..

DB/DB Basic 2021.06.25

[DB] SQL1 (Oracle)

테이블은 두 가지 집합을 포함한 그릇과도 같다. 두 가지 집합이 바로 필드와 레코드이다. 테이블을 필드 중심으로 설명하면 이는 테이블 스키마가 된다. 테이블을 레코드 중심으로 설명하면 테이블 인스턴스가 된다. 테이블을 생성하려면 먼저 필드를 정의하여 테이블 스키마를 생성한 후, 레코드를 추가하여 테이블 인스턴스를 만들어야 한다. 그러므로 테이블 스키마 생성과 테이블 인스턴스 생성의 SQL문은 다르다. SQL의 종류 DDL(Data Definition Language)은 데이터 정의 언어라고 부르며, 이는 테이블 스키마와 관련된 SQL이다. CREATE 테이블 생성, ALTER 테이블 수정, DROP 테이블 삭제 DML(Data Manipulation Language)은 데이터 조작 언어로, 이는 테이블 ..

DB/DB Basic 2021.06.25