DataBase

유진·2022년 11월 27일

Kotlin

목록 보기
1/3

Database(DB)

구조적으로 저장된 데이터 모음

DBMS

Database Management System
= 데이터베이스를 관리하는 시스템

  • (ex. MySQL, 몽고DB, 마리아DB)
  • 특징 : 데이터를 저장하는 방법에 따라 종류가 나뉜다!
  • 종류 : 관계형, 비관계형
    • 관계형
      • 정의 : 데이터 간의 관계를 표현할 수 있는 데이터 저장방식, 가장 많이 사용되는 방식, MySQL, 마리아DB
      • 특징 : 정규화 사용
      • 예시 : 학교의 출석부
        • 출석부에 적힌 정보
          • 학생 이름, 학번, 학과, 출석여부
          • 더 많은 정보를 확인하고 싶다면?
            • 출석부에서 각 학생의 고유한 정보를 통해 학생 정보를 확인
            • 여기서의 고유한 정보 → 학번
    • 비관계형
      • 정의 : 관계형이 아닌 모든 데이터베이스의 형태
        • NoSQL이라고도 많이 부름
        • SQL 사용을 X - 비관계형 / SQL언어- 관계형
      • 예시 : 최근에 많이 사용됨
        • ex. 몽고DB (가장 하위 데이터를 key-value 형태로 저장)
  • Key-Value를 사용하는 자료구조 → HashMap (파이썬의 딕셔너리와 유사함)
    • 선언 형태 : val newHashMap = HashMap<String, String>()
    • key : value
    • 의미 : key 값의 type을 String, value 값의 type을 String으로 하는 HashMap을 생성
    • 다른 Type을 넣어주려면 <String, String>부분을 원하는 type으로 수정
      • ex. HashMap<String, Boolean>, HashMap<Int, String>
    • 특징 : key 값을 기반으로 데이터를 삽입하고 가져올 수 있는 구조
    • Key 값을 기준으로 Value를 삽입하는 방법 :
      newHashMap[”에릭”] = “안드로이드” key-value : 에릭-안드로이드
    • 새로운 항목을 넣는 방법 : 처음에 선언한 type에 맞춰야함
      newHashMap[”에릭”]=1 → 에러
    • 값을 가져오는 방법 : HashMap 변수와 key값을 써준다
      val eric = newHashMap[”에릭”] //eric에 key 에릭에 해당하는 value인 안드로이드를 가져와 넣음
    • 하나의 Key에 여러 값을 넣을 수 없다!!!
      • 이유 :
    • 안드로이드에서의 데이터 저장 방법
      • file
      • SharedPreferenece (key-value)
      • RoomDB (관계형 DB)

SharedPreferences

안드로이드에서 간단하게 값을 저장하고 불러오는 방법

  • 값을 저장하는 형태 : key-value 형태로 값을 저장
    • key는 String type을 사용
    • value는 기본적인 자료구조만 가능
      • Boolean, Long, String, Int, Double, Set
      • 직접 만든 객체는 안됨
  • 하나의 Key에 다중 값을 담을 순 없을까?
    • 기본적인 자료구조만 가능하기 떄문에 하나의 Key에 다중 값을 저장하기는 어렵다!
    • set 자료형으로 저장 → 순서가 구분되지 않음
    • String에 구분자로 저장 → 구분자가 값에 들어가면(값의 일부가 되면) 문제가 됨
    • String으로 여러 데이터를 표현하는 데이터 포맷인 JSON 사용
      • key-value 형태로 해석 가능한 문자열 기반 포맷
      • ex. {”name”: “에릭”, “age”:23}
      • 외부 라이브러리를 사용하여 변환 가능 ex. GSON(구글에서 만듦)
      • 네트워크 통신에서 값을 주고 받는데도 자주 사용됨

RoomDB

데이터베이스를 서버 대신 파일 형태로 저장하는 SQLite 기반

  • 값을 저장하는 형태 : 관계형 데이터베이스 구조
  • SQL문 사용
    • 자주 사용되는 insert, delete는 SQL문 작성 없이 가능

데이터베이스의 특징

1. 실시간 접근성(Real-Time Accessibility)
수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 한다.
2. 계속적인 변화(Continuous Evolution)
데이터베이스의 상태는 동적이다. 즉 새로운 데이터의 삽입(Insert),삭제(Delete),갱신(Update)로 항상 최신의 데이터를 유지한다.
3. 동시공용(Concurrent Sharing)
데이터베이스는 서로 다른 목적을 가진 여러 응용자들을 위한 것이므로 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
4. 내용에 의한 참조(Content Reference)
데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라, 사용자가 요구하는 데이터 내용으로 데이터를 찾는다.

SQL

구조화된 질의 언어 ← 관계형 데이터베이스에서 사용함!

  1. DDL(Data Definition Language) : 데이터 정의 언어
  2. DML(Data Manipulation Language) : 데이터 조작 언어
  3. DCL(Data Control Language) : 데이터 제어 언어
profile
안드로이드... 좋아하세요?

0개의 댓글