create table EMPLOYEE ( 
   id                  INT                 PRIMARY KEY,
   name                VARCHAR(20)         NOT NULL,
   birth_date          DATE,
   sex                 CHAR(1)             CHECK(sex in ('M', 'F')),
   position            VARCHAR(10),
   salary              INT                 DEFAULT 50000000,
   dept_id             INT,
   FOREIGN KEY (dept_id) references DEPARTMENT(id) 
       on delete SET NULL on update CASCADE,
   CHECK (salary >= 50000000)
   );

 

'database' 카테고리의 다른 글

table 생성 기초  (0) 2023.10.19
sqlite 사용하기  (0) 2023.10.19
table 생성하기  (0) 2023.08.17
SQL 명령어  (0) 2023.08.17
relational data model  (0) 2023.08.07

 

create table DEPARTMENT (

id               INT                 PRIMARY KEY,

name             VARCHAR(20)         NOT NULL            UNIQUE,

leader_id        INT

);

 

 

괄호() 안의 부분을 살펴보면,

attribute name = id

data type = INT

 

attribute data type 참고: https://spidyweb.tistory.com/61

 


※ Key constraints : PRIMARY KEY

 

- table의 tuple을 식별하기 위해 사용, 하나 이상의 attribute(s)로 구성

- primary key는 중복된 값을 가질 수 없으며, NULL도 값으로 가질 수 없다

 

 

PRIMARY KEY를 선언하는 방법은 두 가지가 있다. 

 

1) attribute 하나로 구성될 때

create table PLAYER (

   id          INT          PRIMARY KEY,

   ...

);

 

2) attribute 하나 이상으로 구성될 때

create table PLAYER (

   team_id           VARCHAR(12),

   back_number       INT,

   ...

   PRIMARY KEY(team_id, back_number)

);

 

즉, 2번을 적용하여 1을 이렇게 쓸 수도 있다.

create table PLAYER (

   id          INT,

   ...

   PRIMARY KEY(id)

);

 


※ Key constraints : UNIQUE

 

- UNIQUE로 지정된 attribute(s)는 중복된 값을 가질 수 없다.

- 단, NULL은 중복을 허용할 수도 있다. (RDBMS마다 다름)

- UNIQUE를 선언하는 방법은 PRIMARY KEY와 동일하게 attribute가 하나로 구성되는 경우, 하나 이상으로 구성되는 경우로 표현

 


※ NOT NULL constraint

 

- attribute가 NOT NULL로 지정되면 해당 attribute는 NULL을 값으로 가질 수 없다.

 

'database' 카테고리의 다른 글

sqlite 사용하기  (0) 2023.10.19
SQL 예제로 구조 파악하기  (0) 2023.08.17
SQL 명령어  (0) 2023.08.17
relational data model  (0) 2023.08.07
[데이터베이스 용어] database language  (0) 2023.08.04

현재 접근 가능한 데이터베이스 보기

SHOW DATABASES;

 

데이터베이스 구축하기

CREATE DATABASE 데이터베이스명;

 


다시 SHOW DATABASES;를 하면 내가 생성한 데이터베이스가 보인다.

 

지금 선택된 데이터베이스 보고 싶을 때

SELECT database();

 

내가 사용하고자 하는 데이터베이스 보기

USE 데이터베이스명;

(-> 아마 Database changed라고 뜸)

 

잘 수행됐는지 확인해보자.

SELECT database();

(-> 아마 내가 만든 데이터베이스가 뜸. 아까 실행했을 땐 NULL이었을 것)

 

만약 내가 만든 데이터베이스를 지우고 싶다면?

DROP DATABASE 데이터베이스명;


DATABASE  vs  SCHEMA

 

- MySQL에서는 DATABASE와 SCHEMA가 같은 뜻을 의미한다. 

  즉, CREATE DATABASE 데이터베이스명 = CREATE SCHEMA 데이터베이스명

- 다른 RDBMS에서는 의미가 다르게 쓰인다

 

 

'database' 카테고리의 다른 글

SQL 예제로 구조 파악하기  (0) 2023.08.17
table 생성하기  (0) 2023.08.17
relational data model  (0) 2023.08.07
[데이터베이스 용어] database language  (0) 2023.08.04
[데이터베이스 용어] schema & state  (0) 2023.08.04

먼저, relational의 의미를 살펴보기에 앞서, set에 대해 알아보자.

 

set

- 서로 다른 elements를 가지는 collection

- 하나의 set에서 elements의 순서는 중요하지 않다

- ex) {1, 3, 22, 11, 7}

 


수학에서의 relation이란 어떤 의미가 있을까?

 

relation in mathematics

set A와 set B가 있다고 하자.

set A = {1, 2}

set B = {p, ,q, r}

 

Cartesian product A X B = {(a, b) | a ∈ A and b ∈ B}

여기에서 Cartesian product란, set A와 set B로 만들 수 있는 모든 pair의 조합즉, (1, p), (1, q), (1, r), (2, p), (2, q), (2, r)을 의미한다.

 

