AI & Data를 활용하는 기술경영자

Data Models 본문

Data Engineering

Data Models

Data_Lover 2022. 11. 23. 01:19
728x90

Data Models

https://www.edwith.org/database/lecture/27849?isDesc=false <Data Models>

 

정의

저번 블로그에서는 데이터베이스의 기본적인 개념을 배웠다면 이번 시간에는 데이터 모델에 대해서 배울 것입니다.

데이터 모델은 데이터 베이스의 구조를 기술하기 위한 것으로 데이터베이스의 바탕이 되는 구조입니다.

 

왜냐하면, 데이터 모델은 저장된 데이터들의 관계를 설명해주고 데이터베이스가 어떻게 논리적인 구조로 이뤄지는 지를 정리하고, 데이터가 서로 연결된 이유를 정의하면서 시스템 내에서 데이터들이 어떻게 정리되고 저장되는지를 말합니다.

 

즉, 데이터베이스를 구축할 때는 체계화된 구조를 갖추는 것이 필요하고 이를 명시하는 개념들의 집합으로 단순히 데이터베이스의 구조에 대한 기술을 넘어서 구조에서 허용되는 연산과 제약조건 등을 말하는 것입니다.

 

전문적인 것처럼 말하면, data, data relationships, data semantics, data constraints를 기술하는 툴입니다.

 

플랫데이터베이스

초기 데이터 모델은 플랫데이터베이스라고도 불리는데 이는 모든 데이터베이스는 단순히 하나의 테이블로 표현되고, 각 테이블은 모든 데이터가 하나의 행에 저장이 되므로 각각의 데이터는 탭이나 콤마와 같은 구분자로 구분되게 저장이 되어있었기에 객체들의 복잡한 관계를 표현할 수는 없지만 매우 이해하기 쉬운 형태임을 알 수 있습니다. 

 

Data Relationship

데이터들의 관계를 표현해주는 것으로 일차원 배열로 만들어진 데이터베이스의 경우 각각의 셀은 독립적으로 보고, 테이블의 경우 행에 있는 데이터들은 하나의 쌍을 이루게 됩니다.

 

Data constraints

정확하고 유효한 데이터를 유지하기 위해서 만들어진 제약조건입니다.

 

Data Models 종류

Relational model

사람들이 알게 모르게 많이 봤던 것으로 이차원의 테이블로 쉽고 직관적으로 이해가 가능한 모델입니다.

SQL을 이용해서 데이터를 삽입, 갱신, 삭제, 검색을 하는데 사용이 되고 이는 관계형 모델이 데이터베이스의 표준이 되는데 큰 기여를 했습니다.

왜냐하면, 과거의 모델은 정보 검색을 하기 위해선 데이터베이스를 사용하는사용자가 정보 검색을 위한 프로그램까지 작성을 해야했다면, SQL은 프로그램을 작성하는 대신 자신이 원하는 데이터가 무엇인지 기술만 하면 되어서 사용하기 쉽습니다.

 

그러므로, 모든 데이터들은 테이블로 표현하고 각각의 행은 같은 수의 컬럼을 가져서 각 데이터의 관계를 직접적으로 표현하지 않고 묵시적으로 표현을 하게 됩니다.

 

마치 비유를 하자면, 지금은 도서 검색을 하려면 도서 검색대에서 검색어만 치면 되지만 과거에는 도서 검색을 위한 프로그램을 만든 후에 검색을 하고 다시 또 만들어서 검색을 하는 불편함이 있다고 생각하면 편할 것입니다.

ER model

데이터베이스를 구축하면 가장 먼저 설계해야하는 것은 "만드는 요구"를 분석해서 요구 분석 명세서를 작성하고 이를 기반으로 실제 세계의 데이터 중에 필요한 데이터를 선정하게 되고 이를 ER 모델이라고 합니다.

 

아시다시피, 데이터베이스는 객체들의 집합과 객체들의 관계를 표현해서 모델링을 하는 것이고 ER모델은 relational model 로 매핑 파는 것이 가능합니다.

object-based data model

오브젝트 베이스 데이터 모델은 오브젝트 오리엔티드 모델과 오브젝트 릴레이셔널 모델이 있는데 객체 무대를 기반으로 정보의 저장 및 검색하는 모델이라는 공통점을 갖습니다.

 

