컴공돌이의 취미 블로그
기초데이터베이스 [3]. 관계 모델 본문
기초데이터베이스 [3]. 관계 모델
● Relational Model(관계 모델) :
→ 가장 널리 사용되는 모델
→ Oracle, Microsoft, IBM등 여러 기업에서 사용
→ 최근 Object-Oriented Model(객체-지향 모델)이 경쟁자로 떠오름
● Relational Database(관계 데이터베이스) :
→ Relation(릴레이션)들의 집합
→ Relation은 Row의 집합 혹은 Tuple(튜플)의 집합
→ Relation은 Instance(인스턴스)와 Schema(스키마)로 구성됨
→ Instance는 Row(행)과 Column(열)로 이루어진 테이블을 의미
→ Schema는 Relation의 이름, 각 Column의 타입과 이름을 정의
● Instance(인스턴스) :
→ Cardinality(카디널리티) : Tuple의 개수
→ Degree(차수) : Attribute의 개수
<Cardinality=3, Degree=5 인 Instance>
● Relational Query Languages(관계 질의 언어) :
→ Relational Model의 가장 큰 장점은 데이터에 관한 간단하면서 강력한 Qeury(쿼리)를 제공한다는 것
→ Query는 직관적으로 작성할 수 있음
→ DBMS는 효율적인 평가를 담당
→ 최적화를 통해 광범위하게 재배치를 할 수 있으며, 재배치 후에도 질의의 응답은 변하지 않음
● SQL Query Language(SQL 질의 언어) :
→ IBM에서 1970년대에 개발되었음
→ 많은 기업에서 사용하기 때문에 표준이 필요하고 현재 표준은 SQL-99
1. Querying Relation(릴레이션 질의)
SELECT *
FROM Students S
WHERE S.age=18
2. Querying Multiple Relation(여러개의 릴레이션 질의)
SELECT S.name, E.cid
FROM Students S, Enrolled E
WHERE S.sid=E.sid AND E.grade="A"
3. Creating Relation(릴레이션 생성)
CREATE TABLE Students(
sid: CHAR(20),
name: CHAR(20),
login: CHAR(10),
age: INTEGER,
gpa: REAL)
4. Destroying Relation(릴레이션 삭제)
DROP TABLE Students
→ Students Relation을 없애면 Schema 정보와 Tuple이 모두 삭제된다
5. Altering Relation(릴레이션 수정)
ALTER TABLE Students
ADD COLUMN firstYear: integer
→ 새로운 Feild인 firstYear에 대해서 현재 인스턴스 안의 튜플들은 널(NULL)값을 갖는다.
6. Adding Tuple(튜플 추가)
INSERT INTO Students (sid, name, login, age, gpa)
VALUES (53688, ‘Smith’, ‘smith@ee’, 18, 3.2)
7. Deleting Tuple(튜플 삭제)
DELETE
FROM Students S
WHERE S.name = ‘Smith’
● Integrity Constraint (무결성 제약조건) :
→ 데이터베이스 안의 어떠한 Instance에 대해서도 참이어야 하는 조건
→ Integrety Constraint는 Schema가 정의될때 명시됨
→ Relation의 적합한 Instance는 모든 Integrity Constraint를 만족하는 것
→ Instance만 봐서는 Integrity Constraint가 참인지 거짓인지 절대 추론할 수 없음
→ Key(키)와 Foreign Key(외래 키) 의 Integrity Constraint는 가장 일반적임
● Key(키) :
→ Tuple을 유일하게 식별할 수 있는 Attribute 집합
→ Key에는 Candidate Key(후보 키), Super Key(슈퍼 키), Primary Key(기본 키), Foreign Key(외래 키)가 있음
1. Candidate Key(후보 키)
→ Relation의 한 Attribute 집합이 전체 Attribute 집합의 부분집합이면서 모든 Tuple을 유일하게 식별할 수 있을때 이 Attribute의 집합
2. Primary Key(기본 키)
→ Candidate Key들 중에서 데이터베이스 설계자가 지정한 하나의 Key
3. Super Key(슈퍼 키)
→ 1개의 Candidate Key와 추가적인 다른 Attribute들로 이루어진 Attribute의 집합
4. Foreign Key(외래 키)
→ 다른 Relation에 있는 Tuple에서 참조하는 한 Relation의 Attribute의 집합
● Referential Integrity(참조 무결성) :
→ Relation은 참조할 수 없는 Foreign Key 값을 가져서는 안됨
→ 다른 Relation에서 참조하고 있는 Relation의 행을 삭제하거나 변경할때 3가지 설정 가능
1. Default
→ 행의 delete(삭제)나 update(변경)을 거부
2. CASCADE
→ 삭제하거나 변경하는 행을 참조하는 다른 Relation의 내용도 삭제하거나 변경
3. SET NULL / SET DEFAULT
→ 삭제하거나 변경하는 행을 참조하는 다른 Relation의 내용을 NULL로 설정/미리 설정해놓은 DEFAULT 값으로 설정
● View(뷰) :
→ View는 Relation의 일종이지만, Tuple의 집합보다는 Definition(정의)를 저장함
→ View는 DROP VIEW 명령어를 사용하여 삭제할 수 있음
→ View는 숨겨진 Relation에서의 필요한 정보들을 표현하는데 사용될 수 있음
뷰 생성
CREATE VIEW YoungActiveStudents (name, grade)
AS SELECT S.name, E.grade
FROM Students S, Enrolled E
WHERE S.sid = E.sid and S.age<21
● Relational Model(관계 모델) 요점 :
1. Relational Model(관계 모델) 은 데이터 표를 표현하는 것
2. Relational Model(관계 모델)은 단순하고 직관적이며 현재 가장 널리 사용됨
3. Integrity Constaint(무결성 제약조건)은 어플리케이션 의미론을 기반으로 하여 DBA에 의해 명시될 수 있음
4. DBMS는 Integrity Constaint(무결성 제약조건)을 위반하는지 확인함
5. Integrity Constaint(무결성 제약조건)에서 Primary Key(기본 키), Foreign Key(외래키) 제약조건이 가장 중요함
6. 강력하고 자연스러운 Query Language(질의 언어)가 존재함
7. ER(Entity-Relationship)을 Relational Model로 변환하는 규칙이 있음
'Study > 기초데이터베이스' 카테고리의 다른 글
기초데이터베이스 [4]. 관계대수와 관계해석 (0) | 2017.10.23 |
---|---|
기초데이터베이스 [2]. 데이터베이스 설계의 개요 (0) | 2017.10.09 |
기초데이터베이스 [1]. 데이터베이스 시스템 개요 (0) | 2017.09.12 |