728x90

1. 데이터베이스에있어 KEY란?

MYSQL과 같은 관계형 데이터베이스에는 중요한 키라는 것이 존재한다.

 

  여러 종류 키에 관해 설명하기전, 릴레이션(realation)에 관해 간단히 정리하자면 같은 성격의 데이터들의 집합을 의미하며 릴레이션은 각행을 의미하는 튜플(tuple)과 이름을 가진 하나의 열을 말하는 에트리뷰트(attribute)로 데이터를 정렬하여 관리한다.

  이러한 릴레이션의 특징 중 이번 과제와 관련이 있는 (key)가 있는데 키란, 릴레이션을 구성하는 튜플을 고유하게 식별할 수 있는 하나 이상의 애트리뷰트들의 모임을 뜻한다. 키의 종류는 수퍼키(super key), 후보키(candidate key), 기본키(primary key), 대체키(alternate key), 외래키(foreign key)로 총 5가지가 있다.

 

  첫번째, 수퍼키는 한 릴레이션 내의 특정 튜플을 고유하게 식별하는 애트리뷰트 또는 애트리뷰트들의 집합으로, 예를 들어 회사의 사원의 릴레이션에서 사원번호+이름 또는 사원번호가 수퍼키가 될 수 있다. 하지만 이러한 수퍼키는 투플들을 고유하게 식별하는데 꼭 필요하지 않은 애트리뷰트들을 포함할 수 있다는 점이 있다.

  두번째, 후보키는 각 튜플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임으로 사원번호는 사원 릴레이션의 후보 키가 되지만 사원번호+이름은 사원 릴레이션의 후보키가 아니다. 따라서, 후보키는 유일성만 만족하는 슈퍼키와는 다르게 유일성, 최소성을 모두 만족해야 하며 모든 릴레이션에는 최소 한 개 이상의 후보 키가 있고 후보키는 두개 이상의 복합 애트리뷰트로 이루어 질 수가 있다.

  세번째, 기본키는 한 릴레이션에 후보 키가 두 개 이상 있으면 설계자 또는 데이터베이스 관리자가 이들 중에서 하나를 기본 키로 선정하는 것으로, 사원 릴레이션에서 사원번호와 이메일 주소가 후보키가 될 수 있는데 관리자의 임의사원번호를 기본키로 선정할 수 있다. 만약 한 릴레이션에서 기본키를 찾을 수 없는 경우에는 레코드 번호와 같이 종종 인위적인 키 애트리뷰트를 릴레이션에 추가할 수 있으며, 기본 키로 지정된 애트리뷰트들은 모든 튜플에 대해 널(null)값을 가질 수가 없다. 따라서, 기본키는 후보키가 만족해야 하는 유일성, 최소성 뿐만 아니라 값에 대해 not null또한 만족하여야 한다.

  네번째, 대체키는 간단하게 기본키가 아닌 후보키로 관리자가 사원번호와 이메일 주소 중에 사원번호를 기본 키로 선정하면 이메일 주소가 대체키가 되는 것이다.

  마지막, 외래키다른 릴레이션의 기본키를 참조하는 애트리뷰트이며 릴레이션 간의 관계를 나타내기 위해 사용되는 키로 이를 유형과 함께 설명할 수 있다. 외래키는 사원 릴레이션에서 기본키가 사원 번호이고 부서명이 기본키는 아니지만 회사의 조직도를 나타내는 릴레이션에서 부서명이 기본키가 되어 참조되어 다른 릴레이션의 기본키를 참조하는 역할을 한다. 또한 사원 릴레이션에서 사수의 사원번호가 애트리뷰트로 존재한다면 이는 기본키가 될 수는 없겠지만 일반사원의 사원번호는 일반키가 되고 사수의 사원번호키가 기본키의 값을 가져와 하나의 릴레이션에서 외래키가 기본키를 참조하는 역할을 한다.

  정리하자면, 튜플과 애트리뷰트로 구성되어 있는 릴레이션에서 키는 이들을 구별해주는 중요한 역할을 한다는 것이다.

 

2. 무결성이란?

  키에 관해 공부하다보면 중요한 개념이 개체 무결성, 참조 무결성이 있다.

  개체 무결성(Entity Integrity)은 릴레이션의 기본키를 구성하는 속성은 NULL일수 없다는 것이다. 기본키는 하나의 릴레이션에서 속성들을 구별해주는 가장 중요한 대표 역할을 하므로 유일성, 최소성 뿐만 아니라 값에 대해 not null또한 만족해야 하는데 이것이 개체 무결성과 연관 지어지는 이유이다. 정리하자면 개체 무결성은 기본키에 속해 있는 속성은 절대 널(Null)값을 가질수 없다는것과 기본키에 속해 있는 속성은 중복 값을 가질 수 없음을 뜻하는 것이다.

  참조 무결성(Referential Integrity)은 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 것을 말한다. 외래키는 다른 릴레이션의 기본키를 참조하나는 애트리뷰트이며 릴레이션 간의 관계를 나타내기 위해 사용되는 키로 참조 무결성에 의해 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다는 규정 제약 조건은 참조 할수 없는 외래키를 가질수 없다는 것과 외래키는 NULL이거나 참조하는 테이블의 기본키와 같은 값이어야한다. 참조되는 테이블의 행을 이를 참조하는 참조키가 존재하는한 삭제될수 없고 기본키도 변경될수 없음을 뜻한다.

 