오브젝트 베이스 데이터 모델은 기존의 관계형 데이터 베이스의 안정된 성능을 사용하는 동시에 객체 지향 모델의 모델링 파워를 가미하는 특징을 가질 수 있기에 관계형 데이터베이스에선 데이터 타입이 몇몇 타입으로 제한되어 있기에 새로운 타입의 형성 및 기존 타입의 확장이 불가능하므로, 새로운 타입의 형성 및 기존 타입의 확장이 불가능합니다.

 

참고로, 모든 정보 구조는 테이블의 형태로만 한정되기에 고정된 포맷이 없고 여러 정보들이 연관되어진 비정형 복합 정보를 표현하기 어렵고, SQL에선 값에 의해 데이터의 관계가 표현되므로 복합 객체를 표현한다고 해도 상호 관련된 객체를 찾아서 처리하기 어렵습니다.

 

semistructured data model

이 모델은 웹에서 많이 사용되는 모델로 반정형 데이터라고도 불립니다. 이는, 기존의 데이터베이스와 같이 구조화된 필드로 저장되어있진 않지만 HTML 혹은 XML과 같이 메타 데이터나 스키마를 포함하고, 스키마와 데이터 사이에 구분이 없는 데이터베이스 모델이기도 합니다.

 

그래서, 스키마와 데이터 사이에 구분이 없는 데이터 베이스 모델이기에 의미 있는 요소를 구별하기 위한 태그나 마커를 포함하여 사용이 되고, XML은 인터넷 상에서 데이터를 교환하기 위한 표준 포맷으로서 정보의 구조를 나타내는 태그를 자유로이 정의할 수 있는 확장성과 내부 구조와 표현의 분리를 통해서 다양한 활용 가능성으 제공합니다.

 

그 외의 data model

네트워크 데이터 모델은 데이터를 그래픽으로 표현하는 것으로 entity들이 여러 개의 path을 통해서 접근이 가능하고 소셜 네트워크가 각광받으면서 같이 떠오르게 되었습니다.

 

계층적 모델은 계층의 꼭대기에는 루트단은 단 하나의 객체가 있고 각 개체들은 단 하나의 부모를 가지고, 그 부모들은 여러 개의 자식들을 가지는 구조 입니다.

 

Data 언어 

정의

데이터베이스에서 사용되는 언어를 말하고 기능에 따라서 data mainpulation language(DML), data definition language(DDL)이 있다고 생각하시면 됩니다.

 

데이터 언어는 데이터베이스를 구축하고 데이터 베이스를 사용하기 위해서 DBMS와 통신을 하는 수단입니다.

 

예를 들면, 사용자가 데이터 언어를 통해서 DBMS에 접근하여 이용하려고 할 때, 자신이 어떤 데이터베이스 스키마를 만들지 알려주고 삽입 하고 삭제 수정 혹은 원하는 데이터가 무엇인지 알려주는데 사용을 합니다.

 

 data mainpulation language(DML)

 

https://www.edwith.org/database/lecture/27849?isDesc=false <DML>

DML은 이름에서도 알 수 있듯이 mainpulation으로 말 그대로 데이터를 가지고 무엇인가를 하는 것으로 사용자가 데이터 삽입, 삭제, 수정, 검색 등의 처리를 데이터베이스 매니지먼트 시스템에 요구할 때 사용하는 데이터 언어(쿼리 랭귀지)를 의미합니다.

 

Query(쿼리)

쿼리는 데이터베이스의 정보를 요청하는 것으로 procedural language와 nonprocedural language로 나눌 수 있습니다.

 

절차적 언어(Procedural language)

사용자는 어떤 데이터를 원하고 어떻게 그 데이터를 얻을 수 있는지 자세히 기술을 해야하고 원하는 결과를 얻기 위해서 어떤 연산을 수행해야 되는지를 사용자가 한 과정 한 과정 다 시스템에 알려주는 것입니다.

 

비절차적 언어(Nonprocedural language)

사용자가 그 데이터를 어떻게 얻는지에 대한 자세한 기술없이 어떤 데이터가 필요한지만 기술하면 되는 것으로 사용자가 어떻게 그 데이터를 얻었는지에 대한 기술보단 자신이 원하는 데이터가 어떤 것인지에 대해서 알려주면 됩니다.

 

 data definition language(DDL)

 

DDL은 데이터베이스 스키마를 정의하고 데이터에 추가적인 특성을 표현하는데 사용되는 것입니다.

 

