※ ERD란?
Entity Relationship Diagram : 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓는 다이어그램이다. ERD는 단어에서 의미하는 그대로 ' Entity 개체 '와 'Relationship 관계 '를 중점적으로 표시하는 다이어그램이다.
※ 왜 사용하는가?
DB의 데이터가 무작위로 많아지면 필요한 데이터를 찾을 때 시간이 걸리기도 하고 , 결과값이 달라질 수 있는데 이걸 해결하기 위해서 모델링이 필요하다. 그 중 하나가 관계도로 모델링을 하는 것인데, 그걸 보기 편하게 보기 위해서 사용한다.
※ 어떻게 사용하는가?
우선 물품이 양품으로 나왔는데 사용해보니 불량이였고, 어떤 시간 때에 그 불량이 연속적으로 나왔다는 시나리오가 있다고 생각해보자.
그럼 어떤 시간대에 불량이 나왔느지를 알아보고 폐기를 하던 수리를 해야 될 것이다.
1. 우선 필요한 데이터를 하나 결정한다. 예를들어 양품이 어디 위치에 있는지 알아보자.
테이블을 작성해 보자.
- 비금속은 불량인 제품이다.
- 금속은 양품인 제품이다.
이렇게 테이블을 작성 했을 시, 창고가 더 필요한 경우 창고를 더 만들어 줘야된다. 그러면 칼럼수가 계속 늘어나게 될 것이다. 그러면 연산시간이 더욱 늘어난다. 그러면 내가 필요한 데이터를 정리한 테이블을 만들 수 없을까? 라는 생각이든다.
- 그래서 정규화를 시켜 준다.
https://mangkyu.tistory.com/110
정규화가 이해가 쉽게 나와있다.
생산시간을 기준으로 각각의 테이블을 참조하여 필요한 데이터를 찾아서 볼 수가 있다.
정규화를 하면 무결성이 보장되지만 데이터를 넣고 빼고 하다보면 어쩔 수 없이 데이터를 건들여서 날아가던가 수정이 되던가 그럴 경우가 있다. 그럴 때 확실하게 연결하기 위해서 ERD를 활용한다.
※ ERD로 활용해서 써보자.
mysql-community로 작성함
mysql에서 file -> new model을 선택
1번을 더블클릭하여 2번의 DB의 이름을 설정해주고 3번의 ERD를 만들어준다.
테이블 생성 뒤
테이블을 더블 클릭하면 아래에 테이블 칼럼을 작성할 수 있다.
mem_time -> 생산시간은 유일한 값이여서 PK로 설정했다. DataType은 시간을 넣어야 되니 datetime으로 설정했다.
mem_magagin -> 물품은 금속,비금속 밖에 없으니 varchar(6)으로 설정해도 되지만 넉넉하게 8로 줬다.(한글은 글자당 2byte이므로 비금속이 최대 글자니까 6byte로 생각하면 됌)
나머지도 위에 정규화 테이블처럼 만들어준다.(나머지 생산시간도 PK로 설정함)
- 이제 관계도를 맺어줘야 된다.
생산시간으로 PK로 묶었기 때문에 각각 생산시간으로 관계가 엮인다.
근데 생산시간은 생산한 시간만 있는 고유의 값이므로 각가의 테이블의 생산시간이랑 1:1일 수 밖에 없는 구조이다.
다음과 같이 연결한다.
확실한 관계도 일 경우 Identifying Relationship을 쓴다.
(여기서는 관계가 확실하게 생산시간으로 했기 때문에 이렇게 씀.)
(보통은 Non-Identifying Relationship을 많이 쓴다.)
- 이제 DB로 만들어보자
클릭한 후
Next
Next
비밀번호 쳐주고 Next
만들어 진 것이 보일 것이다. Next
체크가 다되면 Close하면 된다.
- 이제 DB가 만들어 졌는지 확인해보자
Refresh All하면 DB가 나올 것이다.
칼럼에 속성이 관계도로 의해서 quality_mem_time으로 만들어져, 필요한 정보를 찾을 수 있다.
'DB' 카테고리의 다른 글
DB VIEW 활용법 - 정리해야 됌 (0) | 2022.04.26 |
---|---|
예약어 글자 크게 하기 (0) | 2022.04.22 |
DB에 쓰이는 쿼리문 (0) | 2022.04.22 |
MY-SQL 설치 및 설정 (0) | 2022.04.11 |
DB 정규화 (0) | 2022.04.10 |