정규화를 할때 주의해야할점.1. 정규형은 하위 정규형을 만족시켜야한다.2. 1차정규화를 했어도 2정규형, 3정규형이될수도있기 때문에 정규화 한 후 정규형 조건을 확인해야한다.3. 정규화 검증을 위해서는 SAMPLE DATA를 넣어봐야한다. 비정규형 ↓1차 정규화 - 원자 값이 아닌 도메인을 분해 1 정규형모든 도메인이 원자값인 것이 1 정규형이다. ↓2차 정규화 - 부분함수 종속을 제거 2 정규형PK에 대해 완전함수 종속이 된다. ↓3차 정규화 - 이행함수 종속을 제거 3 정규형PK에 이행함수 종속이 아니다. ↓BC 정규화 - 결정자가 후보키가 아닌 함수 제거 BC정규형결정자가 모두 후보키이다. ↓4차 정규화 - 함수 종속이 아닌 다치종속을 제거 4 정규형모든 다치종속은 함수종속이다. ↓5차 정규화 - ..
* DBMS의 발전배경- 파일시스템의 문제점, 데이터의 종복, 종속성의 문제점때문에 DBMS가 생기게 되었다. ★* 3단계 데이타베이스 설계가 변경되더라도 최소한의 변경이 가능하게 한다. 3단계 슬라이스로 영향을 최소화1. 외부 스키마 (사용자 ~ 응용프로그램...)개개 사용자나 응용프로그래머가 접근하는 데이타베이스를 정의한 것-- 논리적 독립성 -- 2. 개념 스키마 (논리적 설계)그 기관이 필요로하는 정보를 생성할 수 있는 모든 데이타 객체들, 즉 개체, 관계, 제약조건을 포함할 뿐만 아니라추가로 이들을 효율적으로 관리하는데 필수적인 정보, 즉 데이타베이스 접근 권한, 보안 정책, 무결성 규칙에 관한 명세도 포함한다. -- 물리적 독립성 --3. 내부 스키마 (물리적 설계)저장 장치의 관점에서 데이타..
SubQuery 복습 1) 학생 '300'의 기말고사 평균보다 높은 기말 성적을 받은 학생의 학번과 과목번호, 기말고사 성적을 출력SELECT sno, cno, final FROM enrolWHERE fianl > (SELECT avg(final)FROM enrolWHERE sno='300') 2) 과목번호 'C413'의 기말고사 평균보다 그 과목의 기말고사 성적이 높은 학생의 학번, 학생이름, 기말고사 성적을 출력SELECT s.sno, sname, finalFROM enrol e JOIN student s ON s.sno=e.snoWHERE cno='C413' and final > (SELECT avg(final)FROM enrolWHERE cno='C413') 1. UNION SELECT snoFR..
17) 학생이 300번인 학생이 등록한 과목의 개수는?SELECT count(*)FROM enrolwhere sno='300' 18) 과목 'C413'의 중간 평균은?SELECT avg(*)FROM enrolwhere cno='C413' 19) 과목별 중간고사 평균SELECT cno, avg(*)FROM enrolGROUP BY cno; 여기서 새로운 내용, GROUP BY가 등장한다.GROUP BY 컬럼명 을 명시해주면 컬럼의 같은 내용끼리 묶어준다.주의점 : 집계함수와 다른 컬럼들을 같이 사용하고 싶다면 반드시 SELECT의 다른 컬럼들을 GROUP BY에 추가해주어야한다. WHERE -> 개별조건HAVING -> 그룹에 대한 조건(전체가 T거나 전체가 F이여야 한다.), 집계함수의 사용이 가능하다...
12) 학과가 '컴퓨터'인 학생들이 수강신청한 과목의 과목명을 출력SELECT distinct cnameFROM enrol e JOIN student s ON e.sno=s.sno JOIN course c ON c.cno = e.cnoWHERE sdept='컴퓨터' 13) 학과가 '컴퓨터'이고 과목명이 '데이터베이스'인 과목을 수강신청한 학생의 학번, 이름, 학점을 학번순으로 출력SELECT s.sno,sname,gradeFROM enrol e JOIN student s ON e.sno=s.sno JOIN course c ON c.cno = e.cnoWHERE sdept ='컴퓨터' and cname='데이터베이스'ORDER BY s.sno * 집계함수(Aggregate Function)Count -> ..
1. JOIN ON 8) 'C413'에 등록한 학생의 이름, 학과, 성적을 검색 여러개의 테이블을 참조할 때가 생기기마련이다. 테이블 1 JOIN 테이블 2 ON 조건식 ON 을 쓰지 않으면 테이블 1의 데이터와 2의 데이터가 1:n으로 모두 출력되게 된다.조건 n 개의 테이블을 쓰면 조건식은 n-1개 사용해야한다. 복수의 테이블을 사용할 때 JOIN조건(ON)을 주지않으면 교차곱(Cartesian Product)의 결과를 얻게된다. Select sname,sdept,gradefrom Student JOIN Enrol on Student.sno=Enrol.snowhere cno='C413'; 복수테이블의 양쪽에 모두 sno라는 칼럼이 있기때문에 sno를 출력하고 싶으면 Student.sno 또는 Enro..
[그림] E - R DiagramCreate table - 테이블 생성Insert - 데이터 생성 foreign key(sno) references student(sno) - 참조키 선언foreign key(cno) references course(cno) 1. CascadeCASCADE?연쇄, 자식에 설정했을 때 부모데이터가 삭제되면 자식 데이터도 자동삭제된다.선언은 자식의 참조키에 선언한다.foreign key(cno) references course(cno)on delete cascade,on update cascade cno에 delete, update cascade를 해주면 이제 부모값이 변경되거나 삭제되면 참조하고있는 테이블의 칼럼의 데이터값들도 변경된다. delete from coursewh..
[그림] Entity - Relation Data Model ★SQL (Structured Query Language)1) DDL(Data Difinition Language) : Create(생성), Alter(변경), Drop(삭제)2) DML(Data Monipulation Language) : Insert(삽입), Update(수정), Delete(삭제), Select(조회)3) DCL(Data Control Language) - 위 두 내용만 집중적으로 다루므로 생략 1. DB, TABLE 생성(DDL) SQL을 설치하고 실행한 후 Schema를 생성한다. [생성하는 법] Schema 생성 후 생성된 DB를 USE 명령어를 사용하여 선택한다. [그림] DB를 선택했다면 이제 DB안에 테이블(개체..
복습 Modeling1. Entity2. Attribute3. Key4. Relationship 1. Entity (개체) 명사구(주어, 목적어)를 가져옴사람, 사물, 개념, 장소, 사건 2. Attribute(특성) 단순 / 복합단일 / 다중저장 / 유도널 잘 넣었는지 확인해보려면 SAMPLE을 집어넣어 보고 확인 4. Relationship1) 관계타입의 인스턴스(동사)2) 관계타입의 유형 (1:N, N:N, 1:1)3) 관계타입의 특성 4-2. 관계타입의 유형* 교수 - 과목사이 수강(X) = 과목(O) 관계타입의 인스턴스까지 넣은 현재 E-R 다이어그램이다.유형은 개체와 관계인스턴스를 넣어 비교한다. 관계 유형을 다 잡고 나면 E-R 다이어그램에 표시한다. 표기방법은 아래와 같다. * 교수 - 과..
1. 설계 구조 (P.210) 현실세계를 데이타베이스로 표현하기 위해서는 먼저 테이타 베이스를 설계해야한다. 이 설계 과정에서 컴퓨터에 저장할 데이타의 구조를 논리적으로 표현하기 위해 사용하는 지능적 도구를 데이타 모델(Data Model)이라고 한다. 요약 : 대상을 컴퓨터 세계로 가져오는 과정을 설계라고 한다. 2. Modeling (P. 210) 레코드 타입(Record Type)을 기초로 한 논리적 개념을 이용하여 어떤 논리적 구조, 즉 데이타 모델로 표현하는 것이 필요한데 이 변환 과정을 데이타 모델링(Data Modeling)이라고 한다. File System RDB(Relationship Data Base) Modeling RDBMS File Entity(개체) Table Field(항목) ..