DB
ERD 모델링해보기
아시타가
2022. 4. 13. 16:44
※ ERD란?
Entity Relationship Diagram : 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓는 다이어그램이다. ERD는 단어에서 의미하는 그대로 ' Entity 개체 '와 'Relationship 관계 '를 중점적으로 표시하는 다이어그램이다.
※ 왜 사용하는가?
DB의 데이터가 무작위로 많아지면 필요한 데이터를 찾을 때 시간이 걸리기도 하고 , 결과값이 달라질 수 있는데 이걸 해결하기 위해서 모델링이 필요하다. 그 중 하나가 관계도로 모델링을 하는 것인데, 그걸 보기 편하게 보기 위해서 사용한다.
※ 어떻게 사용하는가?
우선 물품이 양품으로 나왔는데 사용해보니 불량이였고, 어떤 시간 때에 그 불량이 연속적으로 나왔다는 시나리오가 있다고 생각해보자.
그럼 어떤 시간대에 불량이 나왔느지를 알아보고 폐기를 하던 수리를 해야 될 것이다.
1. 우선 필요한 데이터를 하나 결정한다. 예를들어 양품이 어디 위치에 있는지 알아보자.
테이블을 작성해 보자.
- 비금속은 불량인 제품이다.
- 금속은 양품인 제품이다.
이렇게 테이블을 작성 했을 시, 창고가 더 필요한 경우 창고를 더 만들어 줘야된다. 그러면 칼럼수가 계속 늘어나게 될 것이다. 그러면 연산시간이 더욱 늘어난다. 그러면 내가 필요한 데이터를 정리한 테이블을 만들 수 없을까? 라는 생각이든다.
- 그래서 정규화를 시켜 준다.
https://mangkyu.tistory.com/110
[Database] 정규화(Normalization) 쉽게 이해하기
지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz
mangkyu.tistory.com
정규화가 이해가 쉽게 나와있다.
생산시간을 기준으로 각각의 테이블을 참조하여 필요한 데이터를 찾아서 볼 수가 있다.
정규화를 하면 무결성이 보장되지만 데이터를 넣고 빼고 하다보면 어쩔 수 없이 데이터를 건들여서 날아가던가 수정이 되던가 그럴 경우가 있다. 그럴 때 확실하게 연결하기 위해서 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하면 된다.