3주차 회고록을 시작하기 앞서, 지난주 약속했던 나와의 약속은 실행되지 못했다.
(문제풀이 능력 키우기... 프로젝트를 위해 널 포기했다..)
뭔가 방향성을 바꿔야 한다는 생각이 들었기도 했고, 매번 강의를 들을때마다
예습이 아닌 복습 위주로 공부하다보니 강의 들을 때 뭘 질문을 해야할 지
모르겠다는 생각이 들 때가 많았어서 방향성을 바꿔보면 어떨까하는 생각에
나머지 공부 때 김영한의 자바 인터넷강의를 들었다.
그래도 회고록은 데이터베이스 위주로 진행해야지 !!
이번주는 수요일까지 데이터베이스 배웠고, 목요일부터 리눅스를 배웠다.
나는 이번주까지 데이터베이스를 배우면서 제일 어려웠던 부분은,
명령어 사용할 때 기억이 너무 안나서 시간이 너무 소요됐었다.
(SELECET절, WHERE절, SUBQUERIES, TRIGGER, Procedure, Function 등등)
이유는 뭘까 생각해봤더니 혼자 풀어보겠다고 찾아보지도 않고 생각만 주구장창하고 있었다.
이제는 생각하는 것 보다 코드를 먼저 쓰는 게 중요하다고 생각이 들어 조금만 생각하고 모를땐 빠르게 검색했더니 어느정도 어떻게 쓰는지 파악할 수 있다는 점이 좋았다.
아쉽게도 다 배우고 나서 이런 생각이 든 게 문제지만...
아무튼 이번주는 DB모델링에 대해 중점적으로 배웠고, 모델링에 대해 이론강의 들을 때 나는 너무 재밌어서 집중해서 들었다.
강사님이 설계쪽에 성향이 맞는 사람이 모델링을 재밌어 한다고 하시긴 했는데, 막상 다뤄보니 너무 어려웠다.
모델링의 특징은 세가지가 있었고,
단순화, 추상화, 명확화 있다.
- 단순화
복잡한 현실 세계를 선택과 집중을 통해 부합하는 필요한 것만 선택한 것- 추상화
현실세계의 다양한 현상을 일정한 형식의 표기법으로 관련있는 비슷한 수준끼리묶어낸 것- 명확화
누구나 쉽게 이해할 수 있게 애매모호함을 제거하고 정확하게 기술하는 것
프로젝트 진행하면서 느낀건데,
코드를 짤 때, 같은 값 뽑을 때 단순하게 짜는 것과
문서화 작업과 명확한 용어를 사용하는 게 *매우 중요 했다.
데이터 모델링의 이해관계자
정보 시스템을 구축하는 모든 사람은 데이터 모델링도 전문적으로 할 수 있거나 적어도 완성된 모델을 정확하게 해설할 수 있어야 한다.
IT 종사자가 아닌 경우에도 해당 업무에서 정보화를 추진하는 위치에 있는 사람 또한 데이터 모델링에 대한 개념 및 세부사항에 대해 어느 정도 지식을 가지고 있어야 한다.
현업의 IT업무 담당자 또한 모델링을 이해할 수 있어야 프로젝트 수행 중 의사소통을 잘 할 수 있
고 업무를 잘못 해석하여 잘못된 시스템을 구축하는 위험을 줄일 수 있다.
강의 때 위에 내용 배우고 프로젝트 때 생각나서 흐름을 정확하게 파악하려고 프로젝트 참여하려고 많은 노력을 했던 것 같다.

릴레이션 이름 (Entity) : 개체라는 뜻을 가지고 있음
튜플 (Tuple) : 행(Row) == 객체 (Instance)
주식별자(Identifier) : 각 행을 구분하는 식별자 / primary Key
어트리뷰트(attribute) : 열(Column) == 속성
어트리뷰트 값(Value) : 컬럼 값 == 속성 값
Head : 내포(Intension) 맨 위 행
Body : 외포(Entension) 행의 수
차수 (Degree) : 어트리뷰트의 수
카디널리티 (Cardinality) : 튜플의 수
강사님께서 릴레이션 내 사용되는 용어는 외워두는 게 좋다고 하셨어서
복습하기 !!
무결성은 데이터값이 정확한 상태를 의미
정합성은 데이터가 서로 모순이 없이 일관되게 일치해야 함을 의미
반면 무결성은 데이터가 완전하고 정확해야 한다는 의미
(정합성이란, 시스템 내의 데이터나 정보들이
논리적으로 일관되고 서로 모순 없이 일치하는 상태)

