관계형 데이터베이스 설계는 다른 직업, 무역 또는 훈련에서처럼 자체적으로 고유한 용어 집합을 가지고 있다.
값 관련 용어들
데이터
데이터베이스에 저장하는 값이 데이터다. 데이터는 어떤 수동적이거나 자동적인 처리에 의해 바뀌기 전까지는 같은 상태를 유지한다는 측면에서 정적이다. 데이터의 의미는 그것들이 처리되기 전까지는 알 수가 없다.
정보
정보는 작업을 하거나 찾아볼 때 의미 있고 유용하도록 처리한 데이터이다. 이것은 데이터베이스에 저장된 데이터와 비교할 때, 끊임없이 변한다는 점에서, 그리고 무한대의 방법으로 처리되고 표현될 수 있다는 점에서 동적이다.
데이터와 정보의 차이점을 이해하는 것은 매우 중요하다. 정보는 데이터베이스 내에 적절한 데이터가 있고, 데이터베이스가 그 정보를 지원할 수 있는 방법으로 구성되어 있을 때만 제공될 수 있다.
데이터는 저장하는 것이고, 정보는 추출하는 것이다.
널
널(null)은 누락되었거나 미지의 값을 나타낸다. 처음부터 널이 0이나 하나 이상의 공백으로 구성된 텍스 문자열이 아니라는 것을 이해해야만 한다. 그 이유는 아주 단순하다.
- 0은 매우 다양한 의미를 가질 수 있다.
- 하나 이상의 공백으로 구성된 텍스트 문자열은 무의미해 보이지만, SQL과 같은 질의어에게는 궁극적으로 의미 있는 것이다. 세 개의 공백 문자 ' ' 는 'abc'와 동등하다.
- 길이가 0인 문자열도 SQL과 같은 언어에게는 허용되는 겂이고, 어떤 상황에서는 의미도 있다.
널 값
널은 앞에서 열거한 목적을 위해 사용하면 아주 유용하다. 널을 정확하게 사용하기 위해서는 도대체 왜 그것이 발생하는지를 먼저 이해해야만 한다. 테이블에서 미지의 값은 다양한 원인으로 나타난다. 한 가지 원인은 필드를 위해 필요로 하는 특정 값이 아직 정의되지 않았을 때다. 또 하나의 원인은 그것이 정말 알려지지 않았을 때다.
만약 값들 중 어떤 것도 특정 레코드에 적용되지 않는다면 필드 값은 널이 될 수 있다. '적용하지 않다(does not apply)'와 '적용할 수 없다(is not applicable)' 사이에는 매우 작은 차이점이 있음을 아는 것이 중요하다. 테이블에서 널을 허용 할지 여부는 데이터를 사용하는 방법에 의존한다.
구조 관련 용어들
테이블
관계형 모델에 따르면 관계형 데이터베이스의 데이터는 릴레이션에 저장된다. 각각의 릴레이션은 투플(레코드)과 속성(필드)들로 구성된다. 테이블은 데이터베이스의 주된 구조이고, 각 테이블은 항상 하나의 구체적인 주제를 나타낸다. 주어진 테이블이 나타내는 주제는 개체(object) 또는 사건(event) 일 수 있다.
필드
필드(속성)는 데이터베이스엣 가장 작은 구조이고, 필드가 속해 있는 테이블 주제의 특성을 나타낸다. 필드는 실제로 데이터를 저장하는 구조이다. 이 필드 데이터는 추출되고, 상상할 수 있는 거의 모든 구성을 통해 정보로 표현될 수 있다.
적절하게 설계된 데이터베이스의 각 필드는 단지 하나의 값만 포함하며, 그 이름은 그것이 가지는 값의 종류를 식별한다. 이것은 필드에 데이터를 삽입하는 것을 매우 직관적으로 만든다.
레코드
레코드(투플)는 테이블 주제의 고유한 인스턴스를 나타낸다. 이것은 필드들이 값을 포함했는지 여부와 관계없이, 테이블의 전체 필드 집합으로 구성된다. 테이블이 정의되는 방식 때문에 각 레코드는 주 키 필드의 유일한 값에 의해 데이터베이스 전체에 걸쳐 식별된다.
한 테이블의 레코드가 어떻게 다른 테이블의 다른 레코드와 연관되어 있는지 알 필요가 있으므로, 레코드는 테이블 관계를 이해하는데 핵심적인 요인이 된다.
뷰
뷰는 데이터베이스 내의 하나 이상의 테이블의 필드들로 구성된 '가상적' 테이블이다. 뷰를 구성하는 테이블들은 기반(base) 테이블이라고 알려져 있다. 자체적으로 데이터를 저장하는 것이 아니라 기반 테이블로부터 데이터를 추출하기 때문에, 관계형 모델에서는 뷰를 '가성적'이라고 부른다.
뷰의 중요한 세 가지 주요 원인은 다음과 같다.
- 여러 테이블들로부터 동시에 온 데이터에 대해 작업하는 것을 허용한다.
- 사용자가 한 테이블 또는 테이블 그룹 내의 특정 필드를 보거나 조작하는 것을 막을 수 있도록 해 준다.
- 데이터 무결성을 구현하는데 사용할 수 있다.
키
키는 테이블 내에서 매우 독특한 역할을 수행하는 특별한 필드이고, 키의 종류는 테이블 내에서의 목적을 결정한다. 테이블이 포함할 수 있는 키는 여러 종류가 있지만, 가장 중요한 두 가지는 Primary Key와 Foreign Key다.
Primary Key는 테이블 내의 각 레코드들을 유일하게 식별하는 하나의 필드 또는 필드 그룹이다. 만약 Primary Key가 둘 이상의 필드로 구성되면 Composite Key라고 한다. Primary Key는 테이블에서 가장 중요한 키다.
- Primary Key는 전체 데이터베이스에 걸쳐 특정 레코드를 식별한다.
- Primary Key 필드는 전체 데이터베이스에 걸쳐 주어진 테이블을 식별한다.
- Primary Key는 테이블 수준의 무결성을 강화하고, 테이터베이스 내의 다른 테이블들과의 관계 설정을 도와준다.
Foreign Key는 테이블 쌍 사이의 관계를 설정하는데 도움이 될 뿐만 아니라, 관계 수준의 무결성을 구현하고 보장하는데도 도움이 된다. Foreign Key의 값이 Foreign Key가 참조하는 Primary Key의 기존의 값과 반드시 일치해야 하는데, 이것은 양 테이블에 있는 레코드들이 항상 적절하게 연관되어 있음을 뜻한다.
인덱스
인덱스는 데이터 처리를 개선하기 위해 RDBMS가 제공하는 구조다. 특정 RDBMS 프로그램은 인덱스가 어떻게 작동하며 이것을 어떻게 사용할지를 결정한다. 그러나 인덱스는 노리적 데이터베이스 구조와는 결코 아무런 관계가 없다.
관계 관련 용어들
관계
특정한 방법으로 첫 번째 테이블의 레코드들을 두 번째 테이블의 레코드들과 연관을 맺게 할 수 있다면, 이 두 테이블 사이에 관계가 존재한다. 관계를 맺는 방법은 실제로 테이블들 사이에 존재하는 관계의 종류에 의존한다. 관계는 다음과 같은 이유에서 관계형 데이터베이스의 중요한 구성 요소라고 할 수 있다.
- 다중 테이블 뷰를 만들 수 있게 해 준다.
- 중복 데이터를 줄이고 이중 데이터를 배제하는데 도움이 되므로 데이터 무결성에 결정적으로 중요하다.
관계의 종류
테이블 쌍 사이에 존재할 수 있는 일대일, 일대다, 다대다라는 세 개의 전형적인 관계의 종류가 있다.
일대일 관계
첫 번째 테이블의 한 레코드가 두 번째 테이블의 오직 한 레코드와 연관되어 있고, 두 번째 테이블의 한 레코드가 첫 번째 테이블의 오직 한 레코드와 연관되어 있을 때 이 테이블 쌍은 일대일 관계를 가지고 있다. 이 종류의 관계에서 한 테이블은 부모 테이블의 역할을 하고, 다른 테이블은 자식 테이블의 역할을 한다. 양 테이블에서 같은 Primary Key를 공유할 수 있는 유일한 경우이므로, 이것은 특별한 종류의 관계다.
일대다 관계
첫 번째 테이블의 한 레코드가 두 번재 테이블의 많은 레코드들과 연관될 수 있고, 두 번째 테이블의 한 레코드가 첫 번째 테이블의 오직 한 레코드와 연관될 수 있을 때 이 테이블 쌍 사이에는 일대다 관계가 존재한다. 이것은 데이터베이스의 테이블 쌍 사이에 존재하는 가장 일반적인 관계다. 이것은 이중 데이터를 줄이고 중복 데이터를 최소화하는데 도움이 되므로, 데이터 무결성 관점에서 아주 중요하다.
다대다 관계
첫 번째 테이블의 한 레코드가 두 번째 테이블의 많은 레코드들과 연관될 수 있고, 두 번째 테이블의 한 레코드가 첫 번째 테이블의 많은 레코드들과 연관될 수 있을 때 이 테이블 쌍은 다대다 관계를 가진다. 이 관계는 연결 테이블로 설정한다. 연결 테이블은 한 테이블의 레코드들을 다른 테이블의 레코드들과 연결시키기 쉽게 해 주며, 관련된 데이터의 추가/삭제/수정에 문제가 없도록 보장하는데 도움이 된다.
참여의 종류
관계에서 테이블의 참여는 강제적 또는 선택적일 수 있다.
- 만약 테이블B에 레코드를 삽입하기 전에 테이블 A에 적어도 하나의 레코드를 삽입해야 한다면, 테이블 A의 참여는 강제적이다.
- 만약 테이블B에 레코드를 삽입하기 전에 테이블 A에 어떤 레코드도 삽입할 필요가 없다면, 테이블 A의 참여는 선택적이다.
참여의 수준
참여의 수준은 연관된 테이블의 단일 레코드와 반드시 연결되어야 하는 주어진 테이블의 최소 레코드 개수와, 연관된 테이블의 단일 레코드와 연결될 수 있도록 허용되는 주어진 테이블의 최대 레코드 개수를 결정한다.
무결성 관련 용어들
필드 명세
필드 명세(전통적으로 도메인이라고 함)는 필드의 모든 요소를 나타낸다. 각 필드 명세는 일반적, 물리적, 그리고 논리적이라는 세 종류의 요소로 구성된다.
- 일반적 요소는 필드의 가장 기초적인 정보를 구성한다.
필드 이름, 설명, 그리고 부모 테이블과 같은 항목들을 포함한다. - 물리적 요소는 필드가 어떻게 만들어지고, 그것을 사용하는 사람에게 어떻게 표현될지를 결정한다.
데이터 형, 길이, 그리고 표시 형식과 같은 항목들이 포함한다. - 논리적 요소는 필드에 저장되는 값을 설명한다.
필수 값, 값의 범위, 기본값과 같은 항목들을 포함한다.
데이터 무결성
데이터 무결성은 데이터베이스 내의 데이터의 유효성, 일관성, 그리고 정확성을 가리킨다. 데이터 무결성은 데이터베이스 설계 작업에서 가장 중요한 측면 중 하나이며, 과소평가하거나 간과하거나 부분적으로 무시할 수 없다.
데이터베이스 설계 과정 동안 구현하는 네 종류의 데이터 무결성이 있다. 세 종류의 데이터 무결성은 데이터베이스 구조의 다양한 측면에 기초를 두는 것으로, 그것들이 작용하는 분야(수준)에 따라 분류된다.
- 테이블 수준의 무결성(실체 무결성) : 테이블 내에 중복된 레코드들이 없고, 테이블 내에서 각 레코드를 식별하는 필드가 유일하고 널이 아니라는 것을 보장한다.
- 필드 수준의 무결성(도메인 무결성) : 각 필드의 구조가 정확하고, 각 필드의 값이 유효하고 일관성 있고 정확하며, 같은 종류의 필드들은 데이터베이스 전체에 걸쳐 일관성 있게 정의되어 있는 것을 보장한다.
- 관계 수준의 무결성(참조 무결성) : 테이블 쌍 사이의 관계가 정확하고, 테이블 레코드들이 임의의 테이블에서 삽입/갱신/삭제될 때마다 동기화되는 것을 보장한다.
- 업무 규칙(business rules) : 조직이 데이터를 인식하고 사용하는 방법을 기초로 하여, 데이터베이스의 특정한 측면에 대해 제약 또는 규제를 부과한다.
'소프트웨어 공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 임무 명세 정의하기 (0) | 2021.08.23 |
---|---|
[데이터베이스] 설계작업 (0) | 2021.08.23 |
[데이터베이스] 왜 데이터베이스 설계에 관심을 가져야 하는가 (0) | 2021.08.20 |
[데이터베이스] 데이터베이스의 종류 (0) | 2021.08.20 |
[데이터베이스] Attribute (속성) (0) | 2021.04.13 |