-
mysql - 정규화란?DataBases/MYSQL 2019. 3. 27. 16:27
차 tabel
[ 차 정비 기능공 ] - 각 차에 대한 다양한 정보
[ 차 판매원 ] - 차의 제조사, 모델, 등록번호
= 같은 tabel로 다른 목적이있는 테이블
[ select from like 로 찾는문제 ]
- 열의 정보가 복잡하면 like로 원하는 특정 데이터를 나타내는 것이 쉽지 않음.
- 쿼리는 간단할 수 록 좋음
[ 테이블 관계에 대한 것 RDMS ] :릴레이션 데이터베이스 메니지먼트 시스템
정보를 나타낼때 어려 테이블 사이에 열들이 서로 어떠한 관계에 있는지를 고려
- 테이블로 표현하려는 것 [ 테이블로 나타내고자 하는 것이 무엇인가 ]
- 그 테이블을 사용하여 얻어야하는 정보들의 리스트 [ 어떻게 사용할 것인가? ]
- 리스트를 이용하여 테이블을 만들 정보들의 조각으로 나눔 [ 어떻게하면 가장 쉽게 쿼리를 보낼 수 있을것인가? ]
원자값 : 더이상 쪼 갤수가 없는 조각의 정보
속성값은 원자값을 가져야한다.
1. 테이블이 표현하는 것이 무엇인가?
2. 그것을 얻기 위해 테이블을 어떻게 사용할 것인가?
3. 열들은 쿼리를 짧고 명료하게 할 수 있도록 원자적 데이터를 가지고 있는가?
: 예를 들어 주소를 [ 도 / 시 / 번지 / 아파트명 ] 이렇게 나눠 저장해야 원자값이다?
배달업체일경우 주소[ 도 / 시 / 번지/ 아파트명] 을 한번에 저장하는 것이 원자값
부동산업체일 경우 도/ 시/ 번지/ 아파트명 따로따로 나눠 저장하는 것이 원자값이다.
즉! 각각의 목적의 따라 원자값이 달라질 수 있다.
[ 필요한 부분에서에 더이상 나누지 않아도 되는 값을 원자 값이라 칭한다. ]
::이렇게 하는이유
원자적 데이터를 사용하면 쿼리 작성이 더 쉽고 수행 시간이 빨라 쿼리를 효율적으로 수행 할 수 있고, 저장 데이터가 대용량인 경우 더욱 표율적임
하여!!
1. 원자적 데이터로 구성된 열은 그 열에 같은 타입에 데이터를 여러개 가질 수 없다.
2. 원자적 데이터로 구성된 테이블은 같은 타입의 데이터를 여러 열에 가질 수 없다.
[[ 정규 화란 ? ]]
1. 정규 테이블은 중복 데이터가(무결성)가 없어서 데이터베이스의 크기를 줄여줍니다/
2. 찾아야 할 데이터가 적어 쿼리가 더 빨라집니다.
[제1 정규형 = 1NF의 규칙]
- 각 행의 데이터들은 원자적 값을 가져야한다.
- 각 행은 유일무의한 식별자인 기본키를 가지고 있어야한다.
[기본키란? ]
: 유일키
: 테이블당 하나
[ 기본키의 규칙 ]
- NULL 불가
- 레코드가 삽입될 때 값이 있어야 한다.
- 기본키는 간결해야한다.
- 기본키의 값은 변경 불가
- 유일한 정보여야한다.
ex ) 학생 ( 학번, 성별, 이름, 주소 , 전화 ) -> 학번이 key
기본키는 [ 1. 자연키(Natual key) 2. 인조키(Synthetic key) ] 로 구분된다.
1. 자연키 : 존재하는 걸로 만들때
2. 인조키 : 만들수 있는게 없어서 새로 만들때.
[ 테이블 고칠때 생각해야 할 방법 ]
1. 데이터 모두를 어떤 식으로든 저장해 두세요
2. 새로운 정규 테이블을 만드세요
3. 각 행을 새로운 테이블 구조에 맞도록 수정하면 예전 데이터를 새로운 테이블에 넣으세요
4. 대체
: increment ->증가, 증량
mysql> create table school1(number int not null auto_increment,
-> name varchar(20) default null,
-> age varchar(20) default null,
-> primary key ( number));
Query OK, 0 rows affected (0.11 sec)'DataBases > MYSQL' 카테고리의 다른 글
sql delete, update (0) 2019.03.27 SQL select 조건 검색 (0) 2019.03.27 트랜잭션이란? (0) 2019.03.26 데이터와테이블 - command (0) 2019.03.22 데이터와 테이블 - 도메인,속성,튜플 (0) 2019.03.22