반응형

데이터베이스 정규화(Normalization) 란?

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다.

정규화의 기본 목표는 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현하는 것이다.

 

정규화된 결과를 정규형이라고 하며, 정규형은 기본 정규형 고급 정규형으로 나뉜다.

  • 기본 정규형 : 제1정규형, 제2정규형, 제3정규형, BCNF(보이스/코드 정규형)
  • 고급 정규형 : 제4정규형, 제5정규형

정규화의 장점으로는 이상 현상의 발생 가능성을 줄이지만,

단점으로는 연산 시간이 증가한다.

    

 

제 1 정규형

릴레이션에 속한 모든 속성의 도메인이 더 이상 분해되지 않는 원자값으로만 구성된 정규형이다.

    

 

제2정규형

릴레이션이 제1정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제2정규형에 속한다.

제1정규형에 속하는 릴레이션이 제2정규형을 만족하게 하려면, 부분 함수 종속을 제거하고 모든 속성이 기본키에 완전 함수 종속되도록 릴레이션을 분해하는 정규화 과정을 거쳐야 한다.

  • 완전 함수 종속
    • 어떤 속성이 기본키에 대해 완전히 종속일 때
  • 부분 함수 종속
    • 어떤 속성이 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있을경우 기본키를 구성하는 속성 중 일부만 종속될 때
    

 

제3정규형

릴레이션이 제2정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제3정규형에 속한다.

  • 이행적 함수 종속
    • A → B , B → C 인 경우 A → C 가 성립될 때
    • 즉, A를 알면 B를 알고 그를 통해 C를 알 수 있는 경우를 의미
    

 

BCNF

릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 BCNF에 속한다.

하나의 릴레이션에 여러개의 후보키가 존재할 수도 있는데, 이런 경우는 제3정규형까지 모두 만족하더라도 이상 현상이 발생할 수 있다. 이러한 이상현상을 해결하기 위해 제3정규형보다 좀 더 엄격한 제약조건을 제시한 것이 BCNF이다.
    

 

  • 학생번호-교수 릴레이션은 함수 종속 관계가 성립하지 않는 동등한 학생번호, 교수 속성으로 구성하고 {학생번호, 교수}가 기본키의 역할을 담당한다. 즉, 후보키가 아닌 결정자가 존재하지 않기때문에 BCNF에 속한다.
  • 교수-특강 릴레이션은 교수와 특강이 함수 종속 관계를 띄우며, 교수가 유일한 후보키이자 기본키이다. 즉, 후보키가 아닌 결정자가 존재하지 않기때문에 BCNF에 속한다.

고급 정규형 (제4정규형, 제5정규형)

  • 제4정규형
    • 릴레이션이 BCNF를 만족하면서, 함수 종속이 아닌 다치 종속(MVD: Multi Valued Dependency) 를 제거해야 만족할 수 있다.
  • 제5정규형
    • 릴레이션이 제4정규형을 만족하면서 후보키를 통하지 않는 조인 종속(JD: Join Dependency) 을 제거해야 만족할 수 있다.

실제로 데이터베이스를 설계할 때 모든 릴레이션이 무조건 제5정규형에 속하도록 분해해야 하는 것은 아니다.

오히려 그렇게 되면 비효율적인 경우가 많다.

일반적으로 제3정규형이나 BCNF에 속하도록 릴레이션을 분해하여 데이터 중복을 줄이고 이상 현상이 발생하는 문제를 해결한다고 한다.

 

마치며..

오늘은 이렇게 데이터베이스의 정규화(Normalization) 에 대해 알아보았습니다.

이외에 전체적인 CS주제들은 https://github.com/HongEunho  https://github.com/MLifeFam/cs_interview 에 정리되어 있습니다.

반응형
반응형

JOIN(조인)

JOIN이란 '연결하다' 라는 뜻을 지닌 단어이다. 이 단어의 뜻처럼, 데이터베이스에서는

둘 이상의 테이블을 연결해서 테이블을 검색하는 방법을 이야기 한다.

 

JOIN의 종류

  1. INNER JOIN
  2. OUTER JOIN
  3. CROSS JOIN
  4. SELF JOIN


그렇다면, 이제 다음과 같은 테이블 두 개를 가지고 각각의 조인에 대해 알아보자.

 

[Star 테이블]

