컴공돌이의 취미 블로그

기초데이터베이스 [3]. 관계 모델 본문

Study/기초데이터베이스

기초데이터베이스 [3]. 관계 모델

컴공돌이​​ 2017. 10. 23. 17:00

기초데이터베이스 [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로 변환하는 규칙이 있음


반응형