이와 같은 set A, set B 상황에서는 Cartesian product가 binary relation으로 밖에 나오지 않는다.

binary relation ⊆ A X B

※ ⊆ : 부분집합

 

 

 

이 개념을 확장해보자.

 

집합이 여러 개가 되면 어떻게 될까?

 

n개의 set이 있다고 하자. 

n-ary relation A X B X C X D ..... 

이런 경우를 n 튜플이라고 한다. 

 

즉, relation in mathematics는 subset of Cartesian product, set of tuples 이다.


이제 수학적 의미에서의 relation이 relational data model에 어떻게 적용되었는지 살펴보자.

 

student relation을 예로 들어보자.

 

1. domain 정의하기

- student_ids : 학번 집합, 7자리 정수

- human_names : 사람 이름 집합, 문자열

- university_grades : 대학교 학년 집합 

- major_names : 대학교에서 배우는 전공 이름 집합

- phone_numbers : 핸드폰 번호 집합

 

2. attribute of student relation

- student_ids : id

- human_names : name

- university_grades : grade 

- major_names : major

- phone_numbers : phone_num (학생 번호)

- phone_numbers : emer_phone_num (비상연락망)

 

3. student relation in relational data model

 

 

relational data model에서의 주요 개념

domain : set of atomic values (더 이상 나누어질 수 없는 값들로 이루어져 있다)

domain name : domain 이름

attribute : domain이 relation에서 맡은 역할 이름

tuple : 각 attribute의 값으로 이루어진 리스트. 일부 값은 NULL일 수 있다

relation : set of tuples

relation name : relation 이름

 

 

 

relation schema

- relation의 구조를 나타낸다.

- relation의 이름과 attributes 리스트로 표기된다

- ex) STUDENT(id, name, grade, major, phone_num, emer_phone_num)

 - attribute와 관련된 constraints도 포함한다

 

 

degree of a relation

- relation schema에서 attribute의 수

- ex) STUDENT(id, name, grade, major, phone_num, emer_phone_num)  → degree 6

 

 

 

 

'database' 카테고리의 다른 글

table 생성하기  (0) 2023.08.17
SQL 명령어  (0) 2023.08.17
[데이터베이스 용어] database language  (0) 2023.08.04
[데이터베이스 용어] schema & state  (0) 2023.08.04
[데이터베이스 용어] Data Models  (0) 2023.08.04

DDL (data definiton language)

- conceptual schema를 정의하기 위해 사용되는 언어

- internal schema까지 정의할 수 있는 경우도 있음 

 

SDL (storage definition language)

- internal schema를 정의하는 용도로 사용되는 언어

- 요즘은 특히 relational DBMS에서는 SDL이 거의 없고 파라미터 등의 설정으로 대체됨

 

VDL (view definiton language)

- external schemas를 정의하기 위해 사용되는 언어

- 대부분의 DBMS에서는 DDL이 VDL 역할까지 수행 

 

DML (data manipulation language)

- database에 있는 data를 활용하기 위한 언어

- data 추가, 삭제, 수정, 검색 등의 기능을 제공하는 언어

 

SQL (Structured Query Language)

- 통합된 언어

- 오늘날의 DBMS는 DML, VDL, DDL이 따로 존재하기 보다는 통합된 언어로 존재한다

- 대표적인 예가 relational database language에서 사용되는 SQL 

'database' 카테고리의 다른 글

SQL 명령어  (0) 2023.08.17
relational data model  (0) 2023.08.07
[데이터베이스 용어] schema & state  (0) 2023.08.04
[데이터베이스 용어] Data Models  (0) 2023.08.04
[데이터베이스 용어] DB & DBMS & DB System 의 차이  (0) 2023.08.04

database schema

- data model을 바탕으로 database의 구조를 기술(description)한 것.

(data model이 database 구조를 모델링할 수 있는 방법을 제시한 것이라면, database schema는 그 모델을 바탕으로 실제로 그 database 구조를 표현하는 것.)

- schema는 database를 설계할 때 정해지며, 한 번 정해진 후에는 자주 바뀌지 않는다.

 

relational data model

relational data model에서의 database schema는 학번, 이름, 학년, 전공

 

 

database state

- database에 있는 실제 데이터는 꽤 자주 바뀔 수 있다.

- 특정 시점에 database에 있는 데이터를 database state 혹은 snapshot이라고 한다.

- 혹은 database에 있는 현재 instances의 집합이라고도 한다.

 

 

three-schema architecture

- database system을 구축하는 architecture 중의 하나

- user application으로부터 물리적인 database를 분리시키는 목적

- 세 가지 level이 존재하며, 각각의 level 마다 schema가 정의되어 있다.

   external schemas (or user views) at external (or view) level

   conceptual schemas at conceptual level

   internal schemas at internal level

- 각 레벨을 독립시켜서 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않기 위함

- 대부분의 DBMS가 three level을 완벽하게 혹은 명시적으로 나누지는 않음

