A Developing Developer
DAY 13. K 튜터님 타임어택 1회차 해설, J 튜터님 DB 특강 본문
각설 (인트로 의미 없다~)
오늘은 어제 있었던 타임어택 1회차 해설과, DB 특강이 있었다.
K 튜터님의 타임어택 해설은 논리적인 구조는 내가 푼 내용과 똑같았고 삼항연산자 사용 여부 차이정도가 있었다.
(K 튜터님은 10분? 만에 4문제 다 풀었다고 하신다, 우린 2시간이나 줬는데ㅋㅋㅋ)
J 튜터님의 DB 특강은 굉장히 유익하면서도 뭔가 어려우면서 깔끔하게 마무리 되지않는 찝찝함이 남아있었다.
MariaDB 를 배우고 사용해봐서 문법의 차이는 없었지만, 취업하고는 db는 건드린 적이 없어서 거의 백지상태로 돌아왔었다.
추가로 '정규화' 와 '데이터베이스 설계' 는 전 학원에서부터도 제대로 학습을 하지 않아서 어려운 부분이 많았다.
특히 정규화는 솔직히 아직 이해 못했다.
오늘 시간이 있으면 블로그에 정규화를 정리해보려한다.
============================================================================================
- K 튜터님 타임어택 1회차 (15분 컷) 특별히 다른 내용이 없어서 패스
- J 튜터님 DB 특강
- DB (Database) 란 데이터의 집합으로, DBMS (Database Management System) 란 DB 를 관리하고 운영하는 소프트웨어를 말한다. 이번 특강에서는 오픈 소스인 MySQL 을 사용한다.
- DBMS의 분류로는 계층형, 망형, 관계형이 있는데 관계형 DBMS 를 사용한다.
- 관계형 DBMS 의 데이터베이스는 테이블(table) 이라는 최소 단위로 구성되며, 하나 이상의 열(column) 과 행(row)로 이루어져있다. (엑셀의 테이블과 같이 생김)
- SQL vs NoSql
- SQL - 데이터를 엑셀과 같이 정해진 틀(데이터 스키마)에 따라 테이블에 저장 (틀이 정해져있음)
- NoSql - SQL 진영보다 데이터를 자유롭게 다양한 형태로 저장 (정해진 틀이 없음)
- SQL 의 장점 : 1. 명확하게 정의된 스키마, 데이터로 무결성을 보장한다. 2. 관계는 각 데이터를 중복없이 한번만 저장한다.
- SQL 의 단점 : 1. 상대적으로 덜 유연하고, 스키마를 사전에 계획하고 알려야 한다. (나중에 수정이 힘들다) 2. 관계를 맺고 있어서 JOIN 문이 많은 복잡한 쿼리가 만들어 질 수 있다. 3. 대체로 수직적 확장만 가능하다.
- 기본적으로 소문자를 사용하고 띄어쓰기는 _ 로 대체한다.
- 데이터베이스 이름은 가능한한 단수형으로 한다.
- 테이블 이름은 소문자를 사용하며 단수형을 사용한다.
- 필드이름(컬럼명)은 소문자를 사용하고 마찬가지로 띄어쓰기 숫자를 금지하며, 가급적 짧고 이해하기 쉽게 한다.
-- 학생 테이블 (city_id)수정
ALTER TABLE sparta_test.student MODIFY COLUMN city_id INT NOT NULL;
-- join
SELECT s.name FROM student s INNER JOIN city c
ON s.city_id = city_id
-- 도시 데이터 생성
INSERT INTO city(
name
)
VALUES
('서울'),
('도쿄'),
('뉴욕'),
('상하이'),
('파리')
USE sparta_test;
-- 학생 데이터 입력
INSERT INTO student (
name
)
VALUES
('이영희')
-- 학생 이메일 업데이트
UPDATE student
SET
email = 'yeong123@naver.com'
WHERE
id = 5
-- 학생 도시 업데이트
UPDATE student
SET
city_id = 5
WHERE
id = 5
-- 학생 검색 (이메일)
SELECT * FROM student s
WHERE email LIKE "%@gmail%"
-- NULL 값 검색
SELECT * FROM student s
WHERE
email IS NULL
-- 학생 데이터 삭제
DELETE FROM
student
WHERE
id = 1
-- 전체 학생 조회
SELECT * FROM student s
============================================================================================ - 제약조건
NOT NULL - NOT NULL 제약 조건을 설정하면, 해당 필드는 NULL 값을 저장할 수 없습니다.
즉, 이 제약 조건이 설정된 필드는 무조건 데이터를 가지고 있어야 합니다.
NOT NULL 제약 조건은 CREATE 문으로 테이블을 생성할 때나, 나중에 ALTER 문으로 추가할 수도 있습니다.
UNIQUE - UNIQUE 제약 조건을 설정하면, 해당 필드는 서로 다른 값을 가져야 합니다.
즉, 이 제약 조건이 설정된 필드는 중복된 값을 저장할 수 없습니다.
UNIQUE 제약 조건은 CREATE 문으로 테이블을 생성할 때나, 나중에 ALTER 문으로 추가할 수도 있습니다.
PRIMARY KEY - PRIMARY KEY 제약 조건을 설정하면, 해당 필드는 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가집니다.
따라서 이 제약 조건이 설정된 필드는 NULL 값을 가질 수 없으며, 또한 중복된 값을 가져서도 안 됩니다.
이러한 PRIMARY KEY 제약 조건을 기본 키라고 합니다.
UNIQUE는 한 테이블의 여러 필드에 설정할 수 있지만, PRIMARY KEY는 테이블당 오직 하나의 필드에만 설정할 수 있습니다.
이러한 PRIMARY KEY 제약 조건은 테이블의 데이터를 쉽고 빠르게 찾도록 도와주는 역할을 합니다.
FOREIGN KEY (외래키) - FOREIGN KEY 제약 조건을 설정한 필드는 외래 키라고 부르며, 한 테이블을 다른 테이블과 연결해주는 역할을 합니다.
외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력됩니다.
즉, FOREIGN KEY 제약 조건은 하나의 테이블을 다른 테이블에 의존하게 만듭니다.
FOREIGN KEY 제약 조건을 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY 제약 조건이 설정되어 있어야 합니다.
DEFAULT - DEFAULT 제약 조건은 해당 필드의 기본값을 설정할 수 있게 해줍니다.
만약 레코드를 입력할 때 해당 필드 값을 전달하지 않으면, 자동으로 설정된 기본값을 저장합니다.
============================================================================================
- 데이터베이스 설계
- 요구사항 수집 및 분석
- 개념적 모델링 - Entity 도출, ERD 작성
- 논리적 모델링 - 개념의 구체화, 상세 속성 정의, 정규화
- 물리적 모델링 - DB 개체 정의, 테이블 설계
- 데이터베이스 구현
- 정규화(Normaliztion) - 중복 데이터를 없애고 관계를 단순하게 가져간다. 분리와 연결!
(추후 공부해서 블로그에 정리할 예정)
아래 블로그에서 정리를 잘해 둔거 같아서 참고해서 공부하자...
https://mangkyu.tistory.com/110
============================================================================================db 는 혼자 해결 못하는 syntax 에러가 가장 곤란한거 같다.
분명 문법 오류 없이 테이블을 생성한거 같은데, 오류가 뜬다...
내일 db 마무리 강의가 있는데, 그때 해결 가능할까 모르겠다...
'내일배움캠프 4기 > TIL' 카테고리의 다른 글
DAY 15. 2ed 팀 프로젝트 발제, K 튜터님 OSI 7계층 특강 (0) | 2022.12.02 |
---|---|
DAY 14. H 튜터님 RESTful AIP 특강, J 튜터님 html, css, javascript 특강 (0) | 2022.12.01 |
DAY 12. JavaScript 올인원, 타임 어택 1회차 (0) | 2022.11.29 |
DAY 11. 알알알 복습, W 튜터님 Javascript 특특강 (+머리아픔이슈) (0) | 2022.11.28 |
DAY 10. K 튜터님 자료구조_알고리즘 강의 (3/3), cs 특강(HTTP (0) | 2022.11.25 |