DDL의 컴파일러가 있는데 이는 데이터 딕셔너리에 저장된 데이터 템플릿을 만드는 것으로 데이터 언어로 작성된 스키마의 정의를 해석해서 새로운 데이터베이스를 구축하고 스키마의 정의를 데이터 딕셔너리에 저장합니다.

 

즉, 데이터 딕셔너리에는 메타 데이터를 저장합니다.

간략하게, 메다 데이터는 데이터의 데이터로 다른 데이터를 기술하기 위해서 사용되는 데이터입니다.

 

감이 안 오실 것이므로, 설명을 드리면 DVD를 예로 들면 실제 영화가 아닌 영화의 제목, 상영시간 감독과 같은 영화에 대한 정보를 메타 데이터라고 합니다.

 

정리하면, 이러한 데이터 딕셔너리에 저장되는 메타뎅데이터에는 데이터의 스키마 그리고 integrity constraints 무결성 제약 조건 그리고 authorization 권한 등이 저장이 되고 무결성 제약 조건에는 기본 키 제약 조건과 참조 무결성이 있는데 기본 키 제약 조건은 기본 키는 유일하고 넬 값을 가질 수 없다는 것입니다.

 

참조 무결성

 

참조 무결성은 외래 키는 반드시 자신의 기본 키인 참조되어지는 릴레이션에 값이 존재해야 하는 것으로 관계형 데이터베이스에선 매우 중요한 참조 조건입니다.

 

이러한,  참조 의존성이 중요한 이유는 릴레이션에서 공통적으로 어떠한 attribute를 가지고 있고, 그 공통적인 속성을 사용하는 것이 곧 서로 다른 릴레이션의 튜플을 연결시켜주는 방법이 되기 때문입니다.

 

외래 키들은 릴레이션들 사이의 관계를 올바르게 표현해주기 위해서 사용하는 것입니다.

 

위의 이미지를 통해서 설명해보면, instructor의 튜플에 있는 학과 이름은 반드시 department 릴레이션에 존재해야 하고 어떤 교수님이 통계학과라고 할 때 그 교수님이 속해 있는 통계학과는 반드시 department relation에 있어야 합니다.

 

허가(Authorization)

허가는 말 그대로 어떤 자원에 접근 하는 것을 허가하는 권한을 말하는 것입니다.

 

SQL

 

SQL은 위에서 말한 non-procedural language입니다.

 

위의 이미지를 조금 보면, instructor table에서 아이디가 22222인 교수님의 이름을 찾을 때, sql이 어떻게 작동하는지를 알 수 있습니다.

 

select 절에는 알기 원하는 값인 그 교수님의 이름이 저장이 되어 있는 네임을 씁니다.

from 절에는 어떤 테이블로부터 찾을 것인지 써줍니다.

where 절에는 원하는 조건을 기입하는 것으로 어떤 조건의 값을 찾길 원하는지를 써줘야하고, 위의 이미지를 바탕으로 설명을 드리면 instructor라는 릴레이션에 attribute의 값이 22222인 것을 찾는다고 적으면 됩니다.

관계형 데이터베이스에선 테이블을 relation이라는 다른 용어로 불리고 있는 것을 기억해야 합니다.!!

 

Database Design

두 개의 릴레이션을 사용하는 것이 아닌 두 정보를 가지고 있는 하나의 릴레이션을 만드는 것이 어떨지에서 출발을 했습니다.

위의 department name을 기준으로 두 릴레이션 instructor와 department를 합쳐서 만든 릴레이션인데 데이터 정보가 중복이 되는 경우가 있고 이로 인해서 데이터의 일관성이 훼손될 수도 있고, 추가적인 정보 입력이 어려울 수 있습니다.

 

정규화

불필요한 데이터 중복을 막기 위해서 릴레이션을 나눠가는 과정으로 아까처럼 두 개의 릴레이션이 필요해서 그 데이터들을 하나의 릴레이션을 만들 경우 문제가 발생하고, 데이터 중복이 일어나지 않게 relatino 나눠주는 방법을 정규화라고 합니다.

 

그리고, 이 정규화를 통해서 설계된 릴레이션이 잘 설계가 된 데이터베이스인지 아닌지를 스키마가 잘 디자인이 되어 있는지 아닌지를 확인할 수 있습니다.

 

 

728x90

'Data Engineering' 카테고리의 다른 글

Introduction Relational Model(1)  (0) 2022.11.25
Database Management System(DBMS)  (0) 2022.11.07
Batch Processing  (0) 2022.11.01
Stream Processing  (0) 2022.11.01
Event Streaming  (1) 2022.11.01