Section3 Database

Gerald·2022년 6월 1일
0

1. 데이터베이스를 쓰는 이유??

일반인이라면 처음에 듣고 그냥 저장소 아냐? 이렇게 생각이 들 것이다. 나 또한 그냥 저장소를 의미하는 줄 알았다. 하지만 서버, 시놀로지 등 저장용도들로 사용하는 것은 따로 있다. 그러면 데이터베이스란 뭘까? '데이터베이스는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다'라고 위키백과에 적혀있다. 따라서 저장한 데이터들을 업무처리를 위해 상호작용이 되어주는 기능이라고 이해했다. 또 어떤분은 전자적으로 저장되고 사용되며 관련있는 데이터들의 조직화된 집합이라고 한다.

2. 데이터베이스의 특징

2.1 실시간 접근성(Real-Time Accessibility)

수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 한다.

2.2 계속적인 변화(Continuous Evolution)

데이터베이스의 상태는 동적이다. 즉 새로운 데이터의 삽입(Insert),삭제(Delete),갱신(Update)로 항상 최신의 데이터를 유지한다.

2.3 동시공용(Concurrent Sharing)

데이터베이스는 서로 다른 목적을 가진 여러 응용자들을 위한 것이므로 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.

2.4 내용에 의한 참조(Content Reference)

데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라, 사용자가 요구하는 데이터 내용으로 데이터를 찾는다.

2.5 예시(dbeaver 사용)


위 이미지는 chinook이라는 데이터베이스를 보여주는데 그 중 table 데이터들을 모아둔 것이다.

그리고 다음 이미지는 ERD(Entity Relationship Diagram)또는 schema(스키마)라고 부르며 서로 관계를 나태낸 것이다. 따라서 이를 통하여 데이터들의 관계를 알 수 있으며 상호작용이 가능하다. ERD와 스키마는 차이가 있지만 요샌 같은개념으로 부르는거 같다.

3. 기본키(Primary Key) & 외래키(Foreign Key)

3.1 기본키(Primary Key)


위 이미지를 보면 invoices라는 테이블에 Invoiceid라는 기본키가 표시 되어있다. 그럼 여기서 기본키란 무엇일까?? 데이터베이스는 다른 테이블(데이터)들을 상호작용하여 사용할 수 있어야 된다. 따라서 테이블마다 고유값을 정해야 되는데 그것이 바로 기본키다. 쉽게 말해서 중복값이 없어야 된다.

예시1> Customer라는 테이블생성 / customer_id를 기본키로 지정

<in>

CREATE TABLE Customer
([customer_id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
 [customer_name] VARCHAR(32) NOT NULL,
 [customer_age] INTEGER  
);

AUTOINCREMENT
기본키가 고유값을 가지기 위해 자동증가하도록 설정

예시2> Package라는 테이블생성 / package_id를 기본키로 지정

<in>

CREATE TABLE Package
([package_id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
 [package_name] VARCHAR(32) NOT NULL,
 [package_date] DATE  
);

3.2 외래키(Foreign Key)

예시3> Customer_Package라는 테이블생성 / cp_id를 기본키로 지정 / customer_id, package_id를 외래키로 받음

<in>

CREATE TABLE Customer_Package
([cp_id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
 [customer_id] INTEGER,
 [package_id] INTEGER,
 FOREIGN KEY ([customer_id]) REFERENCES "Customer" ([customer_id]) 
 ON DELETE NO ACTION ON UPDATE NO ACTION,
 FOREIGN KEY ([package_id]) REFERENCES "Package" ([package_id]) 
 ON DELETE NO ACTION ON UPDATE NO ACTION
);

ON DELETE NO ACTION
다른 테이블에 있는 기존 행의 외래 키에서 참조하는 키가 있는 행을 삭제하려고 할 때 오류를 발생시키고 DELETE가 롤백되도록 지정

ON UPDATE NO ACTION
다른 테이블에 있는 기존 행의 외래 키에서 참조하는 키가 있는 행에서 키 값을 업데이트하려고 할 때 오류를 발생시키고 UPDATE가 롤백되도록 지정


profile
비전공자로 도전하기 시작입니다!

0개의 댓글