MariaDB 설치
MariaDB 설치 경로
C:\Program Files\MariaDB 10.3
Path 경로 추가
Windows PowerShell 관리자로 실행
cmd 입력 후 엔터
SETX PATH "C:\Program Files\MariaDB 10.3\bin;%PATH%" /M
샘플 데이터베이스 다운로드 (오픈소스)
http://cafe.naver.com/thisismysql
이것이MySQL이다 : 네이버 카페
한빛미디어 [이것이 MySQL이다] 카페입니다.
cafe.naver.com
MariaDB 접속
파워셸 관리자 모드 실행
source employees.sql ; 입력
show databases ; 입력
exit
폴더 | 역할 |
bin | MariaDB 서버 프로그램, 클라이언트 프로그램 및 유틸리티 프로그램 파일 |
data | 데이터베이스 및 로그 파일 |
include | 응용프로그램을 개발할 때 필요한 헤더 파일 |
lib | MariaDB 관련 라이브러리 파일 |
share | 기타 지원 파일, 각 언어별 오류 메시지 파일 등 |
MariaDB 내 폴더
릴레이션 용어 | 같은 의미로 통용되는 용어 | 파일 시스템 용어 |
릴레이션(relation) | 테이블(table) | 파일(file) |
스키마(schema) | 내포(intension) | 헤더(header) |
인스턴스(instance) | 외면(extension) | 데이터(data) |
튜플(tuple) | 행(row) | 레코드(record) |
속성(attribute) | 열(colum) | 필드(field) |
속성
· 단일 값을 가짐
· 서로 다른 이름을 가짐
· 한 속성의 값은 모두 같은 도메인 값을 가짐
· 속성의 순서는 상관없다
· 릴레이션 내의 중복된 튜플은 허용하지 X
· 튜플의 순서는 상관없다
하나의 속성이 가질 수 있는 값을 총칭해 "도메인"이라 한다
키
· 특정 튜플을 식별할 때 사용하는 속성 혹은 속성의 집합
· 릴레이션은 중복된 튜플을 허용하지 않기 때문에 각각의 튜플에 포함된 속성들 중 어느 하나(혹은 하나 이상)는 값이 달라야 함. 즉 키가 되는 속성(혹은 속성의 집합)은 반드시 값이 달라서 튜플을 서로 구별할 수 있어야 함
· 키는 릴레이션 간의 관계를 맺는 데도 사용
슈퍼키
· 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합 ex) 고객 번호, 도서 번호 등
후보키
· 튜플을 유일하게 식별할 수 있는 속성의 최소 집합
· 주문 릴레이션의 후보키는 2개의 속성을 합한 (고객번호, 도서번호)가 됨
· 2개 이상의 속성으로 이루어진 키를 복합키
기본키
· 여러 후보키 중 하나를 선정해 대표로 삼는 키
· 후보키가 하나뿐이라면 그 후보키를 기본키로 사용하면 되고 여러 개라면 릴레이션의 특성을 반영하여 하나를 선택하면 됨
기본키 선정 시 고려사항
· 릴레이션 내 튜플을 식별할 수 있는 고유한 값을 가져야 함
· NULL 값은 허용하지 x
· 키 값 변동이 일어나지 않아야 함
· 최대한 적은 수의 속성을 가진 것이라야 함
· 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 함
· 릴레이션 스키마를 표현할 때 기본키는 밑줄을 그어 표시함
대리키 / 인조키
기본키가 보안을 요하거나, 여러 개의 속성으로 구성돼 복잡하거나, 마땅한 기본키가 없을 때 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 경우
대리키는 DBMS나 관련 소프트웨어에서 임의로 생성하는 값으로 사용자가 직관적으로 그 값의 의미를 알 수 없음
외래키
다른 릴레이션의 기본키를 참조하는 속성을 말함
다른 릴레이션의 기본키를 참조하여 관계 데이터 모델의 특징인 릴레이션 간의 관계를 표현함
외래키의 특징
· 관계 데이터 모델의 릴레이션 간의 관계를 표현함
· 다른 릴레이션의 기본키를 참조하는 속성
· 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 함
· 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨
· NULL 값과 중복 값 등이 허용됨
· 자기 자신의 기본키를 참조하는 외래키도 가능함
· 외래키가 기본키의 일부가 될 수 있음
무결성의 수행 제약조건
구분 | 도메인 | 키 | |
도메인 무결성 제약조건 | 개체 무결성 제약조건 | 참조 무결성 제약조건 | |
제약 대상 | 속성 | 튜플 | 속성과 튜플 |
같은 용어 | 도메인 제약 | 기본키 제약 | 외래키 제약 |
해당되는 키 | - | 기본키 | 외래키 |
NULL 값 | 허용 | 불가 | 허용 |
릴레이션 내 제약조건의 개수 | 속성의 개수와 동일 | 1개 | 0~여러 개 |
기타 | 투플 삽입/수정 시 제약사항 우선 확인 | 투플/수정 시 제약사항 우선 확인 | · 투플 삽입/수정 시 제약사항 우선 확인 · 부모 릴레이션의 투플 수정/삭제 시 제약사항 우선 확인 |
개체 무결성 제약조건
삽입: 기본키 값이 같으면 삽입이 금지됨
수정: 기본키 값이 같거나 NULL로도 수정이 금지됨
삭제: 특별한 확인이 필요하지 않으며 바로 수행됨
참조 무결성 제약조건
학과(부모 릴레이션): 튜플 삽입한 후 수행하면 정상적으로 진행
학생(자식 릴레이션): 참조받는 테이블에 외래키 값이 없으므로 삽입이 금지
삭제
· 학과(부모 릴레이션): 참조하는 테이블을 같이 삭제할 수 있어서 금지하거나 다른 추가 작업이 필요
· 학생(자식 릴레이션): 바로 삭제 가능함
명령어 | 의미 | 예 |
RESTRICTED | 자식 릴레이션에서 참조하고 있으면 부모 릴레이션의 삭제 작업을 거부함 | 학과 릴레이션의 튜플 삭제 거부 |
CASCADE | 자식 릴레이션의 관련 튜플을 같이 삭제함 | 학생 릴레이션의 관련 튜플을 삭제 |
DEFAULT | 자식 릴레이션의 관련 튜플을 미리 설정해 둔 값으로 변경 | 학생 릴레이션의 학과가 다른 학과로 자동 배정 |
NULL | 자식 릴레이션의 관련 튜플을 NULL 값으로 설정함(NULL 값을 허가한 경우) | 학생 릴레이션의 학과가 NULL 값으로 변경 |
참조 무결성 제약조건의 옵션(부모 릴레이션에서 튜플을 삭제할 경우)
RESTRICTED: 요청한 삭제 작업 중지(에러 처리)
CASCADE: 학생 릴레이션의 해당 튜플을 연쇄적으로 삭제
DEFAULT: 미리 설정한 기본값으로 변경
NULL: NULL 값으로 설정
관계의 수학적 의미
릴레이션의 수학적 개념
A = {2, 4}, B = {1, 3, 5}일 때
A x B = {(2, 1), (2, 3), (2, 5), (4, 1), (4, 3), (4, 5)}
관계대수식
관계대수는 릴레이션 간 연산을 통해 결과 릴레이션을 찾는 절차를 기술한 언어로, 이 연산을 수행하기 위한 식을 관계대수식이라고 함
관계대수식은 대상이 되는 릴레이션과 연산자로 구성되며, 결과는 릴레이션으로 반환됨. 반환된 릴레이션은 릴레이션의 모든 특징을 따름.
단항 연산자: 연산자<조건> 릴레이션
이항 연산자: 릴레이션 1 연산자<조건> 릴레이션2
조인
두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 투플을 수평으로 결합하는 연산, 조인을 수향하기 위해서는 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성되어야 함, 조인 연산의 결과는 공통 속성의 속성 값이 동일한 투플만을 반환함
SQL 기능에 따른 분류
데이터 정의어(DDL)
테이블이나 관계의 구조를 생성하는 데 사용
CREATE, ALTER, DROP 문 등이 있음
데이터 조작어(DML)
테이블에 데이터를 검색, 삽입, 수정, 삭제하는 데 사용
SELECT, INSERT, DELETE, UPDATE 문 등이 있음
- SELECT 문은 특별히 질의어(query)라고 함
데이터 제어어(DCL)
데이터의 사용 권한을 관리하는 데 사용
GRANT, REVOKE 문 등이 있음
정보시스템 구축 절차 요약
· 분석, 설계, 구현, 시험, 유지보수의 5가지 단계
분석
· 구현하고자 하는 프로젝트의 가장 첫 번째 단계
· 시스템 분석 또는 요구사항 분석
- 현재 우리가 무엇을 할 것인지 결정
- 사용자의 인터뷰와 업무 조사 등 수행
- 프로젝트의 첫 단추를 끼우는 중요한 단계
- 많은 시간 동안 심혈을 기울여야 함
- 분석의 결과로서 많은 문서 작성
설계
· 시스템 설계 또는 프로그램 설계라는 용어로 부름
· 우리가 구축하고자 하는 시스템을 어떻게 할 것인지 결정
· 시스템 설계가 끝나면 가장 큰 작업이 끝난 것으로 간주
· 대부분의 프로젝트에서 이 분석과 설꼐의 과정에 전체 공정의 50% 이상 차지
구현
· 시스템 설계가 끝나고 나면 그 결과 문서들을 프로그래머(또는 코더)에게 넘겨주면 프로그래머는 설계서에 나온 그대로 프로그램 작성
데이터베이스 모델링과 필수 용어
· 데이터베이스 모델링
· 현실세계에서 사용되는 데이터를 MariaDB에 어떻게 옮겨 놓을 것인지를 결정하는 과정
· 저장할 정보는 테이블Table이라는 형식에 맞춰 저장
데이터베이스 모델링 관련 용어
· 데이터
- 단편적인 정보 ex) 당탕이, 컴퓨터, 2013.1.1
- 정보는 있으나 아직 체계화되지 못한 상태
· 테이블
- 회원이나 제품의 데이터를 입력하기 위해 표 형태로 표현 ex) 회원 테이블, 제품 테이블
· 데이터베이스(DB)
- 테이블이 저장되는 저장소
- 원통 모양으로 주로 표현
- 각 데이터베이스는 서로 다른 고유한 이름을 가지고 잇어야 함
· DBMS
- 데이터베이스를 관리하는 시스템 또는 소프트웨어
- 3개의 데이터베이스를 관리
· SQL
- 사람과 DBMS가 소통하기 위한 언어