- 키워드
- 강의 후기
Related DataBase Management System의 준말로, 관계형 데이터 베이스를 생성하고 관리할 수 있는 소프트웨어이다.
그렇다면 관계형 데이터 베이스는 무엇일까?
RDB는 Relational DataBase의 준말로, 관계형 데이터 베이스를 뜻한다.
관계형 데이터 모델이란, 데이터 간의 상관관계에서 개체간의 '관계'를 표현한 데이터 모델을 말한다.
이들은 관계 조작에 의해 자유롭게 구조를 변경할 수 있다는 것이 큰 특징이다!
DBMS는 DataBase Management System의 준말로, 데이터 베이스를 생성하고 관리할 수 있는 소프트웨어이다.
특징
NoSQL은 DBMS의 종류 중 하나이다.
SQL은 Structured Query Language 준말인데, 여기에 No가 붙었으면, 무슨 의미일까?
많은 의견들이 있지만 Not Only SQL로 풀어 설명하는 것이 의미를 설명하기 쉽다.
"SQL만이 아니다"라는 뜻의 NoSQL은 단순히 기존 관계형 DBMS가 갖고 있는 특성뿐만 아니라, 다른 특성들을 부가적으로 지원하는 SQL이다.
특징
Data Definition Language의 줄임말로, 객체의 생성, 변경, 삭제 명령어를 뜻함
주로 데이터 베이스 관리자나 설계자가 사용함
-> 쉽게 말해 Schema를 만드는 명령어이다!
ex) Create, Alter, Drop
Data Manupulation Language의 줄임말로, 저장된 데이터를 조작하는 명령어를 뜻함
주로 데이터 베이스 사용자와 관리 시스템 간의 인터페이스를 제공함
ex) Select, Insert, Delete, Update
Data Control Language의 줄임말로, 객체의 권한 부여에 대한 명령어를 뜻함
데이터 베이스 관리자가 데이터 관리 목적으로 사용!
ex) Grant, Revoke
Transaction Control Language의 줄임말로, DCL에서 트랜잭션을 제어하는 명령어만을 따로 분리해서 TCL이라고 표현함
ex) Commit, Rollback
Database = 데이터를 저장하는 저장소
Table = 데이터 베이스 안에 실제 데이터가 저장되는 형태
엑셀 파일로 쉽게 예시를 들 수 있음!
Table = 우리가 엑셀 화면에서 익히 알고 있는 행과 열로 된 시트 (2차원)
행과 열의 형태로 관리되며, 키를 지정함으로써 원하는 자료를 쉽게 찾아낼 수 있다.
엑셀 파일 하나에 여러개의 시트가 존재할 수 있듯이, 하나의 데이터 베이스 안에도 여러개의 테이블이 존재 가능하다.
밑에서 자세히 알아보자.
위의 엑셀 파일을 생각하면 쉽다.
관계형 데이터베이스에서는 record(레코드) 또는 tuple(튜플)이라고 부르기도 한다.
하나의 테이블에서 모든 row는 동일한 구조를 가지고 있다.
관계형 데이터베이스에서는 attribute(속성)라고 부르기도 한다.
field(필드)라고 부르기도 하는데 정확히 말하자면, 필드는 한 열이나 한 컬럼 사이의 교차로 존재하는 단일 항목을 특정할 때 언급하는 것이다.
데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것!
개체의 특성을 나타내는 속성(Attribute)과 속성들의 집합으로 이루어진 개체(Entity),
개체 사이에 존재하는 관계(Relation)에 대한 정의와
이들이 유지해야 할 제약조건들을 기술한 것임!
쉽게 말하면, DB내에 어떤 구조로 데이터가 저장될지를 나타내는 데이터베이스의 구조이다.
key란 데이터 베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 Attribute(속성)를 말한다.
줄여서 PK라고도 한다. 각 테이블의 대표인 값이자 고유한 값으로, 테이블 당 1가지의 속성만 기본키로 정의될 수 있고 NULL 값일 수 없다.
예를 들어, 우리나라에서 '김민지'라는 이름을 가진 사람들은 매우 많을 것이다.
그래서 우리는 김민지라는 이름을 가진 사람들을 구분하기 위해 주민등록번호를 사용한다.
이때 주민등록번호가 하는 역할이 기본키의 역할이라고 생각하면 된다.
후보키는 기본키와 비슷하다. 위의 예시에서는 주민등록번호가 기본키의 역할을 한다고 하였다.
그러나 주민등록번호만이 기본키의 역할을 할 수 있는 것은 아니다.
휴대폰 번호도 사람마다 다른 값을 가지고 있기에 (NULL값을 가지지 않는다면) 기본키의 역할을 할 수 있다.
이런 키를 후보키라고 한다. 후보키 중 한 가지 속성을 고르면 그것이 기본키가 되는 것이다.
유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
최소성 : 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성만으로 구성되어야 함
대체키는 후보가 두 개 이상일 때 기본키를 제외한 나머지 후보키들을 말한다.
위에서 말한 예시의 경우, 주민등록번호와 (NULL 값이 없다고 가정한) 휴대폰 번호는 모두 후보키이고, 주민등록번호가 기본키이면 휴대폰 번호는 대체키가 되는 것이다.
외래키는 두 테이블을 연결해 관계를 맺어주는 기준이 되는 키를 말한다.
예를 들어 USER가 POST를 작성한다고 하면, 릴레이션 USER와 POST가 있을 것이다.
이때 POST 릴레이션에는 어떤 유저가 작성했는지에 대한 정보를 저장할 userid라는 attribute가 필요하다.
그러나 실제로 없는 userid가 들어갈 수도 있기 때문에 이를 방지하기 위해 '참조'라는 것을 한다.
POST 릴레이션에서 USER 릴레이션의 userid를 참조한다는 것은,
'POST 릴레이션의 userid 속성'에 'USER 릴레이션에 있는 userid'만을 저장하도록 하는 것이다.
이때 userid를 외래키라고 부른다.
슈퍼키는 한 릴레이션 내에 있는 '속성들의 집합'으로 구성된 키이다.
후보키와의 차이점은, 후보 키에 불필요한 속성을 덧붙여 장황하게 만든 것은 후보키는 아니지만 여전히 슈퍼키이다.
더 줄일 수 없는 슈퍼키, 즉 속성의 중복이 없는 슈퍼 키가 후보키가 되는 것이다.
예를 들어, 학생(학생 ID, 이름, 학년)이라는 관계의 경우 학생 ID, {학생 ID, 이름}, {학생 ID, 학년}, {학생 ID, 이름, 학년} {이름, 학년}은 모두 슈퍼 키이다.
카디널리티(Cardinality)는 절대적인 수치를 계산이 아니라, 두 개의 데이터 집합의 특성을 비교하는 상대적인 개념이다. '관계차수'라고도 한다.
관계에 하나만 참여하는지, 아니면 그 이상(2개 이상)이 관계에 참여하는지를 파악하는 것이 중요하다.
두 엔터티간에 한 번씩만 관계를 맺을때 사용된다.
엔터티에서 다른 엔터티와의 관계의 수가 여러번 정의되지만, 반대의 경우 한번만 정의될때 사용된다.
두 엔터티간의 관계가 서로 여러번 정의될때 사용된다.
릴레이션 관계에서 항상 참여하는지, 아니면 참여할 수도 있는지를 나타내며, '관계선택사양'이라고도 한다.
어떤 관계에 선택적으로 참여하는 경우!
어떤 관계에 필수적으로 참여하는 경우!
학생과 수업 엔터티에 대해 생각해보자.
학생은 수업을 신청했을 수도 있고, 신청하지 않았을 수도 있다. 즉, 관계가 있을 수도 있고 없을 수도 있기 때문에 학생 엔터티를 기준으로 학생-수업은 선택 참여 관계이다.
하지만, 수업 엔터티에서는 학생 엔터티가 필수적이기 때문에 수업 엔터티를 기준으로 수업-학생 관계는 필수 참여 관계가 된다.
나는 현재 학교에서 DB 강의를 수강 중이어서 이번 주차 강의가 반갑게 느껴졌다 ㅎㅎ
저번 주차에는 컴퓨터 네트워크 내용도 겹쳐서 확인 할 수 있고 좋았는데, 이번에 DB 내용들도 겹치는 것을 보니(예상은 했지만!)
이번 학기에 UMC를 하길 잘했다는 생각이 들었다!!
다음 주차에... 시험 기간이라 쉬는 걸까 아니면 계속 진행하는 걸까? (진짜 모름)
어쨌든 파이팅~🌟