본문 바로가기

728x90

ComputerScience/Database

(26)
DB - 26. Webtoon DB 설계 프로젝트 1. ER modeling - webtoon은 웨툰의 제목, 연재요일, 썸네일 이미지, 줄거리, 연재 플랫폼 장르를 속성으로 갖는다. 참고로 장르는 다중값 속성으로 웹툰은 여러 장르를 가질 수 있다. - draw는 작가가 웹툰을 연재하는 realtionship을 나타낸다. 한 명의 작가가 여러 작품을 연재할 수 있고 작품은 반드시 한명의 작가가 있어야 한다. 따라서 일 대 다 관계를 맺고 webtoon쪽은 total participation 제약이 있다. - author는 웹툰 작가 정보를 나타낸다. 작가의 이름, 여러 작가들과 더불어 동명이인의 작가를 구분할 수 있는 id를 부여한다. - 사용자 테이블은 id와 비밀번호를 속성으로 갖는다. - collection은 사용자의 취향에 맞게 여러 웹툰을을 보..
DB - 25. JDBC 연습 1. Webtoon Table 생성 webtoon 검색, 조회, 평가 서비스를 제공하는 응용에서 필수인 webtoon table 생성 ID, title, platform, pub_day(연재요일), summary, story_author(글작가), draw_author(그림작가) 를 attribute로 갖는다. ID는 primary key이다. 2. Tuple 추가 3. 응용과 DB연결 (위) local mysql server와 응용프로그램 연결 후 “select * from webtoon” query 수행결과 (위) 동적 insert문으로 새로운 tuple 삽입 후 webtoon table 전체 출력 결과
DB - 24. Normal Form 1. 1st Normal Form - 각 tuple의 속성은 atomic하다. - 가로, 세로 유일한 값이 단 하나로 결정된다. 2. 2nd Normal Form - 예시를 통해 알아보자. - 아래 table의 경우는 건물 이름과 방 넘버가 PK를 이룬다(합성키) - trivial한 종속관계를 제외한 함수종속 관계를 나열하면 아래와 같다. - 위의 함수종속 관계를 완전종속관계와 부분종속 관계로 구분할 수 있다. - 완전 종속의 경우는 bldg와 room#가 모두 주어져야만 capacity가 결정되는 관계이다. - 부분 종속의 경우를 살펴보면 bldg만 있으면 사실상 bldg_area가 결정된다. 이런 관계를 부분종속이라고 한다. - 만약 PK가 합성키라면 모든 함수종속관계가 완전 종속 관계가 된다. - ..
DB - 23. Functions and Procedures , Trigger 1. Declare SQL Functions - 집계함수를 배웠었다. - 언어 자체가 제공하는 built in function이다. - 이 처럼 사용자가 직접 원하는 logic을 구현해서 사용할 수 있다. - 아래 예시는 학과 이름을 주면 해당 학과의 instructor 수를 반환하는 함수를 정의한다. - query문을 통해 반환된 값을 d_count에 저장하여 반환한다. - 이렇게 함수를 정의하여 나중에 사용자가 사용할 수 있다. - 원래 같으면 department와 instructor 테이블을 둘다 봐야 알수 있지만 이미 dept_count가 instructor에서 값을 가져오기 때문에 아래 구문에서 instructor테이블까지 명시할 필요가 없어졌다. 2. Table Functions - 함수의 반..
DB - 22. Intermediate SQL 2 1. Complex check condition - section 테이블의 time_slot_id 는 time_slot 테이블의 time_slot_id중에서만 값이 올 수 있다는 제약 구문이다. - 이 상황에서 time_slot 테이블에서 time_slot_id가 A인 튜플들을 삭제하려고 하면 section에서 A를 쓰는 튜플도 문제가 생기기 때문에 삭제 연산을 reject한다. 2. Assertion - check구문이 복잡해질때 assertion을 사용하여 별도 구문으로 작성할수 있다. - DB가 항상 조건을 만족하는 상태를 유지하도록 하기 위해 assetion구문으로 제약을 정의할수 있다. - 예를들면 student 테이블의 tot_cred은 takes에서 해당 학생이 수강한 과목들의 학점 합과 같..
DB - 21. Integrity Constraints 1. Integrity Constraints - dbms의 목적은 data의 관리이다. 따라서 db안에 들어갈 데이터의 제약을 관리한다. - 예를들면 고객의 전화번호가 null이 될수 없다. 나이는 10이상이다 등의 제약을 말한다. 2. Not null 3. unique - A1, A2, ..., Am들을 합성해서 고유식별자를 정의한다. - Primary key와는 별개로 따로 존재할 수 있다. PK와의 차이로 unique는 null을 허용한다. 4. Check - semester는 'Fall', 'Winter', 'Spring', 'Summer' 네가지만 가능하다는 제약을 걸어준다. 5. Referential Integrity - 참조무결성 - RDB는 foreign key가 매우 중요하기 때문에 FK..
DB - 20. Intermediate SQL - View 1. View - instructor 테이블을 아래처럼 되어있다. 교수 정보들을 조회를 하려는데 salary는 민감한 정보라 빼고 조회하였다. - 이 결과 set에 이름을 붙여 추가 작업을 할수 있도록 도와주는 것이 View이다. - 실제로 DB에 이런 테이블은 없지만 가상으로 faculty table이 존재하는 것처럼 이름을 붙인다. - create 구문으로 만든 table은 base table이라고 하고 view로 만들어진 테이블을 virtual table이라고 한다. - 그럼 이렇게 faculty에 대해서 쿼리문을 작성할 수 있게된다. - 실제로 faculty는 디스크에 존재하지 않는 테이블이기 때문에 faculty를 정의하는 sql 구문과 faculty에 대한 쿼리문을 시스템이 합성해서 base ..
DB - 19. Intermediate SQL - Join 1. Natural Join - 학생이 수강한 과목 (이름, 과목번호) 반환 - student, takes를 join 한 테이블에서 where를 만족시키는 레코드만 남긴다. - 위와 동일한 결과를 내는 다른 구문이다 자연조인한 결과를 반환한다. 여기에 where절을 추가해 조건을 달 수 있다. - 참고로 자연조인은 두 테이블의 join결과에서 동일한 이름의 속성들이 일치하는 경우들만 반환한다. - natural join의 일반적인 사용법은 위와 같다. - 자연조인시 주의할 점이 있다. - 이렇게 하면 학생이 수강한 과목들이 반환된다. - 이렇게하면 학생이 소속학과에서 개설된 강의중에서 수강한 과목들만 반환된다. 왜냐하면 자연조인시 student.dept_name,과 course.dept_name이 일치하..

728x90