[UMC] 8주차✨- 데이터베이스

Madeline👩🏻‍💻·2022년 11월 20일
0

kotlin study

목록 보기
13/19

코틀린 코틀린!

데이터베이스 DB✨

  • 데이터베이스(Database, DB)란? : 데이터의 저장소.

  • DBMS(Database Management System, 데이터베이스 관리 시스템)란? 데이터베이스를 운영하고 관리하는 소프트웨어.
    계층형, 망형, 관계형 DBMS 중 대부분의 DBMS가 테이블로 구성된 관계형 DBMS(RDMBS)형태로 사용됨.

  • SQL(Structured Query Language)란? 구조화된 질의 언어라는 뜻으로 관계형 데이터베이스에서 사용되는 언어. 표준 SQL을 배우면 대부분의 DBMS를 사용할 수 있음.

🎇 DB?

데이터베이스를 한 마디로 정의하면 ‘데이터의 집합’이라고 할 수 있습니다.

데이터베이스에는 일상생활 대부분의 정보가 저장되고 관리됩니다. 오늘 보내거나 받은 카카오톡 메시지, 인스타그램에 등록한 사진, 버스/지하철에서 찍은 교통카드, 카페에서 구매한 아이스 아메리카노 등의 정보가 모두 데이터베이스에 기록됩니다.

🎇 DBMS?

데이터베이스를 ‘데이터의 집합’이라고 정의한다면, 이런 데이터베이스를 관리하고 운영하는 소프트웨어를 DBMS(Database Management System)라고 합니다. 다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야 합니다.

가까운 예로 은행의 예금 계좌는 많은 사람들이 가지고 있습니다. 여러 명의 예금 계좌 정보를 모아 놓은 것이 데이터베이스입니다. 은행이 가지고 있는 예금 계좌 데이터베이스에는 여러 명이 동시에 접근할 수 있습니다. 예금 계좌 주인, 은행 직원, 인터넷 뱅킹, ATM 기기 등에서 모두 접근이 가능하니까요. 이러한 것이 가능한 이유는 바로 DBMS가 있기 때문입니다.

DBMS와 같은 소프트웨어는 특정 목적을 처리하기 위한 프로그램입니다. 예를 들어 문서를 작성하기 위해서는 아래아한글(HWP)이나 워드(Word), 표 계산을 위해서는 엑셀(Excel)이나 캘크(Calc), 멋진 사진을 편집하려면 포토샵(PhotoShop)이나 김프(Gimp)와 같은 소프트웨어를 설치해야 합니다.

마찬가지로 데이터베이스를 사용하기 위해서도 소프트웨어, 즉 DBMS를 설치해야 하는데 대표적으로 MySQL, 오라클(Oracle), SQL 서버, MariaDB 등이 있습니다. 소프트웨어 각각의 사용 방법과 특징이 다르지만 특정 목적을 위해서는 어떤 것을 사용해도 무방합니다.

🎇 DBMS 유형

DBMS의 유형은 계층형(Hierarchical), 망형(Network), 관계형(Relational), 객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 분류됩니다. 현재 사용되는 DBMS 중에는 관계형 DBMS가 가장 많은 부분을 차지하며, MySQL도 관계형 DBMS에 포함됩니다.

1) 관계형

  • 데이터 간의 관계를 표현할 수 있는 데이터 저장 방식
  • MySQL, MariaDB, ...

2) 비관계형 (NoSQL)

  • 최근 많이 쓰는 유형!
  • NoSQL 데이터베이스는 키-값(key - value), 문서, 그래프 등 성능과 규모 확장에 최적화된 다양한 데이터 모델을 제공합니다.

  • Key-Value를 사용하는 코틀린 자료구조

🎉 HashMap

val newHashMap = HashMap<String, String>()

val HashMap<String, Boolean>

//삽입 - key를 기준으로 value 삽입(자료형에 맞춰야함)
newHashMap["maddy"] = "안드로이드"

//값을 가져올때 변수, key
val name = newHashMap["maddy"]

하나의 Key에 여러 값을 넣을 수는 없다!

🎇 SQL: DBMS 에서 사용하는 언어

SQL(Structured Query Language)은 관계형 데이터베이스에서 사용되는 언어로, ‘에스큐엘’ 또는 ‘시퀄’로 읽습니다. 관계형 DBMS 중 MySQL를 배우려면 SQL을 필수로 익혀야 합니다. SQL이 데이터베이스를 조작하는 ‘언어’이긴 하지만 일반적인 프로그래밍 언어(C, 자바, 파이썬 등)와는 조금 다른 특성을 갖습니다.

안드로이드에서의 데이터 저장 방법

1) File (txt, ...)
2) SharedPreferences(Key-Value)
3) RoomDB (관계형 DB)

SharedPreferences

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

  • Key - Value 형태로 값 저장
    - Key: String Type
    - Value: 기본적인 자료 구조만 가능(Boolean, Long, String, Int, Double, Set) (내가 만든 객체는 안됨)
  • String으로 여러 데이터를 표현하는 데이터 포맷인 JSON 사용
    - Key-Value 형태로 해석 가능한 문자열 기반 포맷
    • {"name": "maddy", "age":23}
    • 외부 라이브러리를 사용하여 변환 가능(ex. GSON)
    • 네트워크 통신에서 값을 주고받는데에도 자주 사용된다.

RoomDB

  • 데이터베이스를 서버 대신 파일 형태로 저장하는 SQLite 기반
  • 관계형 데이터베이스 구조
  • SQL문 사용

실습해보아요

실습: sharedpreference로 값 넣어보기

Log.d로 찍어보아요

apply를 해야 값에 저장이 된다~를 확인해보았다.

실습2: RoomDB

RoomDB는 gradle에 따로 추가해줘야됨

https://developer.android.com/training/data-storage/room

이 중에서 optional 아닌걸로
저 kapt 아니면 ksp 둘 중 하나로 하면 된다고 합니다.
둘 다 하면 에러난대요

+plugin에 id 'kotlin-kapt' 추가하세요
안하면 에러나요

해주고 싱크 나우

RoomDB를 사용하려면 크게
1) 데이터베이스에 저장되는 객체
2) 데이트 액세스하는 객체(DAO)
3) 실질적 데이터베이스 자체의 객체
가 필요해요.

=> 이 세개를 class로 만들어봅니다.

클래스로 만듭니다.

설명은 주석으로 달아놨는데 와 진짜 어려워요

그 다음 user는 데이터 클래스로 만들어요

마지막 userDao는 인터페이스로 만들어요

저 함수들을 실행시키면 위에 있는 annotation부분을 (RoomDB가,,?)
알아서 실행시켜주는거라고 합니다..

AppDatabase.kt로 가서 젤 위 코드를 입력해요.

데이터베이스와 실제 객체를 넣는 과정이래요.. 여러 클래스->배열로,
버전은 데이터베이스 구조가 바뀔 수 있으니까 버전으로 구별하는거.

그리고 이렇게 userDao와도 연결해줘요.Roomdatabase 상속받아서 자동으로 값을 채워줍니다.

여기까지가 준비과정이었고, 다시 메인 액티비티로 가서

roomDb를 써보아요

이 과정을 두번째로 다른 사람 이름과 나이를 넣어서 돌려보면
이전에 입력한 값이 id = 1, 이번에 넣은 값이 id = 2임을 알 수 있어요

참고
https://hongong.hanbit.co.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-databasedb-dbms-sql%EC%9D%98-%EA%B0%9C%EB%85%90/

profile
Major interest in iOS 🍀 & 🍎

0개의 댓글