-
Database System_03Database 2023. 3. 27. 22:00
데이터 모델의 개념
데이터베이스의 과제
- 기본 목적: 조직 내의 데이터를 한 곳에 모아 체계적으로 저장한 뒤 DBMS를 통해 구성원들이 데이터를 공유하는 것
- 세가지 과제
- 데이터를 어떤 형태로 표현하고 저장할 것인가
- 저장된 데이터를 사용자들이 어떤 방법을 통해 이용할 수 있게 할 것인가
- 데이터베이스 내에 저장되는 정보들이 오류가 없도록 어떻게 관리할 것인가
- 이 문제들을 다루는 개념이 데이터 모델(data model)
데이터 모델
- 현실 세계에 존재하는 데이터, 정보를 컴퓨터 안에 표현하는 방식
- 논리적 모델: 사용자의 눈으로 보았을 때 데이터가 어떤 모양으로 보이게 할 것인가
- 물리적 모델: 데이터를 물리적으로 저장 할 때 어떻게 할 것인가

계층형 데이터 모델(hierarchical data model)

- 데이터들이 계층적 구조로 연결되었다고 보는 관점
- 초기 DBMS 제품에서 많이 채택하던 모델
- 장점: 구조가 간단하고 데이터의 수정, 검색이 용이
- 단점: 검색 경로가 한정되고 삽입과 삭제 연산이 매우 복잡
네트워크 데이터 모델(network data model)

- 계층형 모델의 단점을 보완
- 계층형 모델에서는 하나의 하위정보는 반드시 하나의 상위 정보와만 연결이 되는 반면 네트워크 모델에서는 하나의 하위정보가 여러개의 상위 정보와 연결이 될 수 있음
- 하위정보에 대한 접근 경로를 다양하게 만들어서 보다 유연한 정보검색이 가능
관계형 데이터 모델(relational data model)

- E.F. Codd에 의해 제안
- 정보 또는 데이터간 상하 개념이 존재 x
- 상하 관계 뿐 아니라 정보/데이터간에 명시적인 연결 통로도 존재 x
- 유연한 정보 검색이 가능한 대신 검색 속도는 계층형/네트워크 모델에 비해 떨어질 수 있음
- 우리가 알고 있는 대부분의 DBMS 제품들은 관계형 모델을 채택

데이터 모델의 역사 관계형 데이터 모델
- 데이터를 어떤 형태로 표현하고 저장할 것인가 --> 데이터 구조
- 저장된 데이터를 사용자들이 어떤 방법을 통해 이용할 수 있게 할 것인가 --> 데이터 연산
- 데이터베이스 내에 저장되는 정보들이 오류가 없도록 어떻게 관리할 것인가 --> 데이터 무결성
데이터 구조

- 관계형 모델에서는 사용자에게 데이터가 마치 '테이블' 형태로 존재하는 것처럼 인식
- 릴레이션(relation)
- 데이터의 기본 관리 단위(오늘날은 테이블이라고 부른다.)
- 데이터베이스는 이러한 릴레이션들의 집합
- 속성(attribute)
- 릴레이션의 열(column)을 가리키는 용어
- 릴레이션에 저장되는 정보 항목의 이름
- 속성의 이름은 사용자가 임의로 만들 수 있으며, 동일한 릴레이션 내에서는 중복 된 속성 이름이 존재하면 안된다.
- 릴레이션의 차수(degree): 릴레이션에 포함된 속성의 개수
- 튜플(tuple)
- 릴레이션에서 하나의 행(row)을 가리키는 용어
- 학생 릴레이션에서 하나의 튜플은 한 명의 학생에 대한 정보를 담고 있음
- 릴레이션의 카디널리티(cardinality): 릴레이션에 포함된 튜플의 수
- 도메인(domain)
- 릴레이션에서 각 속성에 저장될 수 있는 후보 값들의 집합 --> 예를 들면 성별이라는 속성 즉 attribute에 들어갈 도메인은 성별로 Male, Female 로 나누어져 있다. 이 외의 값이 입력 된다면 오류라고 판단
- 릴레이션의 모든 속성은 자신이 속할 도메인과 연결
- 도메인의 취지는 매우 좋지만 현실적으로 구현이 어려운 경우가 대부분
- 스키마(schema)와 인스턴스(instance)
- 스키마는 '구조'의 의미를 갖는 용어
- 보통 데이터베이스 스키마, 릴레이션 스키마와 같이 다른 용어에 붙여서 사용
- 데이터베이스 스키마: 데이터베이스의 구조를 말한다. 릴레이션과 릴레이션 간에는 어떤 관계가 있는지 등을 정의
- 데이터베이스에 어떤 데이터가 저장되기 위해서는 먼저 데이터베이스 스키마가 정해져야 한다.
- 데이터베이스 인스턴스: 특정 시점에서 보았을 때 데이터베이스 안에 저장된 데이터들의 집합
- 데이터베이스 스키마는 구조이기 때문에 잘 변하지 않는다. 그러나 데이터베이스 인스턴스는 데이터의 입력, 수정, 삭제가 일어날 때 마다 변화된다.
용어의 변화

