※ 하기 내용은 class101 비전공자도 쉽게 배워 바로 써먹는 실무 활용 SQL을 정리한 내용입니다.
실습 문제

- 해당 요구사항을 통해 SQL 데이터모델을 설계해본다!
내가 만든 설계

- 최대한 하나의 Entity가 하나의 의미만 나타낼 수 있도록 쪼갰음
- 아직 관련성은 나타내기 어려움(심지어 연결이 안된 Entity도 있다..ㅎ)
- 여러개가 나올 수 있는 키워드는 따로 Entity를 만들어서 관리번호를 통해 추출할 수 있도록 만들었음
강사님 설계 (+보고 느낀 것)

- 아예 학생 종류별로 쪼개서 넣으심
- 내가 만든 설계도에선 학번을 통해 학생 상태를 확인해야해서 2번을 거쳐야하지만, 여기선 학번을 통해 어떤 상태인지 한번에 확인 가능하다.
- 또 내가 적은건 학생구분이 졸업생이 아닌 경우 졸업년도가 비는 칸이 많아질탠데, 이렇게 쪼개면 딱 졸업생만 년도를 입력할 수 있어 효율적임
- 키워드 관리를 따로 Entity로 만들어서 키워드가 추가될 경우(5개 이상)에 더 유연하게 대처할 수 있음
- 자료관리대장/대기관리대장을 합쳐서 하나의 Entity로 관리함 → 한번에 상태를 확인할 수 있음
- 자료관리 대장에서 학번, 날짜, 자료번호를 묶어서 식별자로 넣음.
관계 및 식별자 도출 완성본

- 학생 - 자료의 관계를 M:M으로 만드는 실수를 하는데, 이는 관계가 꼬일 수 있으므로, 1:M, 1:M 관계로 풀어줘야한다
- 학생이 여러개의 자료를 빌릴 수 있고, 자료가 여러 학생에게 빌려질 수 있으니까.
- 관계 Entity가 필요함
- 중간에 정보를 관리할 수 있는 Entity 를 만들어줌으로 M:M이 1:M으로 풀린다.
- 학생은 자료를 빌릴 수도 있고, 아닐 수도 있으니까 ..., M으로 표기
- 대여자학번, 일자, 자료번호 3개를 식별자로 놓은 의미. 하나의 학생은 같은날에 동일 자료번호는 1번 밖에 안되니까.
- 만약에 하루에 같은것을 1번 이상 할 수 있다고 생각한다면, 대여일자 -> 대여일시로 변경하면 됨(초까지 관리하겠다).
- 자료 - 관련 키워드 관계는 1:M으로 일련번호에 따라 여러개가 매칭가능 하도록 유연하게 짬, 1개이상의 키워드니까 필수관계
슈퍼타입/서브타입 표현 모델

- 이렇게하면 더 깔끔하게 표현 가능함
- 내가 만든게 약간 저런식으로 만든거였네.. 아직 개념이 확실하게 잡히지 않아서 생긴 오류같다.
- 만약 학부생만 빌릴 수 있다면,

이렇게 서브에서 직접적으로 뻗어나가게 그리면 됨.
사실 직접 설계할 일은 많지 않겠지만, 보고 읽을 수 있는 정도는 되어야할 것 같다.
직접 설계할 수 있으면 최고지!