처음엔 파일이라는 개념이 나왔다. 하지만 더 많은 데이터를 관리하기 위해서 데이터베이스가 나왔다.
데이터베이스를 관리하는 프로그램을 MySQL, Oracle 등 관계형 데이터베이스나 MongoDB 같은 Document 모델이 나왔다,
그런데 엑셀같은 스프레드시트를 사용해서도 데이터베이스와 유사하게 사용할 수 있는데 왜 데이터베이스일까?
일단 데이터베이스는 SQL이라는 문법을 통해서 데이터베이스와 대화할 수 있다.
많은 다른 언어에서 코딩을 통해 데이터베이스에 접근할 수 있기 때문이기도 하다. 그리고 데이터베이스는 각 열에다가 제한된 크기의 데이터만 들어올수 있게 한다던지 NULL 은 못들어오게 한다던지 등의 제한을 걸 수있다.
공통점 : 데이터를 표의 형태로 표현한다. 기능 또한 비슷.
차이점 : 데이터베이스는 코딩(컴퓨터 언어)를 통해 제어
데이터 베이스는 사람과 대화 하는 것 처럼, DB에 말을 건내는 것
column: 열
row, record: 테이블의 행
Table: 데이터를 분류해서 담은것
Database (Schema): 테이블들을 분류해서 담은것 (디렉토리같은)
Database Server: 내가 설치한 데이터베이스 프로그램
데이터베이스를 작성하면 중복되는 부분이 발생할 수 있다.
예를 들어서, 어떤 글의 작성자가 중복될수있다. 그냥 그 데이터베이스를 읽어왔을 땐 직관적으로 읽어올수있지만 만약에 작성자 이름의 수정이 필요할 땐 어떻게 될까?
기존의 데이터베이스에서 수정하려면 하나하나씩 모두 수정해야할것이다
예를들어 kyu가 1억건의 게시물을 작성했다면 1억번의 수정이 필요하다.
그런데, 작성자에 대한 정보가 담긴 테이블을 하나 더 만들면 그 문제를 해결할수있다.
작성자 테이블에 작성자에 따라 고유 아이디를 부여하는 것이다.
그런 뒤에, 기존의 테이블에 있는 작성자 부분을 방금만든 작성자 테이블에 아이디를 가리키는 참조형식으로 바꾸면 1억번의 수정이 아니라 한번의 수정으로 작성자의 이름을 바꿀수있다.
그 외에 또 코멘트라는 테이블이 생기면? 이럴 떄 관계형 데이터베이스라는 것은 굉장한 효과를 발휘할 것이다.
각각 독립적인(분리된) 테이블을 읽을 때, 테이블들을 하나의 테이블로 읽을 수 있다. 이것을 관계형 데이터베이스라고 한다.
데이터베이스 프로그램을 설치하면 서버 프로그램과 클라이언트 프로그램이 같이 설치된다.
서버에서 직접 조작하는 것은 불가능하다. 항상 클라이언트에서 요청해서 서버를 통해 데이터를 조작한다.
어떤 언어를 사용해서든지 데이터베이스의 서버에 데이터를 CRUD 한다는 것은 SQL 언어를 사용해서 그 명령어를 서버에 보낸다는 것이다.