{"id":48526098,"url":"https://github.com/devyubi/til_db","last_synced_at":"2026-04-07T22:32:38.490Z","repository":{"id":310616459,"uuid":"1040471667","full_name":"devyubi/til_db","owner":"devyubi","description":"database의 이해","archived":false,"fork":false,"pushed_at":"2025-08-27T06:06:01.000Z","size":33,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-27T11:52:00.174Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devyubi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-19T03:17:17.000Z","updated_at":"2025-08-27T03:21:19.000Z","dependencies_parsed_at":"2025-08-19T08:42:46.729Z","dependency_job_id":"76a2be9a-20ca-4e28-8ad8-d0191ed88038","html_url":"https://github.com/devyubi/til_db","commit_stats":null,"previous_names":["devyubi/til_db"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devyubi/til_db","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devyubi%2Ftil_db","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devyubi%2Ftil_db/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devyubi%2Ftil_db/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devyubi%2Ftil_db/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devyubi","download_url":"https://codeload.github.com/devyubi/til_db/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devyubi%2Ftil_db/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31532327,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-07T22:32:37.944Z","updated_at":"2026-04-07T22:32:38.481Z","avatar_url":"https://github.com/devyubi.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 데이터베이스의 이해\n\n- 현장에서 대화가 되어야 함\n- 특히, BE와 FE가 협업 시 의사소통이 안되면 곤란함\n\n## 1. 데이터베이스 모델링이란?\n\n- 실제 애플리케이션에는 많은 데이터를 관리함\n- 데이터를 잘 분류하고, 데이터를 잘 보관해야 함\n- 수월하게 데이터를 조회할 수 있어야 함\n- 수월하게 데이터를 수정할 수 있어야 함\n- 수월하게 데이터를 삭제할 수 있어야 함\n- 그래서 어떻게 분류하여, 어떻게 저장하고, 어떻게 관리할 지를 설계하는 행위를 `DB 모델링` 이라 함\n- 위의 사항을 줄여서 (회의에서) `데이터베이스모델링`, `DB설계` 라고 칭함\n\n## 2. 데이터베이스 모델링을 배우면 좋은 점\n\n- 협업이 수월해짐\n- Entity Relation Diagram (ERD) 을 볼 수 있음\n- 효율적으로 데이터를 저장하는 것에 대한 고민을 하게 됨\n- BE 개발자는 정말 많은 데이터를 관리함 (BE 개발자는 DB 설계를 필수로 알아야함)\n- FE 개발자도 현재는 필수 교양임 (취업 요구 사항)\n\n## 3. 관계형 데이터베이스 관리 시스템\n\n- RDBMS (Relation DataBase Manage Systems)\n- 관계형이란 `데이터 표`와 `데이터 표`의 연결을 관리\n- 대표적인 도구 : MySQL (유료-Oracle이 매입함), MariaDB (무료-MySQL과 같음-MySQL 개발자중 한명이 회사 나와서 만듬), Oracle, PostgreSQL (SupaBasesms PostgreSQL 기반의 SQL 데이터베이스를 사용), SQLite 등\n- SQL 언어는 엑셀의 표와 같음. 즉, `테이블`에 데이터를 관리함\n- NoSQL 언어는 json 형태. 즉, `문서`에 데이터를 관리함 (대표적인 도구 : FireBase, MongoDB)\n\n## 4. 테이블에 대한 이해\n\n- 테이블은 엑셀의 `표` 라고 생각하면 쉬움\n- 회원 테이블 만들기\n- 제품 테이블 만들기\n\n- 예제: https://docs.google.com/spreadsheets/d/1PjX6Sepcg3nVyHcGmYTeMgkz_9uw-6aZZbLbqfhALtU/edit?usp=sharing\n\n## 4.1 기본키(Primary Key)\n\n- 흔히 `PK` 라고 하면 의사소통 됨\n- 수 많은 데이터를 구별해 주기 위해서 기본키가 필요함\n- 절대 `중복되면 안됨`, `값이 비어서도 안됨`\n- `Auto increment` 옵션을 주어서, 1씩 자동 증가 또는 UUID 로 랜덤 값으로 세팅함\n- 컬럼명을 `id` 또는 `uid`라고 하는 경우가 많음\n\n### 4.2 외래키(Foreign Key)\n\n- `FK` 라고 통상 칭함\n- `게시글 테이블`과 `사용자 테이블` 생성\n- 예제: https://docs.google.com/spreadsheets/d/1PjX6Sepcg3nVyHcGmYTeMgkz_9uw-6aZZbLbqfhALtU/edit?usp=sharing\n- 요약: 다른 테이블의 데이터와 관계를 연결 시키는 키를 말함\n- 장점: 잘못된 FK(외래키)를 연결하면 오류를 일으켜줌\n- 데이터가 오류가 없음을 BE 개발자들은 `참조 무결성` 이라고 칭함\n\n## 5. 데이터베이스의 네이밍 규칙\n\n### 5.1 반드시 테이블명 및 컬럼명은 소문자로 작성한다\n\n- 이유: 운영체제에서는 대, 소문자를 구별하는 경우와 그렇지 않은 경우에 존재함\n- 운영체제와 상관없도록 반드시 `소문자`를 규칙으로 하면 좋음\n\n### 5.2 snake_case 를 사용함\n\n- table 명, 컬럼명을 여러 단어로 작성할때 `소문자_소문자` 로 작성\n\n```text\nuserName   // 안좋은 예시\nuser_name  // 좋은 예시\n```\n\n```sql\ncreate table user_Info (\nid UUID PRIMARY KEY DEFAULT gen_random_uuid(),\nuser_id TEXT unique not null,\npw TEXT,\nnickname TEXT,\nbirth DATE,\ngender TEXT,\nprofile_img TEXT,\ncreated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()\n);\n```\n\n### 5.3 축약어를 사용하지 않는다\n\n- 여러 명이서 DB를 관리함\n- 규칙을 지키는 것을 신경써야함\n- 직관적일수록 업무 진행이 원할함\n\n```text\nu_name    // 안좋은 예시\nuser_name // 좋은 예시\n```\n\n### 5.4 SQL 명령어만 `대문자로` 사용함\n\n- 실제로 sql 명령어는 대,소문자를 구별하지 않음\n- 가독성을 위해서 대문자를 활용함\n- 아래는 소문자로 구성 된 코드\n\n```sql\nselect name, age\nfrom users\nwhere age = 20\nand name = \"홍길동\";\n```\n\n- 아래는 대,소문자로 구성 된 코드\n\n```sql\nSELECT name, age\nFROM users\nWHERE age = 20\nAND name = \"홍길동\";\n```\n\n### 5.5 테이블의 이름을 지을 때는 가능하면 복수형을 선택하자 (권장 사항)\n\n- 데이터가 여러개 임을 의미해 줌\n- 회사마다 다름. 하지만 지켜주면 `일관성` 을 유지해 주자 (섞어서 이름 짓지 말자)\n- 실습은 `복수형` 으로 진행함\n\n```text\nuser\nusers\n\npost\nposts\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevyubi%2Ftil_db","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevyubi%2Ftil_db","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevyubi%2Ftil_db/lists"}