이밖에도 데이터베이스의 이론에는 여러가지가 더있지만 학습중 가장 중요해보이는 것들을 간단하게 2차시로 구성하여 적어 봤다. 다음 차시부터는 MYSQL설치부터 시작하여 실습에 관한 내용을 다뤄볼것이다.

 

728x90
728x90

학교에서 수강했던 데이터베이스 수업간 배웠던 MYSQL에 대해 포스팅을 하려한다. 

초반엔 과제를 하며 중요하다 생각했던 정의에 대해 2차시정도로 축약하여 설명한후 그 이후부터는 실습에 관련한 내용들을 주로 다뤄볼생각이다.

 

1. 데이터베이스 정의

특정 조직의 업무를 수행하는데 있어 작동하고 있는 데이터들의 모임을 데이터베이스라고 정의한다. 이러한 데이터베이스의 구성요소는 크게 개체(entity), 속성(attribute), 관계(relationship)로 크게 3가지로 나뉜다.

 

  첫번째, 개체(entity)의 경우 업무가 다루는 사물(대상)을 가리 키는 것으로 데이터베이스에서 표현하려는 객체로서 서로 구별되는 것을 뜻한다. 대학교를 예로 들면 교수, 학생, 과목이 데이터베이스에서의 개체라고 할 수 있다.

  두번째, 속성(attribute)의 경우 각 사물(대상)이 가지고 있는 상세한 특성으로 즉, 하나의 개체는 하나 이상의 속성으로 구성되어 그 개체의 특성을 설명해주는 지표가 되는 것이다. 예로 들면 교수라는 개체는 교수번호, 교수이름, 전공, 학과로 학생은 학번 이름, 학년, 학과로 과목은 과목번호, 과목이름, 학점이란 속성들로 구성되어 각각의 개체를 구성한다.

  마지막, 관계(relationship)의 경우 업무가 다루는 사물들 사이에 존재하는 연관으로 즉, 각각의 개체 또는 개체 집합들 사이의 관계를 나타내는 것이다. 예로 들면 교수와 학생은 지도라는 관계, 교수와 과목은 강의라는 관계, 학생과 과목은 등록이라는 관계로 이루어 진다 할 수 있다.

  정리하자면, 각각의 속성을 가진 개체들이 관계를 가지고 모여 만들어진 모임을 데이터베이스라고 한다.

 

2. 데이터베이스의 특징

데이터 베이스의 특징은 크게 6가지로 표현할 수 있다.

 

  첫번째, 실시간 접근성(Real-Time Accessibility)로 질의에 관해 실시간으로 처리 및 응답이 이루어져야 한다.

  두번째, 계속적인 변화(Continuous Evolution)로 데이터베이스는 만든 이후 정적인 것이 아닌 계속해서 새로운 데이터가 갱신, 삭제, 삽입 등의 동적인 특성을 가짐으로써 항상 최신의 상태를 유지하여야 한다. 물론 동적인 특성을 띔과 동시에 정확성 또한 유지해야 한다.

  세번째, 동시 공용(Concurrent Sharing)으로 데이터베이스는 여러 사용자들이 동시에 사용하는 것이므로 다수의 사용자가 동시에 같은 데이터를 이용할 수 있어야 한다.

  네번째, 내용에 의한 참조(Content Reference)로 데이터 베이스는 위치나 주소가 아닌 체중, 신장과 같은 사용자가 요구하는 데이터의 내용으로 데이터를 찾아낸다.

  다섯째, 지속성(Persistent)로 데이터 베이스는 한번 데이터를 생성하고 나면 일부러 저장매체를 훼손하지 않는 한 소멸하지 않고 지속된다.

  마지막, 상호 관련성(Inter-Related)로 데이터 베이스는 각 개체들이 서로 관계를 맺어 만들어 진다는 상호 관련성을 띈다는 특징이 있다.

 

데이터 베이스는 어떠한 성질을 가지고 있는 데이터들이 모여 있는 것으로 크게 4가지로 정의할 수 있다.

  첫번째, 통합된 데이터(Integrated Data)로 자료의 중복을 최소로 통제한다는 뜻을 가진다. 중복을 완전히 없애기는 중복이 없을 경우 다른 테이블 사이에 연관을 할 수가 없기에 불필요한 자료의 중복을 최소화한다.

  두번째, 저장된 데이터(Stored Data)로 말그대로 컴퓨터가 접근 가능한 저장매체(테이프, 디스크 등)에 저장된 자료라는 뜻을 가진다.

  세번째, 운영 데이터(Operational Data)로 한 조직의 고유 업무를 수행하기 위해 반드시 필요한 데이터로 단순한 입출력이나 임시 데이터가 아닌 존재목적이 뚜렷한 데이터 라는 뜻을 가진다.

  마지막, 공용 데이터(Shared Data)로 한 조직의 여러 응용 프로그램이 공동으로 소유, 유지, 이용하는 데이터라는 뜻을 가진다.

  정리하자면, 데이터베이스란 한 조직의 여러 응용 시스템들이 공용(shared)하기 위해 통합(integrated), 저장(stored)한 대용량(large)운영(operational)데이터의 집합이다.

 