ID Name DepNo
1 강호동 10
2 이수근 10
3 유재석 20
4 박명수 20
5 안재현 30
6 송민호 30
7 이병헌 NULL

 

 

[Dep 테이블]

DepNo DepName
10 1박2일
20 무한도전
30 신서유기
40 이경규가간다

 

 

1. INNER JOIN (이너조인)

이너조인은 위의 그림처럼 두 개의 테이블에서 공통된 요소들을 통해 결합하는 조인방식이다.

가장 일반적인 조인으로, 조인 사용시 명령어로 INNER JOIN 대신 JOIN 만을 입력해도 INNER JOIN이 사용된다.

그럼 다음과 같이 SQL을 입력해보자.

SELECT Star.Name, Dep.DepName
From Star JOIN Dep ON Star.DepNo = Dep.DepNo

위의 Star, Dep 테이블을 가지고 INNER JOIN 을 수행한 결과는 다음과 같다.

 

Name DepName
강호동 1박2일
이수근 1박2일
유재석 무한도전
박명수 무한도전
안재현 신서유기
송민호 신서유기

Star테이블과 Dep테이블 중에서 Star의 DepNoDep의 DepNo일치하는 요소들만 골라서 출력을 하게된다.

 

여기서 눈여겨 보아야 할 부분은,

Star테이블의 '이병헌'과 Dep테이블의 '이경규가 간다' 라는 행이 누락되어 있는 것이다.

이 둘은 두 테이블 간의 공통된 데이터가 없기 때문이다.

 

즉, '이병헌'은 DepNoNull이기 때문에 Dep테이블과 겹치는 부분이 없으며

'이경규가간다' 는 Star테이블에서 같은 DepNo 코드를 가진 데이터가 없기 때문에 출력되지 않은 것이다.

이렇듯, INNER JOIN은 ON의 조건에 맞는 공통된 부분이 있는 경우에만 출력이 된다.

 


2. OUTER JOIN (아우터조인)

위의 INNER JOIN은 공통된 부분이 있는 행만 출력을 해주었는데,

공통된 부분이 없는 데이터도 함께 보고싶은 경우가 있을 것이다.

이럴 때 사용하는 것이 바로 OUTER JOIN이다.

OUTER JOIN은 크게 LEFT(OUTER) JOIN RIGHT(OUTER) JOIN, FULL OUTER JOIN으로 나눌 수 있다.

 

2.1 LEFT JOIN

공통적인 부분 + LEFT 테이블에 있는 것만 출력

 

SELECT Star.Name, Dep.Name
FROM Star LEFT JOIN Dep
ON Star.DepNo = Dep.DepNo

 

위의 쿼리를 실행한 결과는 다음과 같다.

Name DepName
강호동 1박2일
이수근 1박2일
유재석 무한도전
박명수 무한도전
안재현 신서유기
송민호 신서유기
이병헌 NULL

공통된 값 + 왼쪽 테이블에만 있는 값이 출력된 것을 알 수 있다.

 

반면, 여기서 만약 공통된 부분마저 제외하고 왼쪽에 '만' 있는 것을 출력하고 싶다면
다음과 같이 NULL을 이용하여 한 가지 조건만 더 추가해주면 된다.

SELECT Star.Name, Dep.Name
From Star LEFT JOIN Dep
ON Star.DepNo = Dep.DepNo
WHERE Star.DepNo IS NULL

 

위 쿼리를 실행한 결과는 다음과 같다.

Name DepName
이병헌 Null

 

2.2 RIGHT JOIN

공통적인 부분 + 오른쪽에 있는 것만 출력

 

SELECT Star.Name, Dep.Name
FROM Star RIGHT JOIN Dep
ON Star.DepNo = Dep.DepNo

 

위 쿼리를 실행한 결과는 다음과 같다.

Name DepName
강호동 1박2일
이수근 1박2일
유재석 무한도전
박명수 무한도전
안재현 신서유기
송민호 신서유기
NULL 이경규가간다

 

여기서, 위의 LEFT JOIN과 마찬가지로 RIGHT 테이블에 '만' 있는 것을 출력하고 싶다면
똑같이 NULL 속성을 이용하여 출력할 수 있다. (위의 LEFT JOIN 설명 참고)

 

2.3 FULL OUTER JOIN

A테이블이 가지고 있는 것 + B 테이블이 가지고 있는 것 모두

