본문은 국비지원 수업을 듣고 그 내용에 대한 필기를 작성한 시리즈이다.
세게에서 가장 많이 쓰이는 오픈 소스의 RDBMS 이다.
다양한 OS 에서 다양한 언어로 활용 가능하다.
표준 SQL 형식을 사용한다.
https://dev.mysql.com/downloads/windows/installer/8.0.html
Installer 다운로드
mysql -u root -p
개별적으로 공부하며 적었던 PostgreSQL 관련 포스트 중 PostgreSQL 1 | Basic와 공부 순서가 약간 다른 점이 있는 것 같다.
데이터들의 집합(저장소)
단순한 파일
데이터베이스를 관리하는 시스템
Oracle, MariaDB, MongoDB, MySQL, ...
관계형 데이터베이스 관리 시스템
테이블끼리 서로 관계를 맺은 때 설계되는 데이터베이스 관리 시스템
특정 집단에 대한 데이터가 표 형태로 저장되는 공간
하나의 데이터
그 줄의 모든 데이터들은 하나의 대상에 대한 데이터들이다.
내 차에 대한 데이터 [Ferrari | Red | 65000]
엄마 차에 대한 데이터 [K7 | White | 7000]
공유된 값들의 주제
같은 열의 데이터들은 모두 같은 속성의 데이터들이다.
브랜드 색깔 가격
[Ferrari | Red | 65000][K7 | White | 7000]
고유한 값 (각 정보들의 구별점 역할)
중복이 없고 비어있지 않음
기존 테이블 -> ALTER / ADD CONSTRAINT
새로운 테이블 -> CREATE 안에 CONSTRAINT PRIAMRY KEY(칼럼명)
외래키
테이블끼리 관계를 맺을 때 가져오는 다른 테이블의 PK
FK 를 부여한 테이블은 자식 테이블
참고되고 있는 테이블은 부모 테이블
데이터의 정확성, 일관성, 유효성이 유지 되는 것
추상적인 DB에 맞게 설계하는 것
1. 요구 분석
영화관
로그인
예매 [영화관 정보, 영화 정보, 일시, 좌석]
영상조회 [영화제목, 영화장르, 감독정보, 배우 정보, 제작사, 러닝타임]
영화관조회 [이름, 주소, 전화번호, 사이트]
개념적 설계(개념 모델링)
영화 | 예매 | 영화관 |
---|---|---|
영화코드 | 누가 | 이름 |
영화장르 | 영화관 | 코드주소 |
감독정보 | 영화코드 | 전화번호 |
영화장르 | 영화코드 | 전화번호 |
배우정보 | 일시 | 사이트 |
제작사 | 좌석 | |
제작사 |
논리적 설계(논리 모델링)
영화코드(PK) | 예매번호(PK) | 영화관코드(PK) |
---|---|---|
영화제목(NN) | 누가 | 이름 |
영화장르 | 영화관코드(FK) | 코드주소 |
감독정보(FK) | 영화코드(FK) | 전화번호 |
영화장르 | 영화코드 | 전화번호 |
배우정보 | 일시 | 사이트 |
제작사 | 좌석 | |
제작사 |
물리적 설계(물리 모델링)
영화코드 : VARCHAR(300)
영화제목 : VARCHAR(300)
데이터에 관련된 CRUD 과정에서 발생할 수 있는 이상현상을 제거하기 위해 진행한다.
데이터의 중첩을 최소화할 수 있고 대부분 3차 정규화까지 진행한다.
apple 30
apple 김사과 컴공과 35
아이디 | 이름 | 전공 | 수업코드 | 수업명 | 수업인원 |
---|---|---|---|---|---|
apple | 김사과 | 컴공과 | C001 | 너무쉬운자바 | 30 |
apple | 김사과 | 컴공과 | C002 | 너무쉬운DBMS | 35 |
bannana | 반하나 | 수학과 | C002 | 너무쉬운DBMS | 35 |
삽입이상 | 새로운 항목이 추가되었고 그 학생은 수강신청한 과목이 없다면 수업코드에 NULL 혹은 'XXXX' 같은 약속한 코드값을 삽입해 주어야 한다. 이러한 현상을 삽입 이상 이라고 한다.
갱신이상 | 중복행 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제이고 만약 김사과가 전화해서 새로운 과로 이동을 했다면 두 행의 데이터 모두 수정을 해주어야 한다. 이러한 현상을 갱신 이상이라고 한다.
삭제이상 | 행을 삭제할 때 꼭 필요한 데이터까지 함께 삭제되는 문제이고 너무 쉬운 DBMS 수업이 폐강한다면 반하나의 행을 모두 삭제하게 된다. 반하나의 데이터가 남지 않게 되고 이러한 현상을 삭제 이상이라고 한다.
1차 정규화
이름 | 나이 | 우편번호 | 주소 | 상품명 | 상품가격 |
---|---|---|---|---|---|
김사과 | 10 | 1000 | 역삼동 | 바지 | 1000 |
김사과 | 10 | 1000 | 역삼동 | 양말 | 500 |
반하나 | 20 | 1001 | 사당동 | 바나나 | 2000 |
이체리 | 30 | 2001 | 분당구 | 필터 | 1000 |
이체리 | 30 | 2001 | 분당구 | 오리 | 2000 |
이체리 | 30 | 2001 | 분당구 | 낭만 | 3000 |
2차 정규화
이름 | 나이 | 우편번호 | 주소 |
---|---|---|---|
김사과 | 10 | 1000 | 역삼동 |
반하나 | 20 | 1001 | 사당동 |
이체리 | 30 | 2001 | 분당구 |
상품명 | 상품가격 |
---|---|
바지 | 1000 |
양말 | 500 |
바나나 | 2000 |
필터 | 1000 |
낭만 | 2000 |
오리 | 3000 |
하나의 칼럼은 그 외 다른 칼럼을 결정할 수 없다.