[Database] 데이타베이스 용어

2022. 7. 24. 18:48·Programming/Programming
728x90

데이타베이스 용어

릴레이션(Relation)

릴레이션이란 관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다.

결국, 릴레이션은 DB 테이블이다. 흔히 개발을 할 때 DB 설계를 하게 되는데 구성 하나하나가 결국 릴레이션이다.

릴레이션의 특징

  • 한 릴레이션에는 똑같은 튜플(Tuple)이 포함될 수 없으므로 릴레이션에 포함된 튜플들은 모두 상이하다.
  • 한 릴레이션에 포함된 튜플 사이에는 순서가 없다.
  • 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변한다.
  • 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않다.
  • 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있다.
  • 릴레이션을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합 키(key)로 설정한다.
  • 속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자 값만을 저장한다.

속성(attribute)

하나의 릴레이션은 현실세계의 어떤 개체(entity)를 표현하고 저장하는데 사용된다.

이때 개체는 사물이 될 수도 추상적인 개념이 될 수도 있다.

속성은 내가 저장하고 싶은 개체의 항목들이다. 예를 들어, 쇼핑몰 운영을 위해 고객의 이름, 고객 고유 번호, 전화번호, 집 주소 등이 필요하다고 할 때 고객의 이름, 고객 고유 번호, 전화번호, 집 주소 등이 속성이 된다.

결국 하나의 열은 하나의 속성 정보를 표시한다.

속성 또한 고유한 이름을 가지고 있어 동일 릴레이션 내에서는 같은 이름의 속성이 존재할 수 없다.

차수(degree)

한 릴레이션 안에 있는 속성(attribute) 수를 차수 라고 한다.

따라서 유효한 릴레이션의 최소 차수는 1이다.

모든 릴레이션은 적어도 하나 이상의 속성(attribute)을 갖고 있다. 예를 들어, 쇼핑몰 운영을 위해 고객의 이름, 고객 고유 번호, 전화번호, 집 주소 등이 필요하다고 할 때 고객의 이름, 고객 고유 번호, 전화번호, 집 주소 등이 속성이 되는데 이 테이블에서 차수는 4임을 알 수 있다. 

튜플(tuple, 레코드)

릴레이션의 각 행을 레코드라고 한다.

레코드를 더 공식적으로 튜플이라고 부른다.

카디날리티(cardinality)

카디날리티는 릴레이션 튜플의 개수이다. 따라서, 아직 데이터가 삽입되지 않은 테이블의 경우 카디날리티는 차수와 다르게 0의 값을 가질 수 있다.

도메인(domain)

도메인은 릴레이션에 포함된 속성들이 각각 가질 수 있는 값들의 집합이라 할 수 있다.

예를 들어 "안경 착용의 유무"라는 속성이 있을 때 이 속성이 가질 수 있는 값은 "유" 혹은 "무"일 것이다.

이 집합 즉 도메인의 이름을 'A' 라고 했을 때 "안경 착용의 유무"라는 속성은 A라는 도메인에 있는 값만 가질 수 있다.

도메인의 이름은 속성 이름과 같을 수도 있고 다를 수도 있다. 또 하나의 도메인을 여러 속성에서 공유할 수도 있다.

스키마(schema)

데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조이다. 데이터베이스 관리 시스템(DBMS)이 주어진 설정에 따라 데이터베이스 스키마를 생성하며, 데이터베이스 사용자가 자료를 저장, 조회, 삭제, 변경할 때 DBMS는 자신이 생성한 데이터베이스 스키마를 참조하여 명령을 수행한다.

스키마는 3층 구조로 되어있다.

  • 외부 스키마(External Schema) : 프로그래머나 사용자의 입장에서 데이터베이스의 모습으로 조직의 일부분을 정의한 것
  • 개념 스키마(Conceptual Schema) : 모든 응용 시스템과 사용자들이 필요로하는 데이터를 통합한 조직 전체의 데이터베이스 구조를 논리적으로 정의한 것
  • 내부 스키마(Internal Schema) : 전체 데이터베이스의 물리적 저장 형태를 기술하는 것

논리모델 vs 물리모델

논리 모델 물리 모델
엔티티(Entity) 테이블(Table)
속성(Attribute) 컬럼(column)
관계(Relation) 관계(Relation)
키 그룹(Key group) 인덱스(Index)

'Programming > Programming' 카테고리의 다른 글

교착상태와 기아상태  (0) 2022.08.11
vi/vim에서 기존 파일을 새 파일로 저장하는 방법  (0) 2022.07.24
[Database] 관계형 데이터베이스(Relational Database)  (0) 2022.07.24
JSP, Javascript, J Query, Java  (0) 2022.07.24
[JSP] JSP(Java Server Pages)  (0) 2022.07.24
'Programming/Programming' 카테고리의 다른 글
  • 교착상태와 기아상태
  • vi/vim에서 기존 파일을 새 파일로 저장하는 방법
  • [Database] 관계형 데이터베이스(Relational Database)
  • JSP, Javascript, J Query, Java
arajo
arajo
  • arajo
    아라 메모장
    arajo
  • 전체
    오늘
    어제
    • 분류 전체보기 (509)
      • Language (298)
        • HTML (55)
        • CSS (11)
        • JavaScript (70)
        • TypeScript (8)
        • Python (33)
        • Java (119)
        • C (0)
        • C# (2)
      • Programming (92)
        • Programming (14)
        • Web (51)
        • Apache (1)
        • MySQL (23)
        • AWS (3)
      • Framework | Library (26)
        • Framework | Library (3)
        • Vue.js (2)
        • React.js (5)
        • React Native (4)
        • Node.js (1)
        • Ajax (1)
        • Bootstrap (8)
        • Spring (1)
        • Flutter (1)
      • etc (2)
      • 휴식 (19)
        • 책 (13)
        • 일기 (5)
        • 게임 일기 (1)
      • A (71)
        • 공부 (18)
        • 기타 (6)
        • 일 (47)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    array
    JavaScript
    리액트
    자바스크립트
    MySQL
    HTML
    제어문
    객체
    event
    TypeScript
    CSS
    타입스크립트
    Python
    react
    변수
    next.js
    web
    Java
    object
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
arajo
[Database] 데이타베이스 용어
상단으로

티스토리툴바