SELECT Star.Name, Dep.Name
FROM Star FULL OUTER JOIN Dep
ON Star.DepNo = Dep.DepNo

 

위 쿼리를 실행한 결과는 다음과 같다.

Name DepName
강호동 1박2일
이수근 1박2일
유재석 무한도전
박명수 무한도전
안재현 신서유기
송민호 신서유기
이병헌 NULL
NULL 이경규가간다

즉, LEFT OUTER JOIN과 RIGHT OUTER JOIN의 결과값을 합친 것이라고 볼 수 있다.


3. CROSS JOIN(크로스 조인)

크로스 조인은 두 테이블 간의 가능한 모든 경우의 수에 대한 결과를 보여 준다.

즉, 카디널리티 곱을 한 것이다.

SELECT Star.Name, Dep.DepName
FROM Star CROSS JOIN Dep

 

위 쿼리를 실행한 결과는 다음과 같다.

Name DepName
강호동 1박2일
이수근 1박2일
유재석 1박2일
박명수 1박2일
안재현 1박2일
송민호 1박2일
이병헌 1박2일
강호동 무한도전
이수근 무한도전
... ...
송민호 이경규가간다
이병헌 이경규가간다

위의 결과 처럼, 두 테이블의 모든 행들을 서로 교차하여 곱한다고 생각하면 된다.

그래서 Star테이블(7행) x Dep테이블(4행) = 28 행이 탄생하게 된다.


4. SELF JOIN(셀프조인)

셀프 조인은 이름처럼 자기 혼자서 '스스로' 결합을 하는 방식이다.

즉 위의 LEFT, RIGHT 조인과는 다르게 다른 테이블을 참조하는 것이 아닌 자기 자신을 참조한다.

SELF JOIN이 필요한 상황을 예를 들어 설명해보겠다.

 

[A 테이블]

ID Name Partner
1 강호동 3
2 유재석 4
3 나영석 5
4 김태호 6
5 이명한 1
6 박명수 2

위의 A 테이블을 보면 각각의 스타의 ID와 이름, Partner의 번호가 부여되어 있다.

이 때, Partner의 번호 대신 이름을 알고 싶다면 어떻게 해야 할까?

 

이때 SELF JOIN을 이용하면 이름을 알 수 있다.

Partner의 정보도 같은 테이블 내에 존재하기 때문이다.

이렇게 Self 조인 쿼리를 작성해보자.

 


SELECT A.ID, A.Name, A.Partner, B.Partner PartName
FROM Star A JOIN Star B 
ON A.Partner = B.ID

 

위 쿼리를 실행한 결과는 다음과 같다.

ID Name Partner PartName
1 강호동 3 나영석
2 유재석 4 김태호
3 나영석 5 이명한
4 김태호 6 박명수
5 이명한 1 강호동
6 박명수 2 유재석

이렇게 하나의 테이블을 가지고 SELF JOIN을 이용하여 원하는 값을 출력할 수 있다.


마치며..

데이터베이스는 개발직 면접에서 자주 등장하는 단골 분야이다.

따라서, 다음과 같은 질문에 답을 할 수 있도록 미리 준비해보는 것도 추천한다.

  • JOIN의 종류와 각각의 종류의 특징에 대해 이야기 해보세요
  • SELF 조인을 사용할 경우를 예를 들어 보세요
  • LEFT OUTER JOIN을 수행할 때, 오직 LEFT에만 있는 값을 가져오도록 쿼리를 한번 짜보세요.

 

오늘은 이렇게 데이터베이스의 조인(Join)에 대해 알아보았습니다.

이외에 전체적인 CS주제들은 https://github.com/HongEunho  https://github.com/MLifeFam/cs_interview 에 정리되어 있습니다.

반응형
반응형

관계 데이터 모델

관계 데이터 모델에서 지원하는 언어는 총 2가지가 있다.

  1. 관계 해석 - 원하는 데이터만 명시하고 질의를 "어떻게 수행할 것인가"는 명시하지 않는 선언적 언어
  2. 관계 대수 - "어떻게 질의를 수행할 것인가"를 명시하는 절차적 언어

 