- 데이터가 존재하는 곳은 internal level

three-schema architecture

※ internal schema 

- 물리적인 저장장치와 가장 가까움. 

- 물리적으로 데이터가 어떻게 저장되는지 physical data model을 통해 표현

- data storage, data structure, access path 등 실체가 있는 내용 기술

 

※ external schema

- 실제 사용자가 바라보는 schema

- external views, user views 라고도 불림

- 특정 유저들이 필요로 하는 데이터만 표현

- 그 외 알려줄 필요가 없는 데이터는 숨김

- logical data model을 통해 표현됨

 

※ conceptual schema

- 전체 database에 대한 구조를 기술

- internal schema를 추상화 한.

- 물리적인 저장 구조에 관한 내용은 숨김

- entities, data types, entities간 relationships, user operations, constraints에 집중

- logical data model을 통해 기술 

 

'database' 카테고리의 다른 글

SQL 명령어  (0) 2023.08.17
relational data model  (0) 2023.08.07
[데이터베이스 용어] database language  (0) 2023.08.04
[데이터베이스 용어] Data Models  (0) 2023.08.04
[데이터베이스 용어] DB & DBMS & DB System 의 차이  (0) 2023.08.04

Data Models

- DB의 구조를 기술(descriptive)하는데 사용될 수 있는 개념들이 모인 집합

- DB 구조를 추상화해서 표현할 수 있는 수단을 제공.

   (이때, DB 구조는 데이터 유형, 데이터 관계, 데이터 제약 사항 등등을 포함하는 개)

- data model은 여러 종류가 있으며, 추상화 수준과 DB 구조화 방식이 조금씩 다르다

- DB에서 읽고 쓰기 위한 기본적인 동작들(operation)도 포함한다

 

data models 분류

총 세 개로 분류 가능하다.

conceptual (or high-level) data models

logical (or representational) data models

physical (or low-level) data models 

 

※ conceptual (or high-level) data models

- 일반 사용자들(비개발자)이 쉽게 이해할 수 있는 개념들로 이루어진 모델

- 추상화 수준이 가장 높음

- entity-relationship model

ER diagram

※ logical (or representational) data models

- 이해하기 어렵지 않으면서도 디테일하게 DB를 구조화할 수 있는 개념들을 제공

- 데이터가 컴퓨터에 저장될 때의 구조와 크게 다르지 않게 DB 구조화를 가능하게 함.

- 특정 DBMS나 storage에 종속되지 않는 수준에서 DB를 구조화할 수 있는 모델.

- 예를 들어, relational data model, object data model, object-relational data model이 있다. 

- 유명한 DBMS는 거의 다 relational data model이다. 중요하다는 뜻.

relational data model

※ physical (or low-level) data models

- 컴퓨터에 데이터가 어떻게 파일 형태로 저장되는지를 기술할 수 있는 수단을 제공

- data format, data orderings, access path 등 실제로 컴퓨터에 저장되는 데이터와 밀접

- access path : 데이터 검색을 빠르게 하기 위한 구조체.  e.g.) index

 

'database' 카테고리의 다른 글

SQL 명령어  (0) 2023.08.17
relational data model  (0) 2023.08.07
[데이터베이스 용어] database language  (0) 2023.08.04
[데이터베이스 용어] schema & state  (0) 2023.08.04
[데이터베이스 용어] DB & DBMS & DB System 의 차이  (0) 2023.08.04

DB란?

- DataBase

- 전자적으로 저장되고 사용되는 관련있는 데이터들의 조직화된 집합

 

자세하게 들여다보자.

전자적으로(electronically) 저장되고 사용되는 == 예를 들어 instagram 같은 sns

관련있는(related) 데이터들의  == sns에 올린 사진 정보 등

조직화된 집합(organized collection) == 찾으려는 데이터 쉽게 찾을 수 있음

 

 

DBMS란?

- DataBase Management Systems

- 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템

- ex. PostgreSQL, MySQL, ORACLE, SQL Server

 

DB를 정의하다 보면 부가적인 데이터가 발생한다.

부가적인 데이터를 metadata라고 한다. 

 

metadata란?

- database를 정의하거나 기술하는(descriptive) 데이터

- catalog라고도 부름

- data about data, 즉, 데이터를 설명하기 위한 데이터

- 데이터 유형, 구조, 제약 조건, 보안, 저장, 인덱스, 사용자 그룹 등등이 있다.

- metadata 또한 DBMS를 통해 저장/관리된다.

 

 

DB System이란?

- DataBase System (database라고도 불리니까 문맥에 따라 구분 잘 해야됨.)

- database + DBMS + 연관된 Application

 

'database' 카테고리의 다른 글

SQL 명령어  (0) 2023.08.17
relational data model  (0) 2023.08.07
[데이터베이스 용어] database language  (0) 2023.08.04
[데이터베이스 용어] schema & state  (0) 2023.08.04
[데이터베이스 용어] Data Models  (0) 2023.08.04

+ Recent posts