논리적 모델링 단계
- DBMS에서 사용하는 데이터 모델에 맞추어 데이터를 표현하는 과정
- 즉, ERD를 어떻게 RDBMS에 어떻게 담을 것인가 논의하는 과정
- 데이터 정의 언어 DDL로 기술된 개념 스키마 생성
- 관계형 모델(relation model)
- 1969년 에드가 F.코드에 의해 제안
- 릴레이션으로 데이터를 표현하는 모델
- 데이터 표현이 단순하고 직관적인 구조화 모델
- 현재 대다수 DBMS의 기초
- Oracle, DB2, PostgresSQL, MySQL, MSSQL 등
릴레이션 구성
관계형 모델에서 표와 유사하게 2차원 구조로 데이터를 표현하는 구조를 릴레이션이라고 함.
스프레드 시트와 유사한 구조다.
관계형 모델은 위와 같은 표 형태로 구조화하고 저장하는 모델을 뜻한다.
일상생활에서 데이터를 저장하기 위해 사용하는 방식과 매우 유사하기 때문에 직관적인 구조화 모델이라고 한다.
관계형 모델에서는 이런 표를 릴레이션이라고 부른다.
이 릴레이션에 표 머리를 스키마라고 한다. 그리고 각각의 행들을 튜플, 또는 레코드라고 한다.
각 컬럼은 컬럼, 속성, 필드 등 다양하게 부르지만, 일반적으로 컬럼이란 말을 사용함.
관계형 모델 릴레이션은 두 개의 메타데이터로 하나의 값을 데이터화 시키는 가장 최적화된 구조다.
표와 릴레이션 모델은 뭐가 다를까?
- 레코드의 유일성
- 완벽하게 동일한 레코드는 존재하지 않는다.
- 레코드의 무순서성
- 레코드 순서는 의미가 없다.
- 컬럼의 무순서성
- 컬럼은 순서가 없다
- 컬럼값의 원자성
- 모든 값은 나눌 수 없는 단 하나의 의미. 원자성을 위배하는 것은 제대로 된 릴레이션이라고 할 수는 없음
Key의 역할
여기서 법학과 번호만 바꾸려면 어떻게 해야 할까? 하나의 레코드를 지목할 수 있는 방법이 필요하다. 모든 레코드가 유일한 값을 가지고 있는 컬럼이 Key다.
속성
개체집합에서 하나의 개체를 구분하는 것이 키 속성임. 키는 각각의 레코드를 식별할 수 있는 값을 담고 있는 컬럼이다. 유일성은 개념적 모델링, 논리적 모델링에서 모두 유효한 키 속성이다.
논리적 모델링에서는 최소성이라는 속성이 하나 더 있다.
더이상 축소할 수 없을 정도로 작게 만드는 것이 최소성이다.
키는 유일성과 최소성을 모두 만족해야 한다.
종류
- 수퍼 키super key: 유일성 만족
- 두 개의 컬럼을 합쳐서 하나의 키로 사용할 수도 있음.
- 예) 학과 이름, {학과 이름, 단과대학}, 주소, 전화번호, {전화번호, 졸업학점} 등
- 후보 키candidate key: 유일성, 최소성 만족
- 예) 학과 이름, 주소, 전화번호
- 기본 키primary key: 레코드의 구분을 위해 선택된 후보 키
- 외래 키foreign key: 참조된 다른 릴레이션의 기본 키
- 두 릴레이션에 포함된 레코드 간 연관성을 표현
관계형 모델 제약 조건
- 영역 제약 조건
- 컬럼된 정의된 영역(domain)에 속한 값으로만 컬럼 값이 결정이렇게 함으로써 데이터 무결성을 유지함.
- 즉, 정의된 영역을 벗어나는 값을 저장할 수 없음.
- 키 제약 조건
- 키는 레코드를 고유하게 구별하는 값임. 서로 다른 레코드는 절대 같은 키를 가질 수 없음.
- 개체 무결성 제약 조건
- 어떠한 기본 키 값도 null이 될 수 없음
- 참조 무결성 제약 조건
- 반드시 존재하는 레코드의 기본 키만 참조할 수 있다.
- 즉, NULL이 아닌 것만 참조할 수 있다.
NULL의 의미
- NULL은 없음 또는 0이 아닌 미지의 값에 대한 표현이다. 즉, 입력된 적이 없는 값이다.
- 적용 불가능한 값
논리적 데이터 모델링
- DBMS의 구현 모델에 맞춰 데이터를 표현하는 과정
- 데이터 정의 언어 DDL로 기술된 개념 스키마 생성
- 논리적 데이터 모델링의 필요
- RDBMS 구현 모델에 맞춰 데이터 구조와 관계를 표현
- 개념적 모델링 단계에서 작성된 ERD를 RDBMS가 수용 가능한 구조로 변환
ERD 변환 과정
- 개체 집합: 개체 집합은 릴레이션으로 변환
- 약한 개체 집합: 강한 개체 집합의 키 속성을 약한 개체 집합의 릴레이션에 포함
- 약한 개체 집합은 다른 하나가 존재하지 않으면 존재할 수 없는 것을 뜻함.
- 이를 테면 학생 릴레이션이 있어야, 수강 릴레이션이라는 것이 존재할 수 있는 것이 약한 개체 집합임.
- 일대일 관계: 두 릴레이션 중 한 릴레이션의 기본 키를 다른 릴레이션에서 외래 키로 참조
- 이때 양쪽 어느 쪽이든 외래 키를 가질 수 있다. 중요한 건 되도록이면, 레코드 갯수가 적은 쪽으로 가는 것이 좋다.
- 일대다 혹은 다대일 관계: 1 쪽 기본 키를 N쪽 릴레이션에서 외래 키로 참조
- 다대다 관계: 관계 릴레이션을 생성하고 두 릴레이션의 기본 키를 각각 참조하는 외래 키를 복합키 형태의 컬럼으로 구성
- 다중값 속성: 릴레이션의 기본 키를 참조하는 외래 키와 다중값 속성으로 별도의 릴레이션으로 구성
- 단계 집합의 속성: 외래 키가 위치한 릴레이션의 컬럼으로 삽입
데이터 연산
관계 연산의 개념
- 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 표현.
- 사용자의 관점에서 필요한 데이터를 릴레이션에서 추출하는 방법을 제공하는 도구
- 관계 대수(relation algebra)
- 관계 연산을 정의하는 방법
- 주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자로 구성
- 관계 대수 연산자는 새로운 임시 릴레이션을 생성
- 연산자를 중첩하여 연산 처리 절차 표현
SELECT 연산
- 주어진 릴레이션에서 특정 조건을 만족하는 레코드를 갖는 릴레이션을 생성한다.
- 조건: =, ≠, <, >, ≤, ≥
- 조건 결합: AND, OR
프로젝트 연산
- 기술된 컬럼만 갖는 릴레이션으로 재구성
??? 모든 컬럼을 조회하는 것과 지정한 컬럼만 뽑아내는 것 모두 SELECT문에서 처리하기 때문에 같은 건 줄 알았는데 개념적으로는 SELECT와 PROJECT연산으로 구분하는 듯하다.
집합 연산자
- 수학적 집합 이론에서의 이진 연산
- 합집합
- 교집합
- 차집합
- 릴레이션은 집합, 레코드는 집합에 포함된 원소
- 집합 연산자 사용 조건
- 릴레이션 R과 S의 차수가 동일
- 모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼의 도메인이 반드시 동일
카티시언 프로덕트 연산
- 두 릴레이션에 포함된 레코드 간 모든 조합을 생성하는 이항 연산자
카테시언 프로덕트는 R과 S의 모든 조합을 생성한다.
별 쓸모 없을 것 같지만 join 연산 내부적으로 사용됨.
조인 연산
- 두 릴레이션에서 조건을 만족하는 레코드를 결합한 레코드로 구성된 릴레이션을 생성
- 카티시언 프로덕트로 결과를 만들고 거기서 SELECT 연산으로 원하는 데이터를 걸러냄.
'Study > 강의 메모' 카테고리의 다른 글
SQL(1) (0) | 2022.03.22 |
---|---|
데이터 모델링 수업 (0) | 2022.03.15 |