2025-4-10 17일차

심서진·2025년 4월 10일

수업 정리

비즈니스 로직
프로세스 흐름도
실제로 사용하는 상황의 흐름


데이터 정규화

데이터 정규화를 쓰는 이유
-> 데이터를 효율적으로 저장(중복을 줄이기 위해서)
-> 이상현상을 방지하기 위해 테이블 구조를 정리하는 과정

보통 1 ~ 3정규화는 지킴
1정규화 : 하나의 칸에는 한 개의 데이터만 !!!

2정규화 : 주문(주문번호,pk)과 직접적인 연관이 있는 녀석만 남기자 !!!

3정규화 : 메뉴랑 상관 없는 데이터는 분리해야지 !!!


테이블 구조 변경

id라는 컬럼 추가

ALTER TABLE article ADD COLUMN id INT;
ALTER TABLE article ADD COLUMN id INT FIRST; = id를 처음으로 보내는 방법
ALTER TABLE article ADD COLUMN id INT AFTER title; = 내가 원하는 컬럼 뒤에 보내는 벙법

UPDATE article
SET id = 1
WHERE id IS NULL; = 널인 녀석들을 찾아서 바꿔라

UPDATE article
SET id = 1
WHERE id IS NOT NULL; = 널이 아닌 녀석들을 찾아서 바꿔라

UPDATE article
seet id = 2
LIMIT 1; = 하나만 바꿔라(숫자를 두개도 쓸 수 있음 1, 10 = 1번 인덱스부터 10개)
SELECT *
FROM article
LIMIT 1 , 2;
페이징 처리
목록에서 한 페이제 몇 개씩 보여줄 건데 ?
몇 번 페이지까지 있을 건데 ?

SELECT NOW(); = DB서버의 시간 / 정확하지 않을 수 있음


1-1.제약상황

-null 안돼, 음수 안돼, 얘는 이거여야만 해, 기본값은 이래야 돼

-고유한 식별값

  • DB에서 PK(Primary Key)
    주키,기본키
    데이터(자물쇠)를 찾아갈 때 사용할 열쇠
    pk는 null 절대 안됨 자동으로 not null
    기본키는 오름차순(ASC)
    pk는 무조건 1개
    PK는 자동으로 INDEX

-FK(Foreign Key)
외래키
누군가의 주키를 참고함
밖에서 받아왔다

  • pk - 컬럼이 가져야할 제약사항

    ALTER TABLE article MODIFY COLUMN id INT NOT NULL PRIMARY KEY;
    ALTER TABLE article ADD PRIMARY KEY(id);
    위아래 둘다 똑같은 거임
    pk는 한 번 명시하면 굳이 하지 않아도 됨

    -AUTO_INCREMENT = 자동 증가 / pk가 지정된 곳에만 가능
    계속 명시해야 됨

  • id라는 컬럼은 음수가 존재할 수 있나 ?
    UNSIGNED = 음수 불가 / 데이터 타입에게 제약을 거는 것

    ALTER TABLE article MODIFY COLUMN id INT UNSIGNED NOT NULL;
    UNSIGNED 뒤에 NOT NULL이 와야됨

  • 컬럼 이름 변경

    ALTER TABLE article CHANGE body content TEXT;
    = body를 content로 변경 이 때 뒤에 있는 제약사항,타입도 다 들고 와야 됨

  • 정렬

    SELECT *
    FROM article
    ORDER BY id DESC;
    asc = 오름차순
    desc = 내림차순
    asc는 기본값이라 생략이 가능
    desc는 역순이라 무조건 명시

    SELECT *
    FROM article
    WHERE title LIKE '%제%';
    '제'가 포함된 녀석을 찾아와
    % = 이 자리에는 뭐가 있던 다 돼

    SELECT *
    FROM article
    WHERE title NOT LIKE '%제%';
    '제'라는 단어가 포함되지 않는 녀석을 찾아와

create database 'DB이름'

drop database 'DB이름'

UPDATE 테이블이름 SET

INSERT INTO 테이블이름

SELECT FROM 테이블이름

ALTER TABLE 테이블이름

DELETE FROM 테이블이름


1-2.제약상황

제약사항 왜 쓸까 ?
타입에 맞지 않는 데이터의 저장을 방지하려고
데이터의 무결성을 위해서

  • 데이터의 무결성
    데이터가 무결하다
    결함이 없다

제약사항이 디테일하게 많이 들어가있다
왜 ??
제약사항이 많다라는 건 ?
지켜야 할 것들이 많다
데이터를 저장하는 시점에서 생각했을 때 까다롭고 귀찮다.
유지보수가 용이하다

데이터가 문제될 일이 없다

유지보수
지금 현재를 보는 게 아니라 먼 미래를 봐야함

DATA TYPE
UNSIGNED
NOT NULL
UNIQUE : 중복값 안돼 / NULL가능 (NULL이 겹치는 건 안됨)
PK
AUTO_INCREMENT
CHECK
DEFAULT
COMMENT
...

EX) 회원 테이블에 키, 몸무게 컬럼이 있다고 가정
키가 100cm이상이어야 돼
100cm이하면 들어올 수 없어
이러한 과정을 CHECK가 함


쿼리가 실행되는 순서
FROM -> WHERE(조건) -> GROUP BY(요약) -> HAVIG(조건) -> SELECT -> ORDER BY(정렬)

0개의 댓글