[Team TAB] 1주차 스터디

2025. 2. 11. 19:29maeng grow/UX・UI

 

UX UI 디자인을 하며 팀 작업을 할 때

회의 도중 개발자분들이 하는 이야기를 조금이나마 더 알아듣기 위해, 

기획-개발-디자인 간 조금 더 원활한 소통을 위해

개발용어 관련 스터디에 참여하게 되었다.

 

개발 관련 지식은 원체 아는게 없으니 글이 길어지는 경향이 있고,

파고들다보면 끝이 없어서 어느쯤에서 멈춰야하는지 감이 잘 안온다.

(본문은 디자이너의 관점에서 정리해본 개념들이니, 저를 믿지 마시오...)

 

누구든 좋습니다. 정정이 필요한 부분이 있다면 댓글 남겨주세요👍🏽


 

1. Database

정의:

  • 데이터베이스(DB)는 여러사람이 공유할 수 있도록 체계화된 데이터의 집합
    (여러 가지 업무에 공동으로 필요한 데이터를 유기적으로 결합하여 저장한 집합체)
  • 데이터를 효율적으로 처리하기 위하여 개발됨
  • 단어, 숫자, 이미지, 비디오, 파일 등 다양한 유형의 데이터를 저장할 수 있음

장점:

  • 데이터가 중복되는 문제를 없앨 수 있음 
  • 업무가 확대되어도 새로 파일을 준비할 필요가 없음

특징:

  • 실시간 접근 가능
  • 데이터를 계속 삽입, 삭제, 수정 할 수 있음
  • 여러 사용자가 동시에 데이터를 사용할 수 있음
  • 데이터를 구조화하여 효율적으로 처리할 수 있음

 

----------------------------------------

2. Relational DB ( =RDB =관계형데이터베이스)

정의:

  • 관계형 데이터베이스 Relational Database (RDB)
    관계형 데이터베이스는 키(key)와 값(value)들의 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 데이터베이스이다.
  • 전통적인 관계형 데이터베이스 시스템으로, 테이블 형태로 데이터를 저장
    SQL(Structured Query Language)을 사용하여 데이터를 조작
  • 정형화된 데이터를 다루는 데 가장 적합
    (테이블 간의 관계를 설정하여 데이터의 일관성,무결성을 유지할 수 있음)

특징:

  • 관계형 데이터베이스를 사용하려면 SQL(Structured Query Language)을 사용해야 함

 

----------------------------------------

3. DBMS

정의:

  • DataBase Management System
  • 다수의 사용자들이 체계적으로 DB내에 접근, 생성, 업데이트 및 검색할 수 있는 소프트웨어(도구) 시스템을 의미함
  • 사용자와 데이터 사이의 중개자 역할을 함

출처: geeksforgeeks

 

파일 시스템에 대비한 DBMS의 장점:

  • 데이터 중복성 감소 (ex.데이터는 중앙에 저장되므로, 개개인마다 중복된 데이터를 가지고 있을 필요 없음)
  • 데이터 무결성 향상 (ex.변경한 내용은 모든 관련 데이터 포인트에 반영됨)
    *무결성 이란? 데이터의 정확성, 일관성, 유효성이 유지되는 성질
  • 강화된 보안 (DBMS는 역할 기반 액세스를 제공> 권한이 있는 사용자만 데이터를 보거나 수정할 수 있도록 보장)
  • 데이터 엑세스 간소화 (SQL과 같은 '쿼리 언어'를 사용하면 데이터를 빠르고 쉽게 검색할 수 있음)
    * 쿼리언어 란? 데이터베이스에서 정보를 검색하는 데 사용되는 특수 컴퓨터 언어(사용자-데이터베이스 간의 인터페이스 역할)
  • 데이터 관계 지원 (데이터 포인트를 연결하여 관계 관리를 더 쉽게 만듦/ 고객과 주문은 "고객 ID"를 사용하여 연결될 수 있음)
  • 동시성 제어 (여러 사용자가 충돌 없이 동시에 데이터에 액세,수정 가능)

 

----------------------------------------

4. SQL -  (DML, DDL, DCL)

(0) SQL (Structured Query Language)

  • 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수목적의 프로그래밍 언어
  • 표준 대화식 프로그래밍 언어임