데이터베이스에선 무결성이 정말 중요하다. 나머지 공부하면서 전공자에게 식별자에 대해서 설명을 들을 때도, ERD로 모델링을 할 때 등등 데이터를 뽑아낼 때 무결성을 가진 데이터가 제일 중요하다고 한다.
엔터티
업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 알아야 하는 유, 무형의 사물(개체)를 의미
엔터티 도출 원칙
- 업무의 관심 대상이 되는 사물이어야 된다.
- 두 개 이상의 인스턴스를 소유해야 한다. ( = 행이 2개 이상)
- 데이터의 정체성이 분명해야 한다.
- 데이터 종속성에 의해서 하나의 주제만을 관리하는 정의가 명확한 모델이어야 한다.
- 엔터티의 인스턴스를 식별할 수 있는 식별자(Identifier)가 존재해야 한다.
(PK 가 없는동일한 성격의 데이터는 유일해야 한다.)- 엔터티 명은 관리하고자 하는 데이터의 성격 (주제)을 가장 잘 표현하는 이름이로 한다.
ERD CLOUD에서 엔터티 도출할 때 진짜 미치는 줄 알았다.
강사님이 설명해주실 때는 뭔가 쉬울 것 같았는데, 복습으로 내주신 실습 문제처럼 꼬우면 꼬울수록 무결성을 가진 엔터티 도출하는 게 너무 어려웠다.
(정규화 과정이 너무 어려웠음)
주식별자 ( Primary Identifier ) *중요
- 엔터티에 소속된 인스턴스들을 구별하는 기준 역할을 하는 속성이다.
- 주식별자는 유일성, 최소성, 불변성, 존재성의 특징을 갖는다.
- 유일성: 주식별자에 의해 엔티티 내에 모든 인스턴스들을 유일하게 구분되어야 한다.(중복되지 않는다.)
- 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 불변성: 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 한다.
- 존재성: 주식별자가 지정되면 반드시 데이터 값이 존재해야한다.(NULL은 허용되지 않는다.)
- 주식별자는 하나가 아닌 여러 속성일 수 있다. (복합키)
- 엔터티의 속성 중 주식별자 속성이 없다면 새로운 속성을 만들어 준다.
외래식별자 ( Foreign Identifier )
- 관계가 있는 두 엔터티를 부모, 자식 엔터티로 구분한 후 부모의 주식별자와 공통 속성이 자식에게
도 존재하면 해당 속성을 외래식별자로 지정한다.- 자식 엔터티에 부모 엔터티 주식별자 공통 속성이 없을 경우 자식에게 속성을 추가한 후 외래식별자로 지정한다. (참조하는 쪽 : 자식, 참조 당하는 쪽 : 부모)
강의가 끝나고 남아서 복습하면서 무결성에 대해 전공자인 동생에게 질문했더니, KEY에 대해서 먼저 알아야 한다며 (슈퍼키, 외래키, 기본키 등등) 설명해주면서 무결성에 대해 설명해주니 너무 귀에 쏙쏙 들어왔다.
중복 데이터를 제거하여 안정성과 확장성을 도모한다.
안정성 : 함수 종속을 기반으로 데이터의 성격에 맞는 엔터티가 도출되어 모델 구조를 정의할 수 있다.
확장성 : 데이터의 정체성이 그대로 반영되어 업무가 수정되거나 추가 되더라도 엔터티에 반영하기가 수월해 진다.
위에서 말했듯이, 실습문제 풀면서 정규화작업이 너무 어려웠고 유일성을 가진 데이터를 뽑아내기 위해 많이 생각을 해야했다.
남들이 20분 걸리는 문제풀이를 혼자서 40분 걸리는 나를 보고 처음에 적었던 조금만 생각하자는 게 여기서 느꼈던 것이다.
그렇게 데이터베이스가 끝이 났다..
데이터베이스를 배우고 느낀 점은,
데이터베이스 이론을 들었을 땐 너무 재밌고, 뭔가 내 결이랑 맞다는 생각했던 것도 잠시 실전으로 들어갔더니 너무 어려워서 기가 빨렸다 해야되나..? 문제풀 때마다 시간이 너무 오래 걸렸다는 걸 깨닫고 고쳐야할 점이 있다고 느꼈다.
데이터베이스 다음에 다시 부셔줄게..
사실 리눅스는 나중에 따로 더 공부해보려고 해서 강의만 집중해서 듣고 복습은 하지 않았다.
나는 4주차부터 배우는 자바를 중점으로 예습을 진행하기 위해 나머지 공부때 자바 강의를 들었고, 리눅스는 간단히 써보려고 한다.
일단, 우리는 리눅스와 버츄얼박스를 활용하여 백업하는 용도로 배웠다.
이때도 설치하면서 오류가 뜨면 어김없이 머리가 고장났고,
매번 이럴때마다 진짜 PTSD가 올 지경이였다...
맥은 설치가 왜이렇게 어려운걸까....
몇주간 같은 조였던 팀원이 나는 설치할 때만 금쪽이고,
수업은 곧잘 따라온다고 했다. (칭찬으로 생각하겠습니다.)
리눅스를 배울 때 느낀점은,
둘째주에 터미널 공부 했던게 너무나 도움되었고, 맥은 리눅스 기반이라 터미널 용어가 리눅스 용어여서 터미널 활용을 잘하면 리눅스를 잘할 수 있다고한다.
이번 리눅스 강의는 기본적인 명령어에 대해 많은 비중으로 배웠다.
리눅스는 이정도까지만...
일주일 동안 한 일에서 느낀 점
- 이번주에 많은 일들이 있었고, 모든걸 다담기는 아직 너무어려웠다.
많은 상황들이 있었기도 했고, 복습, 예습 프로젝트, 회고를 다담기에는 시간이 부족했었던 게 아쉬웠다. 그리고 지금 모든 일들의 순서가 아직 뒤죽박죽인 게 너무 아쉬워서 한번 차근차근 다뤄볼 예정이다.- 일단, 이번주 회고록에 다루진 않았지만 4주차에 진행하는 DB 미니 프로젝트를 무사히 완성했던 점? 첫 미니 프로젝트부터 우여곡절이 많았지만 끝까지 노력해서 완성한 게 내자신이 기특했다.
- 아쉬웠던 점은, 지난주에 계획했던 목표들을 중간에 방향을 바꾸고 다른 공부를 시작했던 점이 좀 아쉬웠다. 어떻게든 시간을 짬내서 할 수 있었겠지만 프로젝트와 자바공부를 병행하다보니 시간이 너무 없었다고 생각이 들었어서 그 목표를 못했던게 너무 아쉬웠다.
- 일단 4주차부터 연습해야할 건 문법 하나에 많은 시간을 쏟지 않을 예정이다. 시간이 너무 오래걸려서 정답을 찾으면 모를까, 20~30분 생각하고 문제를 못풀던 내가 너무 싫었다...
- 다음주 계획으로는 자바강의 100% 수강하는 걸로 목표잡을 거고, 이번달 말에 진행하는 PCSQL 응시를 위해 나머지 공부떄 다른 수강생들과 스터디 진행예정이다.
아직 4주차 밖에 되지않았지만, 벌써 2개월이 지난것처럼 시간이 빠른듯 느리게 지나갔다. 일단 매일매일 최선을 다해서 공부 열심히하고 주말에도 공부를 열심히하고 있을 뿐 인생에서 제일 바쁘게,, 갓생살고 있는 기분이 든다.
노력한만큼 부트캠프가 끝나고 꼭 결과가 좋았으면 하는 생각뿐이다 !!
매일 남아서 공부하는 사람들과 함께 대기업 가는 꿈을 꾸며..
이번주 회고를 적을 때, 프로젝트 내용도 넣을까해서 적다가 너무 길어질까봐 따로 다루는걸로 하겠습니다......^^
다음주에봐요~~
ㅋㅋ ㅋㅋㅋ 설치할 때만 금쪽이라는 멘트가 너무 웃기네요 병진님 열심히 하시는 거 매일 보고 있어요! 너무 대단하고 장합니다
첫 프로젝트를 진행하며 다들 느끼신 점이 많은 것 같아요 이 열정 그대로 최종 프로젝트까지 가져가셔서 무조건 좋은 결과 가져가셨으면 좋겠어요!! 병진님 믿어보겠습니닷