기존 학습 내용 복습
데이터 모델링
현재 사용하고 있는 것들을 DBMS에 맞게 옮겨오는 것
데이터 모델링의 3단계
개념적 데이터 모델링, 논리적 데이터 모델링, 물리적 데이터 모델링
데이터 모델링 도형의 의미
사각형 : 개체 (Entity)
마름모 : 행동, 관계 (Relationship)
원형 : 속성 (Attribute)
개체 (Entity) 란?
현실 세계의 다양한 요소들을 의미
저장할 만한 가치가 있으며 조직을 운영하는데 꼭 필요한 구별되는 모든 것
다른 개체와 구별되는 이름을 가지고 있고, 개체만의 고유한 특성이나 상태 (속성) 를 가지고 있음
속성 (Attribute) 이란?
개체를 구성하는 필수 요소
사람의 속성에는 이름, 생년월일, 주민등록번호 등 개인을 나타낼 수 있는 필수적인 속성이 있음
다중 값 속성
값을 여러 개 가질 수 있는 속성
ex) 회사의 부서에는 소속된 여러 명의 사원 값을 가질 수 있음
- 책 개체의 저자 (공동 저자)
복합 속성
속성에서 더 의미를 나눌 수 있는 것
ex) 사람의 생년월일에서 날짜를 년, 월, 일로 나눌 수 있음
- 건물의 주소에서 시, 군, 구 등으로 나눌 수 있음
유도 속성
기존의 다른 속성에서 값이 유도되는 것
ex) 상품의 할인 가격은 정상 가격과 할인율이 합쳐져 할인 가격이라는 속성으로 변환
키
기본키 (Primary key) : 해당 개체를 식별하는데 사용하는 값, 유일한 값이면서 NULL 이 허용되지 않음
외래키 (Foreign key) : 관계를 맺은 다른 테이블의 기본키를 참조하여 사용하는 값, NULL 을 허용할 수 있음
차수 (Degree)
데이터모델링과 DBMS에서 열(column)과 같은 의미로 사용, 속성의 개수
카디널리티 (Cardinality)
데이터모델링과 DBMS에서 행(tuple)과 같은 의미로 사용, 개체의 개수
매핑 카디널리티
관계를 맺는 두 개체 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수
일대일 ( 1 : 1 )
상대 개체인스턴스와 나의 개체인스턴스가 한번에 하나씩 관계를 맺는 것
ex) 남여의 결혼 - 남여가 서로 하나의 관계만을 맺을 수 있음
일대다 ( 1 : n )
상대 개체인스턴스 여러개와 나의 개체인스턴스 하나가 관계를 맺는 것
ex) 회사 부서와 부서에 소속된 직원 - 부서 개체는 여러 직원 개체와 관계를 맺을 수 있음
다대다 ( n : m )
상대 개체인스턴스 하나와 나의 개체인스턴스 여러개, 상대 개체인스턴스 여러개와 나의 개체인스턴스 하나가 관계를 맺는 것
ex) 학생과 수강 강의의 관계 - 학생 하나는 여러 강의를 수강할 수 있고, 한 강의는 여러 학생을 가질 수 있음
스키마 (Schema)
데이터베이스의 논리적 구조를 스키마라고 부름
무결성 제약조건
데이터의 무결성을 보장하고 일관된 상태로 유지하기 위한 규칙
무결성 : 데이터를 결함이 없는 상태, 즉 정확하고 유효하게 유지하는 것
무결성의 종류
개체 무결성
각 행마다 유일한 값을 유지하며 NULL 값을 가질 수 없다 = 기본 키
참조 무결성
참조를 하기 위해 참조하려는 키가 존재해야 함, 참조할 수 없는 값을 가질 수 없는 규칙 = 외래 키
도메인 무결성
column에 데이터 타입에 맞는 데이터가 들어가야 함
Oracle 명령어 복습
책 출판사의 목록 확인하기, 중복 제거
SELECT DISTINCT(PUBLISHER)
FROM BOOK;
출판사의 출간된 책 갯수 확인하기
SELECT PUBLISHER, COUNT(*)
FROM BOOK
GROUP BY PUBLISHER;
'축구'가 포함된 책 제목과 출판사 출력
SELECT BOOKNAME, PUBLISHER
FROM BOOK
WHERE BOOKNAME LIKE '%축구%';
박지성이 구매한 책의 권 수 구하기
SELECT C.NAME, COUNT(*)
FROM CUSTOMER C JOIN ORDERS O USING (CUSTID)
WHERE C.NAME = '박지성'
GROUP BY C.NAME;
박지성이 구매한 책의 가격 합계 구하기
SELECT C.NAME, SUM(O.SALEPRICE)
FROM CUSTOMER C JOIN ORDERS O USING (CUSTID)
WHERE C.NAME = '박지성'
GROUP BY C.NAME;
박지성이 구매한 책의 이름과 출판사 출력하기
SELECT B.BOOKNAME, B.PUBLISHER
FROM CUSTOMER C JOIN ORDERS O USING (CUSTID)
JOIN BOOK B USING (BOOKID)
WHERE C.NAME = '박지성';
14/07/04 ~ 14/07/07 사이에 주문한 BOOKID 구하기
SELECT BOOKID, ORDERDATE
FROM ORDERS
WHERE ORDERDATE BETWEEN TO_DATE('14/07/04') AND TO_DATE('14/07/07');
14/07/04 ~ 14/07/07 사이에 주문한 책 이름 구하기
SELECT B.BOOKNAME, O.ORDERDATE
FROM BOOK B JOIN ORDERS O USING (BOOKID)
WHERE ORDERDATE BETWEEN TO_DATE('14/07/04') AND TO_DATE('14/07/07');
'SQL' 카테고리의 다른 글
240429 MongoDB 해보기 (0) | 2024.04.29 |
---|---|
240202 리눅스 서버 만들어보기 (0) | 2024.02.02 |
231128 Oracle (0) | 2023.11.28 |
231127 Oracle (0) | 2023.11.27 |
국비지원학원 3, 4일 차 정리 / ORACLE (0) | 2023.11.26 |