[SQL의 문법종류 3가지]

(1) DDL (Data Definition Language): 데이터 정의 언어

  • 테이블이나 관계의 구조를 생성하는데 사용하며 CREATE/ DROP/ ALTER/ TRUNCATE 문 등이 있음
    - CREATE : 새로운 데이터베이스 관계 (테이블) View, 인덱스, 저장 프로시저 생성
    - DROP : 이미 존재하는 데이터베이스 관계 (테이블), 뷰, 인덱스, 저장 프로시저 삭제
    - ALTER : 이미 존재하는 데이터베이스 개체에 대한 변경 , RENAME의 역할
    - TRUNCATE : 관계 (테이블)에서 데이터를 제거 (한번 삭제시 돌이킬 수 없음)

(2) DML (Data Manipulation Language): 데이터 조작 언어

  • 테이블에 데이터 언어를 검색/삽입/수정/삭제 할 수 있음
    - SELECT:  검색(질의)
    - INSERT : 삽입(등록)
    - UPDATE : 업데이트(수정)
    - DELETE : 삭제

(3) DCL (Data Control Language): 데이터 제어 언어

  • 데이터의 사용 권한을 관리하는 데 사용함. GRANT/ REVOKE 문 등이 있음
    - GRANT : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 부여한다.
    - REVOKE : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 박탈 or 회수 한다.
    - CONNECT : 데이터베이스 or 스키마에 연결하는 권한.
    - SELECT : 데이터베이스에서 데이터를 검색할 수 있는 권한
    - INSERT : 데이터베이스에서 데이터를 등록(삽입)할 수 있는 권한
    - UPDATE : 데이터베이스의 데이터를 업데이트 할 수 있는 권한
    - DELETE : 데이터베이스의 데이터를 삭제할 수 있는 권한.
    - USAGE : 스키마 또는 함수와 같은 데이터베이스 개체를 사용할 수 있는 권한

----------------------------------------

5. NoSQL DB - (Redis, mongoDB)

(0) NoSQL DB 정의:

  • NoSQL DB (Not Only Structured Query Language DB)  
  • 여러 유형의 데이터베이스를 사용하는 비관계형 데이터베이스 프로그래밍언어
    (SQL만을 사용하지 않는 데이터베이스 관리 시스템(DBMS)을 지칭하는 단어이다. 관계형 데이터베이스를 사용하지 않는다는 의미가 아닌, 여러 유형의 데이터베이스를 사용하는 것이다.)
  • 비정형 데이터와 반정형 데이터를 수용하는 유연한 스키마를 활용하는 동시에
    테이블 형식이 아닌 데이터 저장 방식을 활용하는 데이터베이스를 의미함.

(1) Redis (Remote Dictionary Server)
     - In-Memory 기반의 Key-Value 기반의 NoSql DBMS이다.

In-Memory Redis는 기본적으로 In-Memory기반이다. 즉, 데이터들이 디스크에 저장되는 다른 DBMS와 달리 Memory(Ram)에 저장된다. 일반적으로 디스크를 읽는 속도보다 메모리를 읽는 속도가 훨씬 빠르기 때문에 데이터를 Read/Write하는 과정에서 속도가 훨씬 빠르다는 장점이있다.
Key-Value Redis는 key-value로 데이터가 이루어져 있다. 예를 들어 내가 key가 "a"이고 value="1"이라는 데이터를 넣었을 때, 나중에 데이터를 Read할 때는 key를 통해 데이터를 찾을 수 있다.
Collection Redis는 Collection 즉, 다양한 자료구조(String, Hash, Set, List, Sort등)를 저장할 수 있는 기능이 있다.
이 기능을 이용해 개발자들의 편의성과 성능을 높여줄 수 있다.
예를 들어 RDBMS에 SCORE를 저장하고 정렬하여 출력한다고 가정을 했을 때, RDBMS 정렬을 디스크에서 수행하기 때문에 속도가 느려지지만 Redis의 Sort자료구조를 활용하면 속도와 편의성을 동시에 얻을 수 있다.
Cache 방식 Redis는 기본적으로 Cache방식을 사용한다. 여기서 Cache란 데이터를 미리 저장해놓고 요청에 따라 필요한 데이터를 바로 보내주는 것이다. 이 방식을 사용함으로써 DB Read의 부하를 줄여줌으로 써 많은 요청이 몰렸을 때 성능이 향상될 수 있다.
Expires Expires는 말그대로 만료를 뜻하는데, Redis는 각 데이터(key-value)에 만료시간을 설정하여 일정 시간후 데이터를 자동으로 없앨 수 있다. (ex. 로그인 인증 토큰 처리)

 

