MySQL 1 | Basic

공부의 기록·2021년 12월 7일
0

DB MySQL

목록 보기
1/2
post-thumbnail

서론

본문은 국비지원 수업을 듣고 그 내용에 대한 필기를 작성한 시리즈이다.

MySQL

세게에서 가장 많이 쓰이는 오픈 소스의 RDBMS 이다.
다양한 OS 에서 다양한 언어로 활용 가능하다.
표준 SQL 형식을 사용한다.

설치

https://dev.mysql.com/downloads/windows/installer/8.0.html

Installer 다운로드


실행

mysql -u root -p

Feature

개별적으로 공부하며 적었던 PostgreSQL 관련 포스트 중 PostgreSQL 1 | Basic와 공부 순서가 약간 다른 점이 있는 것 같다.

DB

데이터들의 집합(저장소)
단순한 파일

DBMS

데이터베이스를 관리하는 시스템
Oracle, MariaDB, MongoDB, MySQL, ...

RDBMS

관계형 데이터베이스 관리 시스템
테이블끼리 서로 관계를 맺은 때 설계되는 데이터베이스 관리 시스템

Table

특정 집단에 대한 데이터가 표 형태로 저장되는 공간

Row

하나의 데이터
그 줄의 모든 데이터들은 하나의 대상에 대한 데이터들이다.

내 차에 대한 데이터 [Ferrari | Red | 65000]
엄마 차에 대한 데이터 [K7 | White | 7000]

Column

공유된 값들의 주제
같은 열의 데이터들은 모두 같은 속성의 데이터들이다.
브랜드 색깔 가격
[Ferrari | Red | 65000][K7 | White | 7000]

PK | Primary Key

고유한 값 (각 정보들의 구별점 역할)
중복이 없고 비어있지 않음

  1. 기존 테이블 -> ALTER /  ADD CONSTRAINT
  2. 새로운 테이블 -> CREATE 안에 CONSTRAINT PRIAMRY KEY(칼럼명)

FK | Foreign Key

외래키
테이블끼리 관계를 맺을 때 가져오는 다른 테이블의 PK

  1. 기존 테이블 -> ALTER / ADD CONSTRAINT FOREIGN KEY(칼럼명) REFERENCES 테이블명(칼럼명)
  2. 새로운 테이블 -> CRAETE CONSTRAINT FOREIGN KEY(칼럼명) REFERENCES 테이블명(칼럼명)

관계성을 맺은 테이블

FK 를 부여한 테이블은 자식 테이블
참고되고 있는 테이블은 부모 테이블

  1. 값 추가, 테이블 생성 : 부모 테이블 먼저
  2. 값 삭제, 테이블 삭제 : 자식 테이블 먼저

무결성

데이터의 정확성, 일관성, 유효성이 유지 되는 것

  1. 정확성 | 데이터는 이해하지 않아야 한다.
  2. 일관성 | 각 사용자가 일관된 데이터를 볼 수 있도록 해야한다.
  3. 유효성 | 데이터가 실제 존재하는 데이터여야 한다.
    3.1. 개체 유효성 | 서로 다른 두 개체는 같지 않아야 한다.
    3.2. 참조 무결성 | 참조되는 기본키는 실제 존재하는 키여야 하는 것
    3.3. 도메인 무결성 | 칼럼의 타입, NULL 값의 허용 등에 대한 사항을 정의하고 올바른 데이터가 들어왔는지 확인하는 것

모델링

추상적인 DB에 맞게 설계하는 것
1. 요구 분석
영화관

로그인
예매		[영화관 정보, 영화 정보, 일시, 좌석]
영상조회	[영화제목, 영화장르, 감독정보, 배우 정보, 제작사, 러닝타임]
영화관조회	[이름, 주소, 전화번호, 사이트]
  1. 개념적 설계(개념 모델링)

    영화 예매 영화관
    영화코드 누가 이름
    영화장르 영화관 코드주소
    감독정보 영화코드 전화번호
    영화장르 영화코드 전화번호
    배우정보 일시 사이트
    제작사 좌석
    제작사
  2. 논리적 설계(논리 모델링)

    영화코드(PK) 예매번호(PK) 영화관코드(PK)
    영화제목(NN) 누가 이름
    영화장르 영화관코드(FK) 코드주소
    감독정보(FK) 영화코드(FK) 전화번호
    영화장르 영화코드 전화번호
    배우정보 일시 사이트
    제작사 좌석
    제작사
  3. 물리적 설계(물리 모델링)
    영화코드 : VARCHAR(300)
    영화제목 : VARCHAR(300)

정규화

데이터에 관련된 CRUD 과정에서 발생할 수 있는 이상현상을 제거하기 위해 진행한다.
데이터의 중첩을 최소화할 수 있고 대부분 3차 정규화까지 진행한다.
apple 30
apple 김사과 컴공과 35

아이디 이름 전공 수업코드 수업명 수업인원
apple 김사과 컴공과 C001 너무쉬운자바 30
apple 김사과 컴공과 C002 너무쉬운DBMS 35
bannana 반하나 수학과 C002 너무쉬운DBMS 35
  1. 삽입이상 | 새로운 항목이 추가되었고 그 학생은 수강신청한 과목이 없다면 수업코드에 NULL 혹은 'XXXX' 같은 약속한 코드값을 삽입해 주어야 한다. 이러한 현상을 삽입 이상 이라고 한다.

  2. 갱신이상 | 중복행 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제이고 만약 김사과가 전화해서 새로운 과로 이동을 했다면 두 행의 데이터 모두 수정을 해주어야 한다. 이러한 현상을 갱신 이상이라고 한다.

  3. 삭제이상 | 행을 삭제할 때 꼭 필요한 데이터까지 함께 삭제되는 문제이고 너무 쉬운 DBMS 수업이 폐강한다면 반하나의 행을 모두 삭제하게 된다. 반하나의 데이터가 남지 않게 되고 이러한 현상을 삭제 이상이라고 한다.

예제

  1. 1차 정규화

    이름 나이 우편번호 주소 상품명 상품가격
    김사과 10 1000 역삼동 바지 1000
    김사과 10 1000 역삼동 양말 500
    반하나 20 1001 사당동 바나나 2000
    이체리 30 2001 분당구 필터 1000
    이체리 30 2001 분당구 오리 2000
    이체리 30 2001 분당구 낭만 3000
  2. 2차 정규화

    이름 나이 우편번호 주소
    김사과 10 1000 역삼동
    반하나 20 1001 사당동
    이체리 30 2001 분당구
    상품명 상품가격
    바지 1000
    양말 500
    바나나 2000
    필터 1000
    낭만 2000
    오리 3000
  3. 하나의 칼럼은 그 외 다른 칼럼을 결정할 수 없다.

profile
블로그 이전 : https://inblog.ai/unchaptered

0개의 댓글