관계형 모델

1. 관계형 모델

관계형 모델은 관계형 데이터베이스의 기반이 되는 이론적 개념이다.

 

관계형 모델의 기본적인 요소는 릴레이션(Relation)이다.

릴레이션은 SQL에서 말하는 테이블에 해당된다.

 

=> 릴레이션은 테이블!

 

릴레이션에는 몇 가지 속성(attribute)이 있다.

속성은 SQL에서 말하는 열에 해당한다.

그리고 SQL에서의 행은 관계형 모델에서 튜플(tuple)이라고 한다.

 

즉,

속성(attribute) = 열

튜플(tuple) = 행

릴레이션은 튜플의 집합.

 

 

2. 관계형 모델과 SQL

 

- 합집합

합집합(union)은 릴레이션 끼리의 덧셈을 말한다.

SQL에서는 UNION에 해당한다.

 

ex)

SELECT * FROM A UNION SELECT * FROM B

 

- 차집합

차집합(difference)은 릴레이션 끼리의 뺄셈을 말한다.

SQL에서는 EXCEPT에 해당한다.

 

ex)

SELECT * FROM A EXCEPT SELECT * FROM B

 

- 교집합

교집합(intersection)은 릴레이션끼리의 공통부분(교집합)을 말한다.

SQL에서는 INTERSECT에 해당한다.

 

ex)

SELECT * FROM A INTERSECT SELECT * FROM B

 

- 곱집합

곱집합(cartesion product)은 릴레이션끼리의 대진표를 조합하는 연산을 말한다.

CROSS JOIN으로 교차결합을 하면 곱집합을 구할 수 있다.

 

ex)

SELECT * FROM A, B
SELECT * FROM A CROSS JOIN B

 

- 선택

선택(selection)은 튜플의 추출을 말한다. 선택은 제한이라 불리기도 한다.

튜플은 SQL에서 행을 말하기 때문에 WHERE 구에 조건을 지정해 데이터를 검색하는 것에 해당한다.

 

ex)

SELECT * FROM A WHERE no < 3

 

- 투영

투영(projection)은 속성의 추출을 말한다.

SQL에서 속성은 열을 말하기 때문에 SELECT 구에 결과로 반환할 열을 지정하는 것에 해당한다.

SELECT a FROM A

 

- 결합

결합(join)은 릴레이션끼리 교차결합해 계산된 곱집합에서 결합조건을 만족하는 튜플을 추출하는 연산이다.

SQL에서는 내부결합에 해당한다.

 

ex)

SELECT a FROM A INNER JOIN B ON A.no = B.no

 

데이터베이스 설계

1. 데이터베이스 설계

데이터베이스 설계란 데이터베이스의 스키마 내에 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 정의하는 것을 말한다.

데이터베이스 설계의 주된 내용은 테이블의 이름이나 열, 자료형을 결정하는 것이다.

 

- 논리명과 물리명

테이블을 설계할 때는 테이블 정의서나 설계도 등의 문서를 작성하는 경우가 많다.

CREATE TABLE에 지정하는 이름을 '물리명', 테이블의 설계상 이름을 '논리명' 이라고 한다.

 

(DB에서 사용하기 위한 이름이 물리명, 평소에 해당 테이블을 실제로 부를 때 사용하는게 논리명 이라고 생각하면 될 듯)

 

- 자료형

데이터에 맞는 자료형을 선택한다.

예를 들어 금액이나 개수처럼 수치 데이터만 다룰 수 있는 열은 주저없이 수치 자료형으로 지정하고

제조번호처럼 알파벳도 다루어야 한다면 문자열형으로 지정하는 편이 낫다.

 

데이터에 따라 1,2,3 중 하나라든가 yes, no 중에 하나만 데이터 값으로 취급하는 경우가 생기기도 한다.

이런 경우에는 데이터베이스 기능으로 제약(CHECK 제약)을 걸 수 있으므로

데이터 정합성이 중요한 부분에는 적극적으로 사용할 필요가 있다.

일반적으로, 데이터베이스 시스템에서 데이터 정합성을 체크할 수 있다면 데이터베이스에 맡기는 편이 좋다.

그리고 1,2,3 과 같은 숫자에 상,중,하 와 같은 의미를 부여해 데이터를 사용할 때는 정의서의 비고란에 적는게 좋다.

 

- 고정길이와 가변길이

문자열의 자료형에는 고정길이와 가변길이가 있다.

자리수가 이미 정해져 있는 경우에는 고정길이 문자열로 지정하고, 문자열 길이의 변동폭이 클 경우에는 가변길이 문자열이 적합하다.

 

데이터베이스 열에 저장할 수 있는 크기는 작기 때문에, 만약 큰 데이터를 저장하려면

LOB(Large Object)형으로 저장하면 된다. (단, LOB형은 인덱스를 지정할 수 없다)

 

 

- 기본키

테이블을 작성할 때 기본키 제약을 걸게 된다.

만약 기본키로 지정할 열이 마땅하지 않거나 생각이 나지 않을 경우 자동증가 열을 사용해서 기본키로 지정할 수 있다.

AUTO_INCREMENT를 지정하여 자동증가 열을 만들 수 있다.

 

 

2. ER(Entity Relationship) 다이어그램

 

테이블간의 관계를 명확히 하기 위해 설계도를 작성하는 경우 사용되는 도식이다.

즉, 개체(테이블 또는 뷰)간의 관계를 표현한다.

 

테이블 간의 관계는 대표적으로 3가지가 있다.

일대일, 일대다, 다대다

 

 

=> '설계상 테이블들이 이렇게 연관되어 있다' 라고 나타내는 것이 ER다이어그램의 역할이다.

+ Recent posts