(2) mongoDB 

     - MongoDB는 NoSQL로 분류되는 크로스플랫폼 도큐먼트 지향 데이터베이스 시스템이다.
     - 전통적인 고정된 테이블-관계 기반의 RDBMS가 아니며, 동적 스키마형 문서를 사용한다.
     - MongoDB는 가장 기본적인 데이터를 Document라고 부른다. 이 Document의 집합을 Collection이라고 한다.
     - 똑같은 조건으로 설계되었을 시, 기존 RDBMS보다 속도가 굉장히 빠르다는 장점이 있으나
       이런 속도는 ACID(원자성, 일관성, 독립성, 지속성> 데이터베이스 트랜잭션이 안전하게 수행된다는 것을
       보장하기 위한 성질을 가리키는 약어
)를 포기한 대가로 얻은 것이다.

       저장하는 데이터가 은행 데이터같이 일관성(consistency)이 매우 중요한 작업에는 MongoDB는 부적합 하다.

 

 

----------------------------------------

6. Schema

정의:

  • ‘데이터의 구조’ 또는 ‘데이터베이스의 설계’ 를 의미
    DB 내에 어떤 구조로 데이터가 저장되는가! 를 나타냄
    (데이터베이스의 구조, 제약조건에 관해 전반적인 명세를 기술한 것)

특징:

  • 사용자의 관점에 따라 (스키마의 3계층! 외부>개념>내부 스키마)로 나눠짐
    (1) 외부 스키마 (사용자 관점 / view)
         - 사용자나 프로그래머가 각 개인의 입장에서 필요로하는 데이터베이스의 논리적 구조를 정의한 것
         - 일반 사용자는 SQL 을 이용하여 DB 를 쉽게 사용/ 프로그래머는 C, JAVA 등의 언어를 사용하여 DB 에 접근한다.
         - 하나의 DB 시스템에는 여러개의 외부 스키마가 존재할 수 있다.
           (외부 스키마는 사용자가 보는 관점이 중심이기 때문에 사용자에 따라 다르게 출력되며, 여러 개가 존재)
         - 외부 스키마는 전체 데이터베이스의 어느 한 논리적인 ‘부분’으로 볼 수 있기 때문에
           외부스키마는 곧 서브스키마(sub schema)라고도 한다.
    (2) 개념 스키마 (사용자 관점)
         - 조직체나 기관의 관점에서 논리적 구조를 기술함.
         - 데이터베이스는
           1.사람이 이해하는 논리구조와 2.컴퓨터가 이해하는 물리구조로 나뉘는데,
              그 중 사람이 이해하는 논리구조가 개념스키마 이다.
         - 데이터베이스의 ‘전체’를 정의한 것으로 데이터 개체, 관계, 제약조건, 접근권한, 무결성 규칙등을 명세한 것이며
           데이터베이스의 전체적인 구조를 우리가(사용자가) 알아볼 수 있게 표현한 것이다.

         - 앞을 생략한 채로 그냥 스키마 라고 이야기 하면 = 개념스키마 라고 이해하면 된다.
           (시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마)

    (3) 내부 스키마 
         - 컴퓨터(물리적 저장창지 관점)의 입장에서 논리적인 구조를 기술함.
         - 데이터베이스가 사용자들에게 제공되기 위해서 ‘실제적인 기계적 처리’에 의해서 분배되고 저장되어야 하는데,
           기계적 처리를 하는 일련의 과정을 의미한다.
         - 내부스키마는 DB의 전체적인 구조로써 단 하나만 존재할 수 있다.

 

----------------------------------------

7. Table

정의:

     - 데이터베이스 에서 테이블은 '열과 행' 으로 구성된다. (표 형식으로 구성된 관련 데이터의 모음)
     - 관계형 데이터베이스와 플랫 파일 데이터베이스에서 테이블은 수직 열 (이름으로 식별 가능)과 수평 행 모델을 사용한다.
       (셀은 행과 열이 교차하는 단위이다.)
       (테이블에는 지정된 수의 열이 있지만, 행은 많아도 된다./ 행을 고유하게 식별하는 특정 열 선택을 기본 키 라고 한다.)

