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' 카테고리의 다른 글

SQL 예제로 구조 파악하기  (0) 2023.08.17
table 생성하기  (0) 2023.08.17
SQL 명령어  (0) 2023.08.17
[데이터베이스 용어] database language  (0) 2023.08.04
[데이터베이스 용어] schema & state  (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
table 생성하기  (0) 2023.08.17
SQL 명령어  (0) 2023.08.17
relational data model  (0) 2023.08.07
[데이터베이스 용어] schema & state  (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
table 생성하기  (0) 2023.08.17
SQL 명령어  (0) 2023.08.17
relational data model  (0) 2023.08.07
[데이터베이스 용어] database language  (0) 2023.08.04

+ Recent posts