3. DBMS란?

DBMS 제품을 설명하기전에 간단히 데이터베이스의 종류에 대해 나눠보자면 크게 계층형 데이터베이스, 네트워크형 데이터베이스, 관계형 데이터베이스로 나눌 수 있다.

 

  계층형 데이터베이스는 데이터의 관계를 트리 구조로 정의하고, 부모,자식 형태를 갖는 구조로써 상위의 레코드가 복수의 하위 레코드를 갖는 구조이다. 하지만 데이터의 중복이 생긴다는 문제점이 있다.

  네트워크형 데이터베이스는 계층형 데이터의 데이터중복 문제를 해결했고, 레코드 간의 다양한 관계를 그물처럼 갖는 구조이다. 하지만 복잡한 구조 때문에 추후에 구조를 변경한다면 많은 어려움이 따른다.

  관계형 데이터베이스는 우리가 흔히 표현하는 행(Column), (Record)로 구성된 Table간의 관계를 나타낼 때 사용한다 우리는 이렇게 표현된 데이터를 SQL(Structured Query Language)을 사용하여 데이터 관리 및 접근을 한다.

  이와는 다르게 SQL을 사용하지 않는다는 의미로 NoSQL데이터베이스가 있는데 이번 목차에서는 이러한 SQL데이터베이스인 MYSQL, MS-SQLNoSQL데이터베이스인 MongoDB의 특성에 대해 설명해보려 한다.

 

  첫번째, MYSQL PHP, jsp, 자바 웹 프로그래밍에서 사용되는 일반적인 DBMS이며, MYSQL은 공개용 소프트웨어이기 때문에 누구나 무료로 다운로드 받아 사용할 수 있지만, 상업적인 목적으로 MySQL을 사용하려면 반드시 라이센스를 별도로 구매하여야 한다. MySQL은 무료이면서 처리되는 속도 또한 상당히 빠르고 용이하며, 대용량의 데이터를 처리할 수 있는 장점과 보안에도 뛰어난 특성을 지니고 있다.

  두번째, MS-SQL C# ,asp.net 웹 프로그래밍에서 사용되는 일반적인 DBMS이며, MS-SQL은 많은 기능들이 마법사로 구성되어 있어 SQL을 몰라도 백업,튜닝,스케쥴,복제등의 관리가 가능해 DB관리툴이 편리하며, 트랜잭션 기반으로 완전한 무결성 구축이 가능하고, 여러 단계의 보안레벨을 지원해 뛰어난 보안성을 자랑하는 특성을 지니고 있다.

  마지막, MONGODB는 모드데이터가 JSON형태로 저장되며, 스키마가 없어 이에 따라 필요할 때마다 필드를 추가하거나 제거하는 것이 매우 쉬워졌음을 의미해 개발과정이 매우 단순해지고 빠르게 개발이 가능하게 되었다. key기반의 get, put 뿐만 아니라 다양한 종류의 쿼리들을 제공한다. 그리고 별도의 스토리지 엔진을 통해 파일을 저장할 수 있는 특징이 있으며, 조인과 트랜잭션이 없는 특성을 지니고 있다.

 

  정리하자면, 방식에 따라 여러 종류로 나누어 지더라도 결과적으로 DBMS 응용 프로그램과 데이터의 중재자로서 모든 응용 프로그램들이 데이터베이스를 공유할 수 있도록 관리해 주는 소프트웨어 시스템이라는 것이다.

(나의목표는 일단 MYSQL과 MONGODB를 올해안에 다뤄보는게 목표이다.) 

 

2020.09월기준, ORACLE, MY-SQL, MS-SQL순으로 세계 DBMS시장을 점유하고 있는 것으로 나타났으며 점유율로 나타낼 경우 ORACLE 42%, MY-SQL 19%, MS-SQL 16%로 나타났다. 국내 DBMS시장의 경우 ORACLE60%이상을 점유하고 있는 것으로 나타나 있다. 

*참고문헌 및 사이트
1. DBMS특징 및 구별에 관하여
https://ourcstory.tistory.com/30
https://ykh9300.tistory.com/52
https://siyoon210.tistory.com/130
https://lazyer.tistory.com/27
https://server-talk.tistory.com/29
https://ssmsig.tistory.com/19
https://league-cat.tistory.com/23
2. DBMS 시장 점유율
https://db-engines.com/en/ranking-
728x90

+ Recent posts