본문 바로가기
반응형

DB & SQL40

정규화 Preface 이번 장에선 데이터베이스의 정규화란 무엇인지, 또 정규형엔 어떤 종류가 있는지에 대해 공부했다. 공부를 하던 도중 문득 소프트웨어 공학에서 정규형에 관한 내용을 봤던 기억이 나 지난 포스팅을 찾아보자 자료 흐름 중심 설계와 데이터베이스 설계 장에서 RDB를 간단히 공부했던 것을 알 수 있었다. 당시에는 정규형이라는 것을 제대로 이해할 수 없어 단어의 의미와 관련된 링크를 걸어두었는데, DB를 본격적으로 공부하니 막히는 부분 없이 쉽게 이해하며 넘어갈 수 있었다. 한 가지 헷갈리는 부분은 보이스/코드 정규형이었는데, 후보키의 의미를 다시 본 후 책을 읽자 제3 정규형과의 차이를 확실히 알 수 있었다. 각 릴레이션을 보고 어떤 정규형에 속하는지 바로 알 수 있으려면 상당한 경험이 축적되어야 할.. 2022. 2. 23.
데이터베이스 설계 Preface 이번 장에선 요구사항 명세서를 분석하여 E-R 다이어그램으로 표현한 후, 이를 바탕으로 관계 데이터 모델을 작성하는 방법을 알아보았다. 책에서 소개하는 각 단계의 예시들은 쉽게 따라하며 이해할 수 있었지만, 아무런 도움 없이 혼자 DB를 설계하려면 요구사항 명세서를 작성하는 것 부터 굉장히 오랜 시간이 소요될 것 같다는 생각이 들었다. 또, 소프트웨어 공학을 처음 공부한 것이 정말 잘한 일인 것 같다는 생각도 들었다. 다양한 내용들을 전체적으로 훑은 것 뿐이지만, 한 번 봤던 내용을 다시 공부하자 이해하기도 수월하고 자연스레 복습도 돼 자신감이 생긴다. 1. 데이터베이스 설계 단계 2. 요구사항 분석 - 목적: 개발할 DB의 용도를 명확히 파악하는 것 - 요구 사항 분석의 단계 1) 사용자.. 2022. 2. 21.
데이터베이스 언어 SQL Preface 이번 장에선 SQL의 기본적인 명령어를 공부했다. SQL도 언어의 한 종류라 그런지 파이썬을 공부할 때처럼 재미있게 공부할 수 있었지만, 양이 너무 많아 공부할 때도, 블로그를 작성할 때도 시간이 정말 오래 걸렸다. 책에 나와 있는 예제를 실제로 작성해보며 공부를 할까 생각도 해봤지만, 책에선 내가 공부하고싶은 My SQL이 아닌, ORACLE로 예시를 들어 설명하고 있어 이번 책을 마친 후 실습 책을 시작할 때 본격적으로 코드를 작성해보기로 했다. 1. SQL의 소개 - SQL: 관계 데이터베이스를 위한 표준 질의어로 많이 사용되는 비절차적 언어 1) 데이터 정의어 2) 데이터 조작어 3) 데이터 제어어 - SQL은 DBMS에 직접 접근하여 대화식으로 질의를 작성할 수도 있지만, 프로그래.. 2022. 2. 17.
관계 데이터 연산 Preface 이번 장에선 관계 데이터 연산의 방법 중 관계 대수에서 사용되는 다양한 연산자에 대해 공부했다. 일반 집합 연산자는 평소에 자주 봤던 기호들이라 친근했지만, 순수 관계 연산자들의 역할을 구분하여 예제를 푸는 것은 다소 복잡하고 헷갈렸다. 관계 대수와 관계 해석은 실질적으로 사용되지 않고 단지 새로운 언어의 유용성 검증 기준을 위한 도구라고 하는데, 그렇다면 SQL을 이용해 DB를 설계할 때 위의 연산자들은 전혀 쓰이지 않는 것인지 궁금하다. SQL을 본격적으로 소개하는 다음 장에서 그 해답을 얻을 수 있을 것 같다. → 글을 검토하며 다시 생각해보니 일반 언어에선 특정 문법을 통해 결과(출력물)를 얻으므로, 관계 데이터 연산은 새로운 언어의 문법이 정상적으로 작동하는지 검사할 때만 사용될 .. 2022. 2. 13.
관계 데이터 모델 Preface 이번 장에선 논리적 데이터 모델의 도구 중 하나인 관계 데이터 모델을 공부했다. 처음 데이터베이스 공부를 시작할 땐 그동안 공부했던 책들보다 어려울 것 같다는 생각을 했지만, 주로 단어의 의미만을 소개하는 탓인지 책이 잘 읽혀 막히는 부분 없이 쉽게 이해하며 넘어갈 수 있었다. 남은 2주 간 쭉쭉 진도를 나가 개강 전에 이번 책을 끝낼 계획이다. 1. 관계 데이터 모델의 개념 - 릴레이션: 관계형 DB에서 정보를 구분하여 저장하는 기본 단위 → DB 테이블 - 관계 데이터 모델에선 하나의 개체에 관한 데이터를 릴레이션 하나에 담아 DB에 저장한다. - 관계 데이터 모델의 기본 용어 1. 속성(애트리뷰트): 릴레이션의 열 2. 튜플: 릴레이션의 행 3. 도메인: 속성 하나가 가질 수 있는 모.. 2022. 2. 11.
데이터 모델링 Preface 이번 장에선 데이터 모델링에 대해 공부했다. E-R 다이어그램은 소프트웨어 공학에서 이미 배웠던 내용이라 복습하는 기분으로 지난 포스팅을 살펴보며 쉽게 이해하고 넘어갈 수 있었다. 개념적인 내용들을 도식화하는 개념적 모델링은 생각보다 단순한 작업인 것 같은데, 이를 실제 DB에 저장하는 논리적 모델링 작업은 어떻게 진행될지 궁금하다. 이론적인 부분을 하루 빨리 마무리한 후 실제로 데이터베이스를 구축하여 나만의 웹 사이트를 만들어보고 싶다. 1. 데이터 모델링과 데이터 모델의 개념 - 데이터 모델링: 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정 1) 개념적 모델링: 현실 세계의 특정 개념에 대한 중요 데이터를 추출하여 개념 세계로 옮기는 작업 2) 논리적 모델.. 2022. 1. 31.
데이터베이스 시스템 Preface 이번 장에선 데이터베이스와 데이터베이스 관리 시스템, 데이터베이스 시스템의 차이를 공부했다. 처음엔 단어들을 왜 이렇게 비슷하게 만들어서 헷갈리게 하는지 이해할 수 없었는데, 각 단어들의 정의를 살펴보니 어쩔 수 없다는 것을 알게 되었다. 또, 문서의 이해나 회사 내에서의 기본적인 의사소통을 위해선 세 단어를 확실히 구분해서 사용해야 할 것 같다는 생각이 들었다. 대부분의 내용은 이론적인 부분이라 크게 어려운 부분이 없었는데, 데이터 독립성 부분에서 '상위'와 '하위'의 개념을 잘못 이해해서 꽤나 고생했다. 나는 처음에 구체화 정도가 클 수록 상위 개념이라고 생각했었기 때문에 개념 스키마가 하위 스키마이고, 외부 스키마가 상위 스키마라는 것을 이해할 수 없었다. 그런데 여러 예시들을 보며 .. 2022. 1. 26.
데이터베이스 관리 시스템 Preface 오늘은 데이터베이스 관리 시스템이란 무엇인지, 또 어떤 과정을 거쳐 발전했는지를 알아보았다. 그동안 나에게 데이터 저장이란 기껏해야 과제로 제출할 문서 몇 가지를 저장하는 것 뿐이었으므로 OS에서 기본적으로 제공하는 파일 시스템만을 사용해왔고, 별다른 불편함을 느낀 경험이 없었다. 그러나 이번 장을 통해 대량의 데이터를 파일 시스템에 저장할 때 다양한 문제점이 발생할 수 있다는 것을 알게 되었다. 또, 관계 DBMS와 객체 DBMS의 차이점을 이해할 수 없었는데, 한 블로그의 글을 통해 두 개념을 확실히 이해할 수 있게 되었다. 관계 DBMS, NoSQL NewSQL 등 앞으로 공부해야 할 데이터베이스 관리 시스템의 종류가 정말 많은 것 같다. 블로그 링크: https://chessire... 2022. 1. 24.
데이터베이스 기본 개념 Preface 주말동안 아무것도 안 하며 쉴 계획이었지만, 하루 푹 쉬었더니 시간이 아깝다는 생각이 들어 데이터베이스 공부를 시작했다. 몇 달 간 코드 실습을 병행하다 오랜만에 텍스트로 된 이론만을 공부하니 평소보다 집중도 잘 되고 재미있었다. 오늘 공부한 부분은 앞 부분이라 쉽게 이해하며 넘어갈 수 있었는데, 뒷 부분을 훑어보니 어려워보이는 내용들이 꽤 있는 것 같다. 새로운 개념을 배울 생각에 설레고 기대도 되지만, 한 편으론 얼마나 머리를 싸매야 할지 벌써부터 걱정된다. 데이터베이스 공부는 백엔드 개발자가 되기 위한 본격적인 첫 걸음인 것 같은데, 중간에 포기하지 말고 끝까지 노력해보자. 1. 데이터베이스의 필요성 - 데이터(data): 현실 세계에서 단순히 관찰하거나 측정하여 수집한 사실이나 값 .. 2022. 1. 23.
데이터베이스 개론 출처 데이터베이스 개론 카테고리에 있는 모든 글들은 김연희 교수님의 『데이터베이스 개론』 (한빛아카데미)에서 정리·요약 및 간접인용한 내용임을 밝힙니다. 아이콘 이미지 출처: https://kor.pngtree.com/freepng/database-icon-design--interaction-icon-vector-design_4158828.html 2022. 1. 23.