SQL 미리 맛보기!
📚 SQL 데이터 베이스
- 데이터 베이스란? 자료를 모아둔 곳 [저장공간]

📚 건물을 짓기위한 설계도 : 데이터베이스 모델링
- 객체(Object) 모델링
- 학생[Object]
- 당연하게도 이름 [속성 , 특성]
- 당연하게도 나이 [속성 ,특성]
- 학생이라면 공부하다 [ 기능 , 동작]
- 프로젝트를 진행할때 [폭포수모델] 사용
- 📚 진행 순서
→ 프로젝트 계획서
→ 📃 DB 설계[new!]
- → 클래스다이어그램 →객체[필드,메서드]
📚 DB에선?
- 개채[Entity] : 여러개의 데이터 집합[중복허용 X (SET)]
[개체 = Entity / 인스턴스]
이름 ㅣ 나이
홍길동 10 [한줄 당 덩어리 /인스턴스 이자 개체[Entity]가 됨
홍길동 15
김태기 23
- 데이터베이스는 모두 테이블로 구성되어있음
속성 Attribute
Colume [테이블 위에 카테고리]
- 학생[Table]/
📚 테이블이 여러개 들어있는 원통형을 [데이터베이스]라고 부른다.
- 위 단계를 거치면 테이블의 구조가 결정됨
- [Customer][20]char : 20글자까지 허용
not null : 빈공간을 허용하지않음

📂 우리가 배우는 것은 [관계형 데이터베이스]
📚프로그램 진행단계
- 프로젝트부터 꼬이면 신빙성 ↓ 코드 불안정성 ↑

폭포수 모델 🌬
- 각 단계가 폭포 떨어지듯 진행되기 때문에 붙혀진 이름
- 소프트웨어 개발 단계를 폭포수로 모델로 표현한 그림
- 폭포수는 한개를 수정할때 전체를 다 수정해야되기 때문에 요즘은
에자일 방식 채택[**기본 기능만 추가해놓은 채로 필요한 기능은 바로바로 넣어 업데이트하는 방식]**
- 보통 3단계까지 사용한다. [코드구현 전까지 설계부터 완벽하게 해놓아야됨]
- 프로그램 = 프로젝트 = 소프트웨어
- 소프트 웨어를 만드는 절차 → 연구 과정 < 소프트웨어 공학 >

📂 폭포수 모델 예시사진

👶 데이터 베이스 모델링이란?
- DBSM의 데이터베이스 개발 개체

- 새롭게 추가된 구매테이블 개체 [new!]

- 물건을 사다 기능은? = 행동 또는 과계 행동이라 부른다.
📂전체 데이터베이스 구성도

- PK = Primary Key (기본 키 , 유일 키)
- PK는 절대로 중보되지 않는다.

- 개체
테이블 , 행(row): 행의 갯수가 데이터의 갯수다. [entity]
🤔 PK 란?

- PK
- 각 행(row)의 속성 [클래스로 따지면 필드]
- Query
📚 데이터 베이스 구축 절차
웹개발자가 DB에서 보통 하는 일들
- 개발자는 [CRUD]만 잘하면된다.
- CRUD란?
Creat [생성하다.]
READ [읽어오다.]
Update[수정하다.]
Delete[삭제하다.]


📃 테이블 만들기 및 설계하기
테이블 만들기
- 기본 양식 [회원테이블]

- 🤔 프로그램에서 양식만 따라 만들어보자!
먼저 Merber라는 이름을 가진 [Tables]를 만들어보자!

Create 원래 있던 행 새로운 책을 넣고싶어요!
- 자동증가 = 오토인크리먼트를 사용해야함
- 오류가 뜨는이유 : 개체의 번호를 저장해주지 않아서.

Delete
- 행왼쪽에 있는 빈칸을 클릭해 delet row 를 누르면 행의 들어가있는 정보를 삭제할 수 있다.

테이블 설계하기
- [회원이라면?]

- [관리자라면?]
- 테이블이 달라도 속성이름을 똑같이 쓰지말라는 관례가 있다.[현업은 상관X]
📃 [데이터 활용하기]
- SQL의 관례
- 대문자 : 기존의 DB가 가진 키워드
- 소문자 : 내가 만든 것들

🤔WHERE조건도 붙을 수 있음
- 선택사항에는 [] 대괄호
- 그중에도 가져와야 할것은 OR [||] 사용


WHERE란?
- 어디에있는지 찾아주는 조건이라고 생각하면 됨

🛬 데이터베이스 개체 뜻,의미설명
📌트리거 [정보 처리기사에서 엄청 나옴]

🤔 뷰? [가상의 테이블]
- 테이블의 일부를 제한적으로 표현할때 주로 사용
🤔 인덱스란?
- 데이터를 조회 시 결과를 획기적으로 줄여줌 [진짜빨라짐]
🤔 스토어드 프로시저?
🤔 📌"트리거가 뭔가요?"
- 잘못된 데이터가 들어오는 것을 사전에 방지하는 기능
🛬 인덱스를 사용하는 법
📃인덱스 개념 이해하기

📃인덱스 사용방법
- 🤔 "인덱스를 왜 사용하는건가요?"
- 여러개의 SQL을 사용하게되면 너무 많음

🛬 뷰를 사용하는 법
📃 뷰의 인덱스 개념 이해하기
- 뷰를 사용하게 된다면 해킹도 막아줄 수 있고 보안에도 도움을 줌
- 긴 SQL문을 간략하게 작성가능.

📃 뷰를 사용하는 방법

🛬 토어드 프로시저
스토어드 프로시저 개념 이해하기

스토어드 프로시저 사용하기


데이터 베이스 시스템
📚 데이터베이스 시스템
데이터의 집합은 데이터베이스다
- 데이터베이스는?
- 데이터의 정보,지식을 담은 통이다.

📂데이터,정보,지식
- 📃데이터
+관찰의 결과로 나타난 정량적 혹은 정석적인 실체값
- 📃정보
- 📃지식
- 사물이나 현상에 대한 이해
- 어떻게 하는지,몇명이나 달성했는지 등
- 📖 데이터 → 정보 → 지식 [크기순 나열]

📂데이터베이스
- 📃 데이터베이스
- 조직에 필요한 정보를 얻기위해 논리적으로 연관된 데이터를 모아 구조적으로 통합 해 놓은 것

📂일상생활의 데이터베이스
- 나에게 필요한 정보가 무엇인지 파악하고 데이터베이스를 모델링하는게 바람직하다.

📂데이터베이스 시스템이란?
- 테이블 자체를 삭제하거나 만드는 것은 거의없다.

📂 검색과 변경 빈도에 따른 데이터베이스 유형
- 검색빈도
- select : 조회,검색 등의 기능만 수행함
- 변경빈도
- 수정,삭제,삽입의 기능을 수행함 [당연히 변경빈도가 더 어려움]

📚 데이터 베이스 개념 및 특징 📌
📂 데이터베이스의 개념📌[시험대비]

📂 데이터 베이스의 특징📌[시험대비]

💹 데이터베이스 시스템의 구성
💹 데이터 베이스 구성표

✅데이터 시스템의 발전

❎DB의 종류
- 관계형 DB [주로사용]
- 시스템 DB
- 네트워크 DB
📚마당서점의 발전단계
📂[1단계] 마당서점의 시작
📂[2단계] 컴퓨터 도입

📂[3단계] 지점 개설 및 데이터베이스 구축

📂[4단계] 홈페이지 구축

📂[5단계] 인터넷 쇼핑몰 운영

📃 정보통신 기술 발전 표

📚정보 시스템의 발전
- 발전의 단계
- 📂파일시스템 → 💹데이터베이스 → ➰ 웹데이터 베이스 → 💱분산 데이터베이스
📂 파일시스템?
- 파일시스템 도입 후
- 동시에파일을 다루기 때문에 데이터의 일관성 훼손

💹 데이터베이스 시스템 [파일시스템의 단점을 보완]
- 데이터베이스 도입 후
- 데이터의 중복이 줄고 , 데이터를 표준화하며 무결성을 유지하게 됨

💹 데이터베이스 시스템
- 여러종류의 엔티티들이 동시에 접속 가능한 DBMS라는 것

➰웹 데이터베이스 시스템
- 웹을 통해 불특정다수에게 사용권한을 줄 수 있는것 [웹데이터 / 인터넷뱅킹같은]

💱분산 데이터베이스 시스템
📂데이터베이스 저장공간
📚 데이터를 프로그램 내부에 저장
📂[프로그램1]
- 프로그램이 중지된 동안 서비스도 중지되는 문제점이 생김

📂[프로그램2]
- 각각의 장단점이 있다.
- 파일로 데이터를 불러올수 있음 , 새로운 데이터가 들어와서 전체수정X

📂파일 시스템과 💹DBMS의 차이점

📂DBMS의 장점

📃데이터의 표준준수 용이 예시사진

💹 데이터베이스 시스템의 구성
- 개발자의 코드는 DBMS에게 영향을 줌
+ DB의 중간다리가 DBMS

SQL의 정의 [상식]📌
SQL 📌
- 데이터의 정의어 [DDL][CREATE,ALTER.DROP]
- 테이블에게 명령하는 정의어 [테이블은 딱 한번 생성 하기에 잘 사용X]
- Data Definition Languag
- 데이터의 조작어 [DML][SELECT,INSERT,DELETE,UPDATE]📌
- Data Manipulatuon Language[데이터를 조작하는 친구 가장많이사용]
- 데이터의 제어어 [DCL]GRANT,REVOKE [부여하다.뺏어가다]
- Data Control Language [데이터에 대한 사용권한 부여]

📂 데이터베이스 언어
- 질의문
- SELECT 속성1,속성2... FORM 테이블명 [WHERE 조건]
SELECT[]FOR[]WHERE

📚 데이터베이스 사용자
- 일반인 [사용자]

- 개발자[응용프로그래머] = SQL 사용자

- 데이터베이스 관리자 (DBA,Database Administrator)

📂 데이터베이스 사용자의 표📌
- 데이터베이스 관리자는 시험에 나오니 꼭 알아두기 📌

📂DBMS

📂BDMS 제품과 시장 동향

📂DBMS의 기능

데이터 모델 구조들
- 객층 데이터 모델
- 지금은 사용하지 않음

- 네트워크 데이터 모델:
- 거미줄 모양 → 연결이 되어있는 것

- 관계 데이터 모델 📌
- 대부분의 DBMS라 부른다
- 테이블이라는 최소단위로 구성되고 column 과 row로 이루어져있음.
- 무조건 두개이상 만들어야 참이라고 얘기함.📌


📂이 두개는 사용하지않은 데이터 모델이다

📂 속성 값 사용 : 관계 데이터 모델📌

📂개체데이터 모델의 정의
- 개체 데이터 모델은 개체만 전달한다.

📂 3단계 데이터베이스 구조📌
일반 사용자나 개발자
- 이 두 사람이 접근하는 계층, 전체 DB 중에서는 하나의 논리적인 부분을 의미 [기억하기]📌
- 여러개의 외부 스키마가 있을 수 있다 (서부 스키마 ,뷰의 개념)
- 개념 스키마 , 내부 스키마는 모두 한 덩이다
[전체 데이터 DBMS가 보는 데이터]
- 하나의 DB에는 하나의 외부[개념]스미카가 존재하여 DBA관리
- 인덱스 ,데이터 배치방법 , 데이터압축등의 대한내용]
- 개념적 구조라는 말은 관점에 따라 다르다는 말이다.
- 사용자가 보는 데이터 [외부 스키마]

