자료 모델(data models)
개체-관계 모델 (E-R: entity-relationship model)
- 실제 세계에 대한 인식에 바탕을 두고 있음.
- "
개체(entity)
","`개체와 개체 사이의 관계(relationship)"이 두 가지를 기본으로 하고 있음.
관계형 모델(=모형) (relational model)
- "
자료(data)
"와 "자료 사이의 관계(relationship)
"를 관계(relation = 테이블:table)로 나타냄.
- 구조가 간단해서 이해하기가 쉬우며, 데이터 조작 면에서도 명확하다.
- 오늘날 가장 널리 쓰고 있는 관게형 데이터베이스의 모델
네트웍 모델(network model)
- 데이터와 데이터간의 관계는 링크(link)로 표현하며, 일반 그래프의 설징을 갖는다. (방향성 O)
- 링크로 연결된 레코드 타입들은 오너-멤버 관계를 갖느다.
- 오너 레코드와 멤버 레코드 사이에는 1:n의 관계를 갖는다.
계층적 모덱(hierarchical model)
- 데이터와 데이터간의 관계는 링크(link)로 표현되며, 트리(tree)형태로 조직된다.(방향성 X)
- 하나의 링크로 연결된 두 레코드 사이에는 1:n의 부모-자식(parent-child) 관계를 갖는다.
객체 지향 모델 (OO model, object-oriented model)
- 객체-관계 모델 개념을 많이 포함.
- 객체 개념을 데이터베이스에 적용
- 자료뿐만 아니라 실행할 수 있는 프로그램까지 모두 포함
자료 정의어(DDL)와 자료 조작어(DML)
자료 정의어 (DDL: data-definition language)
- 자료 정의어 : 스키마를 정의하는 언어
- SQL에서 자료 정의어의 보기
create table 학생 (학생 char(7), 이름 char(20));
자료 조작어 (DML: data-manipulation language)
- 데이터베이스 안에 있는 자료를
- 검색하거나 (select),
- 없애거나 (delete),
- 바꾸거나 (update),
- 새 자료를 넣는 (insert) 일을 한다.
자료 조작어 (DML)의 보기
Select * From 학생 Where 이름='홍길동';
insert into 학생 Values('9902101', '홍길동');
delete From 학생 Where 이름='홍길동';
update 학생 set 이름 = '장길산' where 이름='홍길동';
자료 조작어의 성질: 비절차적, 집합 결과
두 가지 독립적인 기준에 따라서 나눌 수 있으며 그 결과 네가지(=2*2)로 나눌 수 있다.
- 절차적(procedural) / 비절차적(non-procedural)
- 절차적 자료 조작어 : 사용자가 무슨 데이터(what data)를 원하며, 어떻게(how) 그것을 접근해야 되는지 명세(관계재수, 계층적 모델, 네트웍 모델)
- 비절차적 자료 조작어 : 사용자가 무슨 데이터(what data)를 원하는 지만 명세하고 그것을 어떻게(how) 접근할 것인가에 대해서는 명세할 필요가 없음.(관계해석, SQL)
- 한 번에 레코드가 한 개씩 나오는지(record-at-a-time) / 여러 개의 자료가 한꺼번에 나오는지(set-at-a-time)
절차적 조작어 / 비절차적 조작어
`create table 수강 (학번 char(7), 과목번호 char(5), 성적등급 char(1));
- 수강 테이블에서 성적등급이 'A'인 모든 학생의 학번을 찍어내는 방법
- 절차적 조작어 : 관계대수
- 비절차적 조작어 : SQL
절차적 조작어 : 관계대수를 이용하여 테이블에서 성적등급이 'A'인 모든 학생의 학번을 찍어내는 방법
- 성적등급이 'A'인 줄을 먼저 찾고 난 뒤, 속성 세 개 가운데 학번 속성만 찍는다.
- 이 순서(=절차)는 사요자가 지정
비절차적 조작어 : SQL언어를 이용하여 테이블에서 성적등급이 'A'인 모든 학생의 학번을 찍어내는 방법
- 절차(순서)는 전혀 나와 있지 않음
비절차적 조작어
라고 부름
자료 조작어의 명령 결과가 집합인 자료 조작어
자료 조작어의 명령 결과가 레코드 한 개인 자료 조작어
- 계층적 모델이나 네트워크 모델의 자료 조작어
- 여러 개의 레코드를 처리하고자 하면, 일반 고급 프로그래밍 언어에서처럼 레코드를 가져오는 명령을 loop안에서 되풀이하여야 실행
용어:질의어(query language)와 자료 조작어(DML)
질의어(query)
- 사전적 의미 : '물어보다'
- 데이터베이스 : '이미 있는 자료나 정보를 가져오는 것'
- SQL에서 보면
select
만 해당되고, insert, delete, update는 해당되지 않는다.
자료 조작어(DML)
- 질의어보다 더 넓은 개념
- 있는 자료를 지우거나 고치는 것, 새 자료를 넣는 것 포함
- SQL에서 보면 select, insert, delete, update를 모두 포함