관계 대수 (Relation Algebra)

  • 릴레이션들을 다루는 연산들
  • 기존의 릴레이션들로부터 새로운 릴레이션을 생성함.
  • 연산자들을 사용하여 보다 복잡한 관계 대수식을 점차적으로 만들 수 있음.
    기본적인 연산자들의 집합으로 이루어짐.
  • 결과 릴레이션은 또 다른 관계 연산자의 입력으로 사용될 수 있음.
    1. 단일 혹은 두 개의 테이블들을 입력 받아 결과 테이블을 생성.
    2. 집합 연산을 토대로 만든 것이 관계 대수이며, 기본적으로는 집합 연산자에 속함.
  • 특징

 

셀렉션 (Selection)

  • 릴레이션 R에서 어떤 선택 조건을 만족하는 튜플들을 선택(원하는 데이터를 수평적으로 도출)
  • 결과 릴레이션은 R과 동일한 애트리뷰트(속성)을 가짐

 

 

프로젝션 (Projection)

  • 한 릴레이션의 속성들의 부분 집합을 구함(원하는 데이터를 수직적으로 도출)
  • 중복 튜플 존재 X

 

합집합 (Union)

  • 릴레이션1에 있거나, 릴레이션2에 있는 튜플들로 이루어진 릴레이션을 반환
  • 결과 릴레이션에서 중복된 튜플들을 제거

 

 

교집합 (Intersection)

  • 릴레이션1과 릴레이션2에 동시에 속하는 튜플들로 이루어진 릴레이션

 

차집합 (Relative Complement)

  • 릴레이션R과 릴레이션S에 대해 R에는 속하지만 S에는 속하지 않은 튜플들로 이루어진 릴레이션

 

 

카티션 프로덕트 (카티션 곱 연산자(Cartesian Product))

  • 카디널리티가 i인 릴레이션 R(A1, A2, ... An)과 카디널리티가 j인 릴레이션 S(B1, B2, ... Bn)의 카티션 곱 R X S는
    차수가 n+m이고 카디널리티가 i*j이고, 속성이 (A1, A2, ... An, B1, B2, ... Bn)이다
  • R과 S의 튜플들의 모든 가능한 조합인 릴레이션으로, 카티션 곱의 결과 릴레이션은 크기가 매우 클 수 있다.
  • 유용하지 않음(보통 카티션 곱의 일부분만 원하기 때문)

 

 

디비전 (Division)

  • 차수가 n+m인 릴레이션R 과 차수가 m인 릴레이션S 의 디비전 R / s는 차수가 n이 되고,
    S에 속하는 모든 튜플 u에 대하여 tu가 R에 존재하는 튜플 t들의 집합

릴레이션R % 릴레이션S 로 표현

 

 

조인(Join)

  • 두 개의 릴레이션으로부터 연관된 튜플들을 결합하는 연산자이다.
    관계형 데이터베이스에서 두 개 이상의 릴레이션들의 관계를 다루는데 매우 중요한 연산자
  • 세타 조인, 동등 조인, 자연 조인, 외부 조인 등이 있다.

 

오늘은 이렇게 데이터베이스의 관계대수에 대해 알아보았습니다.

이외에 전체적인 CS주제들은 https://github.com/HongEunho  https://github.com/MLifeFam/cs_interview 에 정리되어 있습니다.

반응형
반응형

데이터베이스 키(Key)

데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때, 다른 튜플들과 구별 할 수 있는 유일한 기준이 되는 속성

 

키(key)의 특징

Key의 특징으로는 다음과 같은 종류가 있다.

이 특징들은 Key의 종류에 따라 만족하는 경우도 있고, 그렇지 않은 경우도 있다.

  • 유일성 : 유일한 값을 가져야 함.
  • 최소성 : 최소한의 값으로 식별할 수 있어야 함.
  • 불변성 : 변하는 값이어선 안 됨.

 

키(Key)의 종류

키의 종류에는 슈퍼키, 후보키, 기본키, 대체키, 외래키가 있다.

다음의 릴레이션을 예시로 종류 별로 알아보도록 하자.

이미지 출처 : https://moonibot.tistory.com/61

슈퍼키

  • 유일성 O , 최소성 X
  • 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키. 
  • 유일성을 만족하므로 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.
<학생> 릴레이션에서는 학번, 주민등록번호, [학번, 주민등록번호], [학번, 주민등록번호, 이름] 등이 슈퍼키이다.

 