- 전체 데이터 [개념스키마]

- DBMS가 보는 데이터 [내부스키마]


📂 데이터 베이스의 개념적 구조
📃 외부/개념 매핑 [사용자]
- 사용자의 외부 스키마와 개념스키마 간의 매핑[대응] : [사상]
- 외부 스키마의 데이터가 개념스키마의 어느 부분에 해당되는지 연결 : [대응]시킴
- "매핑"은 대응(연결)의 개념 . 다른 말로는 "사상"이라고 말한다.
📃 개념/내부 매핑 [전체]
- 개념 스키마의 데이터가 내부 스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지 대응시킴

3단계 데이터베이스 구조표📌
🥚 새 발처럼 생겼으면 ER 다이어그램 이다!
- ER(Entity Relation) 다이어그램
+ 1대 다관계라고 생각하면 된다.
[새발 뒤에 ㅣ 있으면 [최소 1개] 0ㅣ 은 [0이어도 OKAY]

- M : N 관계
- 항상 중간에 교수와 과목 사이에 연결해주는 테이블을 만들어야함
- 위 다이어그램의 점선은 관계를 의미함
📃3단계 베이스 구조
🥚 "외부" 스키마 1 [수강신청][사용자가 보는 데이터]📌
- PK : 중복하지 않기위해 , 또는 식별하기위해

- 특이한 친구 [등록]

- 과목번호 및 강좌번호를 사용하여 단하나로 수강신청을 할 수 없음 [섞이기때문에]
- 그렇기에 학번과 과목번호를 묶어 PK로 설정
한개의 키가아닌 여러개의 키 [복합키]
- FOR IN KEY = 외래키 [외부에있는 것을 가져오겠다.=참조]
- 다른 테이블의 프라이머리 키[최상단]에 있는 것만 가져올 수있다.

"내부" 스키마 [전체데이터][DBMS가 실제로 보는 화면] 📌
- FK (FOR IN KEY)= 외래키는 가져왔을때 그 테이블의 형식과 똑같이 작성 해야한다.

📃 내부,외부 스키마 구조 총정리표

📂 데이터의 독립성
📃논리적 데이터 독립성 (logical data independence)

📃물리적 데이터 독립성 (physical data independence)
- 외부는 개념과 놀기때문에 내부와 놀 수없음
- 개념은 DB와 놀아요
