행복한 세상의 니노

mysql - 정규화란? 본문

DataBases/MYSQL

mysql - 정규화란?

니노z 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)

 

ALTER에 대해서알기

 

 

반응형

'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