Oracle DAY2 - 관계형 데이터모델

어뮤즈온·2020년 12월 3일
0

Oracle

목록 보기
2/8

관계형 데이터모델

  • 현재 가장 많이 사용되는 데이터베이스 모델
  • 데이터가 최소한의 의미를 가지는 테이블 형태들로 표현
  • 사용자가 데이터를 쉽게 다룰 수 있도록 해주는 질의어(SQL) 제공

SQL(Structed Query Language)

  • 자연어에 가까운 문법(배우기가 쉽고 용이하다.)
  • 데이터를 어떻게 가져올 것인가 대신에 어떤 데이터를 원하는 지만 기술
    --> 사용자나 개발자의 입장에서 데이터를 다루는 작업이 매우 단순해짐
  • 명령어나 문법이 표준화되어 있다.

릴레이션(relation)

  • 테이블
  • 현실 세계의 개체를 표현
  • 관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
    ex)
    student 릴레이션 : 학생에 관한 정보를 저장
    subject 릴레이션 : 과목에 대한 정보를 저장
  • 동일한 데이터베이스 내에서는 같은 이름을 갖는 릴레이션이 존재할 수 없다.

튜플(tuple)

  • 개체에 속한 구성원들 개개의 정보를 표현(레코드)
    ex) '학생'은 개체를 나타내는 이름이고 '김철수', '박지원',...은 '학생' 개체의 구성원
  • 한 릴레이션에 포함된 튜플의 개수는 시간에 따라 변할 수 있으며, 한 릴레이션은 여러 개(수십~수십만 개)의 튜플을 포함할 수 있음

속성(attribute)

  • 릴레이션에서 관리하는 구체적인 정보 항목(필드)
  • 현실 세계의 개체(예 : 학생, 교수, 과목,...)들은 많은 속성들을 갖는데 그 중에서 관리해야 할 필요가 있는 속성들만을 선택하여 릴레이션에 포함
  • 속성 역시 고유한 이름을 가지며 동일 릴레이션 내에서는 같은 이름의 속성이 존재할 수 없음

도메인(domain)

  • 각각의 속성들이 가질 수 있는 값들의 집합
  • 필요이유
    -> 저장되는 데이터 값들이 본래 의도했던 값들만 저장되고 관리되도록 하는 데 있음
    ex) '성별'이라는 속성이 있다면 이 속성이 가질 수 있는 값은 {남, 여}
  • 도메인의 이름은 속성 이름과 같거나 다를 수 있음
  • 현실적으로 도메인을 구현하는 것은 어려움(ex : 이름, 주소)
    -> 대부분의 DBMS 제품에서는 사용자 정의 데이터 타입을 사용
    ex) 데이터 타입과 길이를 미리 지정, 데이터 값의 범위를 지정

** 릴레이션 = 테이블 / 속성 = 열, 컬럼 / 튜플 = 행


키(key)

키의 필요성

튜플의 중복 여부를 알아내기 위해서는 삽입하고자 하는 튜플과 이미 존재하는 모든 튜플을 일일이 비교해야 하는데 이는 비현실적이다. 키는 중복여부를 효과적으로 알 수 있도록 하는 수단이 된다.

후보키(candidate key)

  • 테이블에서 각 튜플을 구별하는데 기준이 되는(기본키가 될 수 있는) 하나 혹은 그 이상의 컬럼들의 집합
  • 후보키는 테이블에 있는 각 튜플을 고유하게 식별할 수 있어야 한다.
  • 위 STUDENT 테이블의 경우 SID(학번)이 후보키
  • 튜플의 중복 여부 확인 시 기존 튜플의 모든 컬럼 값을 비교하는 대신 후보키 컬럼의 값과 비교
  • 기본키(primary key), 대체키(alternate key)로 구분

기본키(primary key)

  • 후보키 중 튜플을 식별하는데 기준으로 사용할 키 : NOT NULL, NO DUPLICATE
  • 일반적으로 정보를 검색하는 기준
  • 중복된 튜플이 입력되는 것을 방지
  • 모든 테이블에는 적어도 하나의 기본키가 존재

대체키(alternate key)

  • 후보키 중 기본키로 선택되지 않은 나머지 키

후보키 중 어느 키를 중복키로 정할까?

  • 명확히 정해진 규칙은 없다.
  • 해당 테이블을 대표할 수 있는 것
  • 데이터 길이가 짧을 것
  • 빈번히 사용되는 컬럼

복합키(composite key)

  • 하나의 컬럼이 후보키의 역할을 하지 못하고 두 개 이상의 컬럼이 합쳐져야 후보키의 역할을 하는 경우

외래키(foreign key)

  • 상호 관련이 있는 테이블들 사이에서 데이터의 일관성을 보장해 주는 수단
  • 관계는 업무적인 연관성을 의미
  • 두 테이블 사이에 존재하며 관계를 맺고 있는 두 테이블 중 하나는 부모 테이블이고 하나는 자식테이블
  • 부모테이블의 기본키는 자식테이블에 외래키로 전이

-> 두 테이블간에 외래키에 의한 참조관계에 있을 때 두 테이블간 데이터 불일치가 발생하는 상황이 되면 DBMS는 제한(restrict), 연쇄(cascade), null값으로 대체(nullify) 의 조치를 취한다.

참조 무결성 제약조건

외래키를 통해 두 테이블간의 데이터 무결성을 유지하는 것

데이터 무결성

  • 참조 무결성
    1) 자식테이블의 데이터를 입력하거나 수정할 때 부모테이블을 검증
    2) 부모테이블의 데이터를 수정하거나 삭제할 때 자식테이블을 검증
  • 개체 무결성
  • 도메인 무결성
profile
Hello, world!

0개의 댓글