2024 04 25 JAVA SQL [데이터구조]

김필립·2024년 4월 25일

SQL

목록 보기
2/10

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을 사용하게되면 너무 많음

🛬 뷰를 사용하는 법

📃 뷰의 인덱스 개념 이해하기

  • 뷰를 사용하게 된다면 해킹도 막아줄 수 있고 보안에도 도움을 줌
    • 긴 SQL문을 간략하게 작성가능.

📃 뷰를 사용하는 방법

🛬 토어드 프로시저

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

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


데이터 베이스 시스템

📚 데이터베이스 시스템

데이터의 집합은 데이터베이스다

  • 데이터베이스는?
    • 데이터의 정보,지식을 담은 통이다.

📂데이터,정보,지식

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

📂데이터베이스

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

📂일상생활의 데이터베이스

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

📂데이터베이스 시스템이란?

  • 테이블 자체를 삭제하거나 만드는 것은 거의없다.

📂 검색과 변경 빈도에 따른 데이터베이스 유형

  • 검색빈도
    • select : 조회,검색 등의 기능만 수행함
  • 변경빈도
    • 수정,삭제,삽입의 기능을 수행함 [당연히 변경빈도가 더 어려움]

📚 데이터 베이스 개념 및 특징 📌

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

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


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

💹 데이터 베이스 구성표


✅데이터 시스템의 발전

❎DB의 종류

  • 관계형 DB [주로사용]
  • 시스템 DB
  • 네트워크 DB

📚마당서점의 발전단계

📂[1단계] 마당서점의 시작

📂[2단계] 컴퓨터 도입

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

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

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

📃 정보통신 기술 발전 표


📚정보 시스템의 발전

  • 발전의 단계
    • 📂파일시스템 → 💹데이터베이스 → ➰ 웹데이터 베이스 → 💱분산 데이터베이스

📂 파일시스템?

  • 파일시스템 도입 후
    • 동시에파일을 다루기 때문에 데이터의 일관성 훼손

💹 데이터베이스 시스템 [파일시스템의 단점을 보완]

  • 데이터베이스 도입 후
    • 데이터의 중복이 줄고 , 데이터를 표준화하며 무결성을 유지하게 됨

💹 데이터베이스 시스템

  • 여러종류의 엔티티들이 동시에 접속 가능한 DBMS라는 것

➰웹 데이터베이스 시스템

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

💱분산 데이터베이스 시스템


📂데이터베이스 저장공간

  • 프로그램 내부
    • 프로그램 내부에서 직접 가져와사용
  • 파일시스템
    • 파일에 저장된 값을 출력
  • 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와 놀아요

profile
기억에 남는 사람입니다

0개의 댓글