Programming/Database

데이터베이스 스키마와 기본 개념

Polyglot 2018. 6. 19. 19:23

웹이든 앱이든 어플리케이션을 만들다보면 유저들에게 데이터를 받고 다양한 처리를 해야하는 경우가 많습니다.

데이터를 처리하기 위해 데이터를 관리해야 되는데요. 그러기 위해선 데이터 베이스 설계하는 것이 중요하다고 생각합니다.

데이터 베이스 설계를 하기 위해 스키마(계획)을 세우는데요. 그럼 스키마에 관해서 알아봅시다.

자칫 설계를 잘못하거나 고려해야되는 부분을 고려하지 않아서 앱을 만들고 난 뒤 데이터베이스를 다시 설계하면 재앙일 것입니다..


데이터베이스 스키마란??

데이터 베이스 스키마는 2가지 역할을 합니다.

1. 데이터 베이스의 테이블과 칼럼에 관하여 정보를 정의를 한다.

2. 각각의 테이블 간의 관계를 시각적으로 표현한다.


즉 스키마란 시각적으로 테이블을 정의하고 테이블간의 관계를 정의하는 것을 의미합니다.

스키마를 시각적으로 보여줌으로써 전반적인 설계를 하는데 큰 도움을 줄 수가 있습니다.


<스키마 관한 사진>


기본키와 외래키

기본키 : 테이블에서 데이터가 오직 유일한 값을 가지고, 데이터에게 접근 할 수 있는 정보이다. (EX: user_id)

외래키 : 다른 테이블의 기본키를 참조해서 다른 테이블에 있는 데이터를 참조하기 위해 사용되는 키입니다.


참조 무결성이란?

외래키로 지정되는 값은 무조건!! 다른 테이블의 기본키이다 라는 개념입니다.

즉 다른 테이블을 참조하기 위해서는 유일한 데이터를 참조해야된다는 개념입니다.


부모테이블과 자식테이블

부모테이블 : 부모테이블이란 어떤 테이블에게 외래키로써 자신의 고유키를 주면 그 테이블의 부모테이블이라고 말합니다.

자식테이블 : 어떠한 테이블에서 고유키를 외래키로 받아온다면 그 테이블을 자식테이블이라고 말합니다.


테이블의 대응 방법

테이블의 대응 방법은 일대일 대응, 일대다 대응, 다대다 대응 총 3가지로 분류가 됩니다.


일대일 대응 :부모 테이블의 로우 하나가 자식 테이블 로우 하나에 연결되는 관계

테이블 A row 하나가 테이블 B의 row 하나에 연결되는 대응의 관계입니다.

스키마에서 표현할 때 화살표로 표시 하지 않고 실선으로 표현합니다.

일대일 대응은 2개의 테이블을 하나의 테이블로 묶어서 사용하는 예가 많습니다. 사용자 정보등 보안에 민감한 데이터 같은 경우 사용하면 유용합니다. (EX : 로그인 정보와 사용자 정보 테이블)


일대다 대응 : 부모 테이블의 로우 하나가 자식 테이블 로우 여러 개에 연결되는 관계 

테이블 A row 하나가 테이블 B의 여러 row와 연결되는 대응입니다.

A 데이터 하나가 B의 여러 데이터와 연결이 되므로 A의 데이터 값이 중복이 될 수가 있습니다.

스키마에서 표현할 때 화살표를 사용해서 표현합니다.


다대다 대응 : 부모 테이블에 있는 여러 로우가 자식 테이블 여러 데이터 로우와 연결되는 관계

테이블 A 여러 row가 테이블 B의 여러 row에 대응되는 관계입니다.

다대다 대응이 있을 시 일대다 대응 관계가 2개가 있는 연합테이블을 만들어서 관리를 주로 합니다.

스키마에서 표현할 때 쌍방향 화살표로 연결해 표현합니다.