특징:

     - 테이블의 데이터는 물리적으로 데이터베이스에 저장될 필요가 없다.
     

 

----------------------------------------

8. Row / Column

출처: https://datacadamia.com/data/type/relation/column

 

출처: https://coding-factory.tistory.com/870#google_vignette

 

Row 정의:
     - 객체 하나를 나타내는 단위를 (row = instance = 행 = 튜플 = 레코드)이라고 한다. 

특징:

     - 하나의 로우 = 하나의 관계 데이터
     - 같은 테이블 안에서 로우는 항상 동일한 구조이다.
     - 로우를 단위로 데이터를 삽입

 

Column 정의:

     - 이름/나이/주소/학점평균 처럼 학생이 가지는 속성. (column = attribute 속성 = 열 = 필드)

특징:

     - 컬럼의 이름은 동일한 테이블 내에서 중복될 수 없음

     - 컬럼의 이름과 데이터 타입은 테이블을 만들 때 미리 정해짐

 

 

----------------------------------------

9. Column Relationship (관계형 데이터베이스의 관계) - (1:1,  1:n,  n:1,  n:m)

(1) 1:1 (일대 일)

출처: https://dodote10.tistory.com/624

 

     - 한명의 사용자는 하나의 프로필만 가지게 되고 프로필 입장에서도 하나의 사용자만 가지게 된다.

 

(2) 1:n (일대 다)    n:1 (다대 일)

출처: https://dodote10.tistory.com/624

     - 이 관계의 경우는 테이블 A의 하나의 레코드는 테이블 B의 여러 레코드와 관련되어 있다.
       다만 테이블 B는 하나의 A의 레코드하고만 연결된다. 위 그림에서 와 같이 사용자는 여러번 주문을 할수 있다.
       하지만 주문은 주문자로써의 사용자정보를 하나만 가진다. 

 

(3) n:m (다대 다)

출처: https://dodote10.tistory.com/624

 

     - 테이블 A의 여러 레코드는 테이블B의 여러 레코드와 관련있을수 있으며,
       테이블B도 테이블A의 여러 레토드와 관련있을 수 있다.
       위 그림의 예시에서 처럼 한권의 책을 열러 작가가 쓸수도 있고 작가 한명이 여러개의 책을 쓸 수 도 있다. 

 

 

----------------------------------------

10. key

출처: https://coding-factory.tistory.com/870#google_vignette

배경지식:

     - 관계형 데이터베이스는 키(key)와 값(value)들의 관계를 테이블화 시킨, 매우 간단한 원칙의 전산정보 데이터베이스인데,

       각각의 테이블은 row와 column으로 구성되어 있다.
     - 관계형 데이터베이스에서 "관계"는 엔터티(=1개의 table)와 엔터티 사이의 관계를 의미한다.
       1:1(일대일), 1:N(일대다), N:M(다대다)의 세 가지 형식이 있다.

KEY 정의: 

     - 테이블에서 튜플을 유일하게 식별할 수 있는 속성 혹은 속성들의 집합이다.

       테이블은 중복된 튜플을 허용하지 않기 때문에 각각의 튜플에 포함된 속성들 중 어느하나(혹은 하나 이상)는 값이 달라야 한다.         즉, 키가 되는 속성(혹은 속성의 집합)은 반드시 값이 달라서 튜플들을 서로 구별할 수 있어야 한다.
       (* tuple이란? 각 attribute의 값으로 이루어진 리스트)

 

Key 참고 블로그
https://mimah.tistory.com/entry/%EA%B4%80%EA%B3%84-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8-%EB%A6%B4%EB%A0%88%EC%9D%B4%EC%85%98Relation%EA%B3%BC-%ED%82%A4Key
 

관계 데이터 모델, 릴레이션(Relation)과 키(Key)

관계 데이터 모델(Relational data model) 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델이다. 하나의 개체에 대한 데이터를 하나의 릴레이션(테이블)에 저장한다. 바탕이 되는 데이터 구

mimah.tistory.com