릴레이션의 특징
- 속성의 원자성
- 릴레이션의 각 튜플의 특정 속성은 원자값(atomic value)을 가져야 한다
- 원자값이란 더 이상 쪼개면 의미를 상실하는 입력값을 의미

- 튜플의 유일성
- 릴레이션에는 중복되는 튜플이 입력되어서는 안된다는 성질
- 중복된 튜플이 존재하게 되면 잘못된 질의 결과를 도출

- 튜플의 무순서 성질
- 릴레이션에 저장되는 튜플에는 순서라는 개념이 없다
- 튜플의 순서만 다른 두 릴레이션에서 얻어 낼 수 있는 정보의 양은 동일하기 때문

- 속성의 무순서 성질
- 릴레이션의 속성에는 순서의 개념이 없다

- 속성 이름의 유일성
- 동일한 릴레이션 내에 같은 이름을 가진 속성이 중복해서 존재할 수 없다
- 같은 이름을 가진 속성이 둘 있다고 하면 두 개 속성의 값을 구분해서 다룰 수 있는 방법이 없기 때문
- 서로 다른 릴레이션 A와 릴레이션 B 사이에는 같은 이름의 속성이 존재할 수 있다.
관계형 데이터 연산
- 저장된 데이터를 사용자들이 어떤 방법을 통해 이용할 수 있게 할 것인가의 문제 = 사용자들에게 어떤 연산(operation)을 제공할 것인가의 문제
- 릴레이션을 다루기 위한 연산이 필요(덧셈, 뺄셈, 곱셈, 나눗셈 등과 같은)
- E.F.커드는 릴레이션에 대한 연산을 집합론의 관점에서 정의 --> 관계 대수(relational algebra) 와 관계 해석(relational calculus)
- 두 개의 이론에서 제시한 연산은 동등한 처리 능력을 가짐
릴레이션에 대한 연산의 실행 과정

"20대 사원중 연봉 6500 이상을 받는 사원의 이름과 나이, 연봉을 보이시오"

- 테이블 형태의 릴레이션에서 우리가 원하는 정보를 얻을 수 있는 방법(연산)이 존재한다
- 원하는 정보를 얻기 위해 테이블에서 행(row)을 추출하는 연산과 열(column)을 추출하는 연산이 사용되었다
- 정보를 추출하는 연산에서 연산의 대상도 테이블 형태의 릴레이션이고, 연산의 결과도 테이블 형태의 릴레이션이다.
데이터 무결성 규칙
데이터 무결성(data integrity)
- 저장되는 데이터가 정확하고 유효한 상태로 유지되는 성질
- DBMS가 데이터 무결성을 보장할 수 있어야 한다.
- 모든 경우에 대해 DBMS로 하여금 무결성을 유지하도록 하는 것은 현실적으로 불가능에 가깝다.
- DBMS가 지켜야 하는 최소한의 무결성에 대한 규칙을 정하여 이를 DBMS를 개발할 떄 적용 --> 개체 무결성 규칙(entity integrity rule)과 참조 무결성 규칙(referential integrity rule)
개체 무결성 규칙(entity integrity rule)
- 릴레이션에 저장되는 튜플들은 그 튜플을 다른 튜플과 구분하는데 사용하는 속성을 가지고 있음 --> 기본 키(primary key)
- 개체 무결성 규칙
- "릴레이션의 기본키 속성에는 널값이 입력될 수 없다."

개체 무결성 규칙이 깨어진 학생 릴레이션 - 널(null)값
- 널값은 '없음'을 나타내는 값이기 때문에 공백이나 0과는 다름
- 예를 들면 학번, 주민등록번호, 학생 이름 등의 속성에는 널값이 허용되면 안되지만 학생의 취미, 추가 연락처 등의 속성에는 널값이 허용될 수 있다.
참조 무결성 규칙(referential integrity rule)

사원의 취미 릴레이션의 사원번호가 사원 릴레이션의 사원번호를 참조 - DBMS에게 이 참조 관계를 알려주면 참조 무결성을 지킬 수 있다.
- 사원의 취미 릴레이션에서 '사원번호' 속성을 외래키(foreign key)라고 한다
- 참조 무결성 규칙
- "참조 관계에 있는 두 릴레이션의 데이터 사이에는 일관성이 있어야 한다"

기본키와 외래키의 예 - 기본키: 개체 무결성 규칙과 관련
- 외래키: 참조 무결성 규칙과 관련
'Database' 카테고리의 다른 글
Database System_05 (0) 2023.04.14 Database System_04 (0) 2023.03.28 Database System_02 (0) 2023.03.26 Database System_01 (0) 2023.03.24