후보키

  • 유일성 O , 최소성 O
  • 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
  • 최소성을 만족하므로 최소의 개수로 이루어져야 한다.

<학생> 릴레이션에서는 학번, 주민등록번호가 후보키 이며
<수강> 릴레이션에서는 [학번, 과목명]으로 조합해야 유일성과 최소성을 만족하므로 [학번, 과목명] 이 후보키가 된다.

 

기본키

  • 후보키 선택받은 키
  • 후보키의 성질을 가지므로 유일성최소성을 만족한다
  • NULL 값과 중복된 값을 가질 수 없다.

<학생> 릴레이션에서의 후보키인 학번이나 주민등록번호 중에 하나를 기본키로 설정할 수 있고,
<수강> 릴레이션에서는 [학번, 과목명] 을 기본키로 설정 할 수 있다.

 

대체키

  • 후보키선택받지 못한 키

<학생> 릴레이션에서 학번이 기본키가 된다면 주민등록번호는 대체키가 된다.

 

외래키

  • 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
  • 릴레이션 간의 관계를 표현할 때 사용한다
  • 참조 릴레이션의 기본키와 동일한 키 속성을 가진다

<수강> 릴레이션의 학번은 <학생> 릴레이션의 기본키인 학번을 참조하고 있으므로,
<수강> 릴레이션에서 학번은 외래키가 된다.

이로써 <학생> 릴레이션과 <수강> 릴레이션이 학번을 기준으로 관계가 설정된 것이라 할 수 있다.

 

외래키가 필요한 이유?!

외래키의 존재 이유는 데이터 무결성 때문이다.

여기서 무결성이란, 데이터가 항상 정확한 값을 유지하는 성질을 의미한다.
예를 들어 학생 릴레이션의 학번이 변경되었을 때, 수강 릴레이션의 학번 값이 변경되지 않는다면 무결성이 깨지게 된다.

 

마치며..

오늘은 이렇게 데이터베이스의 키에 대해 알아보았습니다.

이외에 전체적인 CS주제들은 https://github.com/HongEunho  https://github.com/MLifeFam/cs_interview 에 정리되어 있습니다.

반응형
반응형

데이터베이스

  • 데이터베이스는 일반적으로 컴퓨터 시스템에 전자적으로 저장되는 구조화된 정보
    또는 데이터의 조직화된 모음이다.
  • 데이터베이스는 데이터베이스 관리 시스템(DBMS)에 의해 제어된다.
  • 데이터베이스는 다음의 4가지 특징을 갖는다.
    • 실시간 접근 (real-time accessibility)
    • 계속 변화 (continuous evolution)
    • 동시 공유 (concurrent sharing)
    • 내용으로 참조 (content reference)
  • 주로 사용되는 데이터베이스의 종류로 크게 2가지가 있다.
    • 관계형 데이터베이스
      • 행과 열로 구성된 테이블간의 관계를 나타내며, SQL을 통해 관리한다.
      • MySQL, Maria DB, MS-SQL 등이 있다.
    • NoSQL
      • 관계형 데이터 베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태로, 수평적 확장성을 갖고 있다.
      • Mongo DB, Cassandra 등이 있다.

 

데이터

  • 데이터베이스의 가장 중요한 목적은 데이터를 모아두는 것이다.
  • 데이터는 형태에 따라 3가지로 분류할 수 있다.
    • 정형 데이터
      • 구조화된 데이터, 즉 미리 정해진 구조에 따라 저장된 데이터다.
      • 엑셀의 스프레드시트, 관계형 데이터베이스의 테이블
    • 반정형 데이터
      • 구조에 따라 저장된 데이터지만, 정형 데이터와 달리 데이터 내용 안에 구조에 대한 설명이 함께 존재
      • HTML, XML, JSON 등이 반정형 데이터에 속한다.
    • 비정형 데이터
      • 정해진 구조 없이 저장된 데이터다.
      • 소셜 데이터의 텍스트, 영상, 이미지, PDF와 같은 멀티미디어 데이터가 비정형 데이터에 속한다.

 

데이터베이스 관리 시스템(DBMS)

  • 데이터베이스 관리 시스템 등장 이전에 사용되던 파일 시스템의 데이터 중복데이터 종속 문제를 해결하기 위해 제시된 소프트웨어이다.
  • 응용 프로그램을 대신하여 데이터베이스에 들어 있는 데이터를 삽입, 삭제, 수정, 검색하고, 모든 응용 프로그램이 데이터베이스를 공유할 수 있게 한다.

 

