-
20일차 - 정규화프로그래밍 언어/데이터베이스(SQL, MARIADB) 2024. 2. 22. 09:22
모든 정규화는 이전 정규화를 만족해야한
제 1 정규화
■ 모든 항목에 값이 없어야 하며, 중복열이 없어야한다
■ 없거나 많을 경우 대응되냐
-> 실무에서는 오히려 NULL 이 들어가야할 수도 있다
전화번호 하나만 들어가면 다른 값이 NULL 이고, 하나를 두개를 중복해서 만들어진
여러가지 상황, 하나 들어가는지 아무것도 안들어가지는지
없을수도 딱 하나 있을때 식별
없을수도 여러개 있을 수 도 있는 경우 비식별
논리적 설계
아기가 태어났을때 태명으로 그 사람의 평생의 이름이 되진 않지만, 물리적 설계전까지 쓰인다
제 2 정규화
개체의 속성이 한 식별자에 종속되어야 한다
-> 한 컬럼에 한 기본키를 사용해야한다, 복합키보다 단일키를 사용해야한다 애지간하면 자제해라
-> 설계는 뭐다 끼워맞추지 말고 유연하게 해라
-> 복합키를 써야하는 상황인가?
1) 기본키를 뭐를 잡을까?
2) 이 기본키가 중복이 생기지 않으려면 어떻게 쪼개야할까?
3) 쪼갰을때 문제는?
제 3 정규화
고객 번호를 변경하면 이름이 변경된다
그에 따라 등급도 변경해야한다
1115번을 바꿨다 이름도 바뀔 수 있다 여기에 따라서 등급도 할인율도 바꾸어야한다
어떻게 쪼개줘야 고객번호와 이름 바꾸면 안바꿔도 등급 할인율을 바꿀까?
오직 속도를 위해서 역 정규화를 진행하기도 한다
테이블 쪼개기는 중복이 생길거 같을때
PK 는 하나만 꼭 집어야하는 경우만 해야한다(인덱스 걸린다)
보기는 새로운 테이블을 만들어야한다고 착각하기
개발하는것까지 생각하면서 해야한다
우리는 일반회원의 판매자 회원 테이블을 나눌 것인가
카테고리에서 해당 분류의 물품이 바로 나타나야 한다
판매 품
'프로그래밍 언어 > 데이터베이스(SQL, MARIADB)' 카테고리의 다른 글
데이터베이스 시험 (0) 2024.03.04 19일차 - INDEX, IN, EXISTS, VIEW (0) 2024.02.19 18일차 - 서브쿼리, 조인, 집합 (0) 2024.02.16 17일차 - 컬럼의 제약조건 (0) 2024.02.15 16일차 - 트랜잭션과 관련된 명령문 (0) 2024.02.15