데이터베이스 언어 (SQL)

데이터 정의 (Definition)

데이터의 구조를 정의하고, 데이터 구조에 대한 삭제 및 변경 기능을 수행한다.
i.e. CREATE, ALTER, DROP

데이터 조작 (Manipulation)

데이터를 조작하는 소프트웨어(응용 프로그램)가 요청하는 데이터의 삽입, 수정, 삭제 작업을 지원한다.
i.e. SELECT, INSERT, DELETE, UPDATE

데이터 제어 (Control)

데이터베이스 사용자를 생성하고, 모니터링하며 접근을 제어한다. 백업과 회복, 동시성 제어 등의 기능을 지원한다.
i.e. GRANT, REVOKE, COMMIT, ROLLBACK

데이터 추출 (Retrieval)

사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터를 추출한다.

 

데이터베이스의 구조

스키마란?

1. 스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다.

2. 스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다.

3. 스키마는 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 나눠진다.

 

 

스키마의 특징

1. 스키마는 데이터 사전(Data Dictionary)에 저장되며, 다른 이름으로 메타데이터라고도 한다.

2. 스키마는 현실 세계의 특정한 한 부분의 표현으로서 특정 데이터 모델을 이용해서 만들어진다.

3. 스키마는 시간에 따라 불변인 특성을 갖는다.

4. 스키마는 데이터의 구조적 특성을 의미하며, 인스턴스에 의해 규정된다.

 

스키마의 3계층

데이터베이스 관리 시스템은 외부적 스키마에 따라 명시된 사용자의 요구를 개념적 스키마에 적합한 형태로 변경하고 이를 다시 내부적 스키마에 적합한 형태로 변환한다.

 

내부 스키마(Internal Schema) -> 데이터베이스라는 컴퓨터 관점(= 시스템 설계자, 시스템 프로그래머 관점)

1. 내부 스키마는 물리적 저장장치의 입장에서 본 데이터베이스 구조로, 물리적인 저장장치와 밀접한 계층이다.

2. 내부스키마는 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서 등을 나타낸다.

3. 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다.

 

개념 스키마(Conceptual Schema) -> DBA 관점. 즉, 눈에 보이는 객체그룹의 전체적인 뷰(View)

1. 개념 스키마는 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.

2. 개념스키마는 개체간의 관계와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.

3. 데이터베이스 파일에 저장되는 데이터의 형태를 나타내는 것으로, 단순히 스키마(Schema)라고 하면 개념 스키마를 의미한다.

4. 기관이나 조직체의 관점에서 데이터베이스를 정의한것이다.

5. 데이터베이스 관리자(DBA)에 의해서 구성된다.

 

외부 스키마(External Schema) -> DBA로부터 권한을 얻어 DB를 활용하는 개발자 관점. 즉, 사용자 뷰(View)

1. 외부스키마는 사용자나 응용프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것이다.

2. 외부스키마는 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마(Sub Schema)라고도 한다. 즉, 개념 스키마를 사용자로 나눠 세분화 한 것이다.

3. 하나의 데이터베이스 시스템에는 여러개의 외부 스키마가 존재할 수 있으며 하나의 외부 스키마를 여러개의 응용 프로그램이나 사용자가 공용할 수도 있다.

4. 같은 데이터베이스에 대해서도 서로 다른 관점을 정의할 수 있도록 허용한다.

5. 일반 사용자는 질의어(SQL)을 이용하여 DB를 쉽게 사용할 수 있다.

6. 응용 프로그래머는 C, JAVA등의 언어를 사용하여 DB에 접근한다.

 

 

Table Relation (관계 데이터)및 무결성 제약조건(Primary Key : 기본키, Foreign Key : 외래키/참조키)

row : 튜플(Turple), 레코드(Record)
column 
: 속성(Attribute)

Table Relation : 테이블에서 row(Tuprle)은 각 column(Attribute)과 관계를 맺고 있다.

특징 : 1. 테이블 내 동일 column(Attribute)은 존재하지 않는다.
         2. Relation 내 동일한 row(Tuple)은 허용하지 않는다.
         3. row(Tuple)의 순서는 상관 없다.
         -> 정리하면,  Table Relation은 100% 동일한 행이나 열은 허용 X, 행의 순서는 상관 X

Key : 특정 column(Attribute)을 식별할 때 사용하는 속성 혹은 속성의 집합. 즉, column head.

특징 : 1. Table Relation은 중복된 행을 허용하지 않는다.
         2. 키는 다른 Table과 Relation 관계를 맺는 데도 사용된다.
         -> 정리하면, Key는 column head고, 중복이 허용되지 않는다. 다른 Table과 Key(column head)로 관계를 맺는다.

 

Primary Key (기본키) : 중복을 허용하지 않는 값. i.e. Primary Key 3개가 있다면 이 3개가 모두 동일한 값은 들어올 수 없다. 당연히 NULL값은 허용하지 않는다.
생성 방법 : constraints [pk이름] Primary Key(Primary Key1, Primary Key2, Primary Key3)

Foreign Key (외래키, 참조키) : 중복을 허용하지 않는 값. i.e. 다른 테이블의 Primary Key를 내가 참조를 위해 끌어다 쓰는 것. 해당 Foreign Key를 내 테이블에서 Primary Key로 할 것인지(Foreign Key이자 내 테이블의 Primary Key), 단순한 Foreign Key로 할 것인지는 내 테이블에서 정한다.
생성 방법 : constraints [pk이름] foreign key (컬럼명) references 기본키포함테이블명(해당테이블 기본키)

더보기

Foreign Key의 소유자는 : 해당 키를 생성한 테이블의 스키마. 즉, 원본 Primary Key를 가진 테이블의 스키마.

Foreign Key의 편집 권한은? : DAB가 스키마에 계정을 부여함에 따라 결정됨.

 

 

 

무결성 제약조건 3가지

: 왜 DataBase의 자료는  믿을만한가?

  도메인 무결성 제약
(Domain Constraint)
개체 무결성 제약
(Primary Key Constraint)
참조 무결성 제약
(Foreign Key Constraint)
제약 대상 column(Artribute) row(Tuple) row and column
Null값 허용 O X O
요약 NUMBER에 '문자'는 못 들어간다 Primary Key는 중복 허용 X 부모/자식 테이블간 Relation

 

 

 

용어 및 기타

DDL, DML, DCL

DDL(Data Definition Language, 데이터 정의어) : CREATE, ALTER, DROP, RENAME, TRUNCATE
DML(Data Manipulstion Language, 데이터 조작어) : SELECT, INSERT, UPDATE, DELETE
DCL(Data Control Language, 데이터 제어어) : GRANT, REVOKE

TCL(Transaction Control Language, 트랜젝션 제어어) : COMMIT, ROLLBACK, SAVEPOINT 

 

데이터 수정 권한?

cf. 데이터베이스에는 파이썬의 리스트, 튜플처럼 업데이트 가능한 집합, 불가능한 집합과 같은 데이터 집합의 구분이 없다.
데이터베이스에서는 이를 데이터의 구분이 아닌 스키마(계정)에 권한을 줌으로써 구분한다.

 

cf. 오라클에서 테이블명은 최대 30자로 제한된다.

 

Tag. ddl dml dcl, ddl dcl dml, dml dcl ddl, dml ddl dcl, dcl dml ddl, dcl ddl dml

+ Recent posts