SQL (Structured Query Language)

  • SQL은 데이터를 조작 및 제어하기 위해 거의 모든 관계형 데이터베이스에서 사용되는 프로그래밍 언어이다.

 

스키마 (Schema)

  • 스키마는 데이터베이스에 저장되는 데이터의 구조제약조건에 관해 전반적인 명세를 기술한 것이다.
    즉, DB내에 어떠한 구조로 데이터가 저장되는지를 나타내는 데이터베이스의 구조이다.
  • 데이터베이스의 복잡한 내부 구조를 감추고 일반 사용자가 데이터베이스를 쉽게 이해하고 이용할 수 있도록 하기 위해, 사용자의 관점에 따라 세 가지로 분류한다.
    1. 외부 스키마
      • 프로그래머나 사용자 입장에서 데이터베이스의 모습으로 조직의 일부분을 정의한 것
      • 전체 데이터베이스의 한 논리적인 부분이므로 서브 스키마 라고도 한다.
      • 하나의 데이터베이스 시스템에는 여러개의 외부 스키마가 존재할 수 있고, 하나의 외부 스키마를 여러개의 응용 프로그램이나 사용자가 공용할 수도 있다.
      • 일반 사용자는 질의어(SQL)을 통해, 응용 프로그래머는 C, JAVA등의 언어를 통해 접근한다.
    2. 개념 스키마
      • 모든 응용 시스템과 사용자들이 필요로하는 데이터를 통합한 조직 전체의 데이터베이스 구조를 논리적으로 정의한 것
      • 개념스키마는 개체간의 관계와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.
      • 데이터베이스 파일에 저장되는 데이터의 형태를 나타내는 것으로, 단순히 스키마(Schema)라고 하면 개념 스키마를 의미한다.
    3. 내부 스키마
      • 전체 데이터베이스의 물리적 저장 형태를 기술하는 것으로, 물리적 저장장치의 관점에서 본 데이터베이스 구조이다.
      • 내부스키마는 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서 등을 나타낸다.
      • 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다.

 

릴레이션 (Relation)

  • 관계형 데이터 모델에서는 하나의 개체에 관한 데이터를 하나의 릴레이션에 담아 데이터베이스에 저장한다.
    즉, DB에서 릴레이션은 DB 테이블을 뜻한다.
  • 릴레이션과 관련된 용어들은 다음과 같다.
    • 속성 (attribute)
      • 릴레이션의 열을 속성이라고 부른다.
      • 각 속성은 서로 다른 이름을 이용해 구별한다.
      • 릴레이션은 파일 관리 시스템에서의 파일, 속성은 필드에 대응하는 개념이다.
    • 튜플 (tuple)
      • 릴레이션의 행을 튜플이라고 부른다.
      • 튜플은 파일 관리 시스템에서 해당 파일의 레코드에 대응하는 개념이다.
    • 도메인 (domain)
      • 릴레이션에 포함된 각각의 속성들이 가질 수 있는 원자값들의 집합이다.
      • 예를 들어 속성의 값으로 Red, Green, Blue, White 중 하나만 허용될 때, 이 4가지 값을 모아놓은 것이 속성의 도메인이 된다.
    • 차수 (degree)
      • 하나의 릴레이션에서 속성의 전체 개수를 릴레이션의 차수라고 한다.
      • 모든 릴레이션은 최소 1 이상의 차수를 유지해야 한다.
      • 릴레이션의 차수는 일반적으로 자주 변하지 않는다는 정적인 특징이 있다.
    • 카디널리티 (cardinality)
      • 하나의 릴레이션에서 튜플의 전체 개수를 릴레이션의 카디널리티 라고 한다.
      • 튜플이 없는 릴레이션이 존재할 수도 있다.
      • 릴레이션의 카디널리티는 일반적으로 자주 변한다는 동적인 특징이 있다.

 

마치며..

오늘은 이렇게 데이터베이스의 기본 용어들에 대해 알아보았습니다.

이외에 전체적인 CS주제들은 https://github.com/HongEunhohttps://github.com/MLifeFam/cs_interview 에 정리되어 있습니다.

반응형

+ Recent posts