필수 파일이다!!! 개인 컴퓨터에 가져다가 저장해 놓기!!!
doc 파일을 보는 것.
eXERD 설치
처음 파일 설치할때는 다음>다음>기본값 으로 설치를 해놓는다.
설치가 완료 되었으면
찾아보기
C -> 새폴더 하나 만든다.
업테이트 클릭
체크한다음 확인
예 클릭
eXERD 라이센스키 열기
자물쇠를 클릭한다
그후 라이센스키 보고 똑같이 적어준다.
다쓴후 다시한번 자물쇠를 클릭해서 잠군다.
파일을 다시 열고 환영페이지 는 지운다.
도움말 에서 사용법 등 볼수가 있다.! - 도움말은 항상 켜두기~
DB 모델링 할 툴이다.
기본셋팅 하기
여기까지 준비가 되었다면 교수님이 주신 doc 파일을 보면서 같이 공부를 한다.
기본 개념
단축키는 꼭 도움말에서 보기
새컬럼에서 space 바를 누르면 나온다.
확인 버튼을 누른다.
아직까지는 정규화가 되어진 상태가 아니다.
정규화 과정이란 불필요하게 중복된 데이터를 제거하는 작업이다.
ex) 반복되 속성인(컬럼) 동일한 것들이 여러개 사용될때를 말한다.
반복되는 속성(컬럼)들을 다른개체(테이블)로 나누어 분리한다.
과목 - 부모테이블 , 학생 - 자식테이블
부모테이블에 P.K 가 있고, 자식테이블에 F.K 가 있다.
즉, 부모테이블에 있는 P.K는 자식테이블에 항상 F.K 로 전이가 된다 - 제1 정규화
그러하기 위해서는 과목 테이블에 P.K가 존재 하여야 한다.
위에서 P.K의 타겟은 과목번호,교수명 이 되어질 것이다. -> 복합 Primary Key
과목번호와 교수번호의 기본키 에서 더블클릭을 하면 자동으로 PK 가 되어진다.
위에는 F.K 인데 P.K로 들어간다.
우리는 점선이 아닌 실선으로 한다.
왜냐하면 학번에 점수를 주는데 학번이 P.K 이므로 중복이 불가능 하다
(한 학생에 점수를 과목마다 주어야 하므로 학생은 중복이 되어야 한다.)
그러므로 과목번호와 교수번호 즉 부모테이블의 P.K 를 자식테이블로 F.K겸 P.K 로 받아오면
학번 과목번호 교수번호는 P.K 가되므로 한 학생 즉, 한 학번에 과목번호 교수번호 세개중 하나만 다르더라도
사용할수가 있다. 그러므로 한 학번에 다른 과목에 점수를 줄수가 있다.
제 2 정규화
식별자(P.K)가 아닌 컬럼이 식별자가 아닌 컬럼에 의존적이라면
ex) 과목번호가 바뀌면 과목명도 바뀌어야 하는데 교수번호가 바뀐다고 해서 과목명이 바뀌는게 아니다.
그러므로 과목번호(식별자 P.K) 와 과목명(비식별자) 을 분리하여 새로운 테이블을 만든다.
여기서 점수는 학번,과목번호,교수번호 셋중 하나라도 바뀌면 바뀌므로 세개를 전부 의존하므로 따로 빼면 안된다.
제 3 정규화
<식별자가 아닌> 컬럼이 <식별자가 아닌 컬럼>에 의존적이라면 불리해서 새로운 테이블을 만든다.
여기서 개설과목 번호는 인공 즉, 임의로 개발자가 정해준 것이다. ex) 개설과목번호를 sequence 라고 본다.
인공키 컬럼인 개설과목번호 하나로 강의실코드,교수번호,과목번호를 볼것이다.
여기서 강의실코드,교수번호,과목번호는 과목,교수,강의실 이라는 테이블에 존재 해야지만 가능하다.
제 4 정규화
테이블과 테이블 사이를 다 : 다 관계를 1 : 다 관계로 쪼개는 것을 말한다.
한명의 교수가 여러 과목을 강의를 할수가 있다.
또한 반대로 한과목을 여러명의 교수가 강의를 할수가 있다.
주의 할점 다 : 다 관계를 1 : 다 관계로 쪼개는 것을 행위(행동) 이라고 부른다.
다 : 다 에서 다 => 1 : 다 에 부모이고 또 다른 다 => 1 : 다 의 부모이다.
반대로 1 : 다 => 다 의 자식 , 1 : 다 => 다 의 자식이다.
부모테이블의 있는 P.K 컬럼은 자식테이블에 F.K 로 무조건 전의가 되어진다.
즉 , 부모의 P.K 컬럼이 자식테이블로 들어오면 F.K 로 되어진다.
이렇게 다 : 다 관계가 위에처럼 자식테이블로 나온다.
위에서 학생 테이블과 개설과목 테이블은 다 : 다 관계이다.
실선은 부모테이블에 있는 P.K가 자식테이블로 넘어올때 F.K 가 되어지고
점선은 부모테이블에 있는 P.K가 자식테이블로 넘어올때 일반컬럼 이 되어진다.
여기서 동그라미는 zero 를 뜻한다.
과목(부모)에는 존재하지만 개설과목(자식)에는 존재하지 않을수 있다라는 말이다. 즉, zero를 허락한다라는 말이다.
여기서 없든지, 있으려면 1개만 들어간다. 라는 말이다.
여기서 동그라미가 없어지는데
과목(부모)에도 존재하고 개설과목(자식)에도 존재한다.는 말이다. 즉, zero를 허락해주지 않는다.
여기서 무조건 들어가야 하는데 1개 또는 여러개 들어간다는 말이다.
이 관계는 오로지!!!!! 딱!!! 한개만 들어간다는 말이다.
학생명, 과목명 은 아미 학생과 과목테이블에 있는데
매번 join join 해서 사용하기가 불편하다.
그래서 성적이라는 테이블에 학생명과 과목명을 적어버린다.
이것을 역정규화 라고 하나다. 정규화를 거스른다는 말이다.
역정규화,비정규화 - 수행속도가 느리거나, 프로그램 구현하기가 <어려운 경우>
중요!!!!
여기서 학과명안에 데이터를 넣을때
'컴퓨터공학' 이렇게 넣으면 큰일 난다. ///!!!!!!!
유추할수 있는 것이라면 반드시 코드화를 해주어야 한다.!!
유추할수 없는 것이라면 코드화 하지않고 사용할수 있다.
'컴퓨터공학','컴공과','컴퓨터공학' => 우리가 보기에는 모두 동일해 보이지만 <데이터>로 보았을 경우는 전혀 다른것이다.
위에 처럼 테이블에 art+enter 를 누르면 나오는데 테이블 물리 이름란에 적어주는 것이 테이블 명이 된다.
위에 물리이름 란에 쓴 것이 나중에 테이블의 컬럼명이 된다.
데이터 타입에 타입을 넣어주는 것이다.
NOT NULL 에 not null 을 넣어줄 것이면 N.N 으로 표현한다.
기본 값 표현식에는 default 후 오는 것을 넣어준다. ex) sysdate
주석은 말그대로 그 컬럼의 주석을 뜻한다.
한번 누르면
이렇게 바뀐다.
이렇게 DB에 넣을 테이블명 컬럼명 컬럼값을 볼수가 있다.