이전

리뷰 (6)

한줄평
평점 분포
  • 리뷰 총점10 67%
  • 리뷰 총점8 33%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 0.0
  • 40대 9.0
  • 50대 8.0
리뷰 총점 종이책
[2012-011] Head First SQL - SQL을 이해해 보자 1-1
"[2012-011] Head First SQL - SQL을 이해해 보자 1-1" 내용보기
내가 처음 SQL을 배울 때인 20년 전에는 SQL만을 위한 책이 없었던 것 같다. 대부분 데이터베이스론 교재 안에 일부 챕터로 들어 있었고, 이것만 가지고는 이해가 힘들어서 컴퓨터실에서 밤을 새워서 수많은 시행착오를 거치던지.. 그것도 아니면 컴퓨터 잡지에 있는 SQL 관련 기사를 읽어야 했다.  이런 과정은 너무나 비효율적이었다. 데이터베이스론 교재에서는 이론적인 아주 간단한
"[2012-011] Head First SQL - SQL을 이해해 보자 1-1" 내용보기

내가 처음 SQL을 배울 때인 20년 전에는 SQL만을 위한 책이 없었던 것 같다. 대부분 데이터베이스론 교재 안에 일부 챕터로 들어 있었고, 이것만 가지고는 이해가 힘들어서 컴퓨터실에서 밤을 새워서 수많은 시행착오를 거치던지.. 그것도 아니면 컴퓨터 잡지에 있는 SQL 관련 기사를 읽어야 했다. 

이런 과정은 너무나 비효율적이었다. 데이터베이스론 교재에서는 이론적인 아주 간단한 개념적인 내용만 설명해 주었고 상세한 내용은 대부분 다루지 않았다.  그런데... 세월이 흘러 요즘 나오는 책들을 보면... SQL만을 다루는 책이 출판되었고 더구나 내용도 이해하기 너무 쉽다... (이렇게... 불공평할 수가...ㅠㅠ  요즘 배우려는 사람은 자신의 의지만 있으면 훨씬 효율적으로 배울 수 있을 것 같다...)

이 블로그의 다른 글에서 타카하시 나마의 "만화로 쉽게 배우는데이터베이스"라는 일본 번역서(만화?)를 소개한 적이 있다. 일본이 만화강국이라서 그런지 만화로 데이터베이스에 대해서 설명하고 있었다. 미국에서 만들어진 이 책과 비교를 한다면,  일본책은 컴맹을 위하여, 개발을 하려는 사람이 아닌 사람을 위하여 다분히 개념적인 내용들 다루었다면,  이 책은 SQL을 처음 접했으나 실제로 개발할 사람들을 위한 책이라고 말할 수 있을 것 같다.

신입사원들에게 이 책을 읽게 하면, 이미 SQL의 기본 개념을 가지고 있는 사람은 엄청 짜증낸다. 왜 다 알고 있는 내용을 길게 늘여 쓴 책을 읽어야 하냐면서...  반대로 처음 SQL 문을 접한 사람들은 설명이 잘 되어 있다고 한다.

우리 나라 사람들은 정리가 잘 되어 있고 내용 전달이 효율적인 책들을 좋아하는 경향이 있다. 빠른 시간 내에 필요한 지식을 습득해야 하기 때문이라고 생각한다.  그런데...  이런 불만을 감수하면서도 이 책을 읽게 만드는 이유는, 좀 더 복잡하고 어려운 문제를 해결하려면, 깊이 있는 이해가 필요하다고 믿기 때문이다.  이 책에 나와 있는 내용들을 하나 하나 시간들여 읽어서 자신의 것으로 만들어 놓으면 복잡한 문제도 해결할 수 있을 것이라고 생각한다.

단점이라고 생각하는 부분이라면...  이 책은 MySQL을 이용하여 모든 설명을 하고 있다. 일반적으로 실무에서 가장 많이 사용하는 상용 DBMS가 아니라는 것이다. 

--------------------------------
다음은 챕터별로 간단히 요약하였다.


1장 데이터와 테이블 - 모든 정보는 여기에
데이터베이스가 왜 필요한지, 데이터베이스 및 테이블이 어떻게 구성되어 있는지, 데이터 타입이 무엇이고 어떤 종류가 있는지, 테이블을 만드는 방법과 테이블에 데이터를 입력하는 방법(INSERT), 테이블에서 데이터를 가져오는 방법(SELECT), NOT NULL, DEFAULT와 같은 제약조건에 대해서 설명하고 있다.
 
2장  SELECT문 - 데이터 가져오기의 축복
SELECT문장에 대해서 상세히 설명하고 있다. 주목할 만한 내용은 구두점 문제이다. SQL문장을 작성해 본 사람은 구두점 문제가 얼마나 짜증나는 문제인지 잘 알 것이다. 

문자형을 처리할 때는 시작과 끝을 표시하기 위하여 작은 따옴표(')를 사용해야 하는데... 이게 간단한 문제가 아닐 때가 많다.  예를 들어 don't 라는 문자열을 저장하려면 어떻게 해야 하는가?  문자열안에 이미 작은 따옴표를 저장하려면 연속해서 작은 따옴표를 두번 써야 한다.  즉 don''t 이런 식으로 표기하고 시작과 끝에서 작은 따옴표를 붙여야 한다. 즉,  'don''t'  이어야 한다. 그런데...  대용량 데이터베이스에서 특정 테이블이 가지고 있는 컬럼의 수가 30개이고 char나 varchar2 데이터 타입이 많은 경우라면...   이거 작은 따옴표의 시작과 끝을 맞추는 것이 장난 아니다..  따라서 책에 있는 것 처럼  'a', 'b', 'c', ... , 'z'  이런 식으로 하지 않고 적절한 띄어쓰기 및 행 나누기를 해야 버그를 찾기 쉽다.  즉,
  'a',
 'b',
'c',
....
'z'
이렇게 한 행에 하나의 컬럼값을 표현하는 것이 바람직하다.  MS SQL Server 에 관한 전문가이신 정원혁교수님은  ,를 앞에 두는 방식을 적극 권장하고 있다.
 'a'
, 'b'
,'c'
....
,'z'


그밖에 2장에서는 조건절에 대해서 자세히 설명하고 있다.  비교연산자, AND, OR 연산자 등...

한 가지 주의 해야할 부분은 NULL과의 비교이다. NULL과 비교하기 위해서는 = 이 아니라 IS를 사용하게 되어 있다. 즉 col1 IS NULL 이런 식으로 표시해야 한다.  요즘에는 안 그렇지만 10년전에 특정 상용DBMS가 특정한 SQL문장을 수행하면 DBMS가 다운되는 현상이 있었다.  그 이유를 추적하느라 해당 DBMS 엔지니어가 며칠 고생했는데... 원인은 바로  col1 =  NULL 이런 형식이 수행된 경우였다.  NULL을 처리하기 위하여 NVL(), DECODE(), ISNULL() 함수들이 자주 사용된다.


3장 DELETE와 UPDATE  -바꾸면 나아질 거예요
이 장에서는 테이블에 있는 레코드를 삭제 및 수정하는 방법에 대해서 설명하고 있다.

참고로 DELETE를 문을 잘못써서 아니면 실수로 DELETE 문의 조건절을 포함시키지 않고 수행시켰을 때... (생각하기도 싫은 끔직한 일이지만 실제로 자주 일어난다. ) ORACLE을 사용할 때는 침착히 ROLLBACK 을 수행시키면 된다. 간단하다!!! 하지만.. SQL Server인 경우라면..  ROLLBACK을 해도 데이터가 되살아 나지 않는다. 

이것은 ORACLE은 사용자가 SQL문장을 수행한 후 명시적으로 COMMIT을 수행해야 DB에 반영하는데 비해, SQL Server는 하나의 SQL문장을 수행하면 자동으로 COMMIT이 수행된 것으로 처리하기 때문이다. 이것 때문에 여러 번 고생했다.  결국은 백업받은 데이터를 다시 리스토어(Restore)할 수 밖에 없었다.  이 차이는 분명히 기억하고 있어야 하며, DBA나 데이터 소유자/관리자는 주기적으로 백업을 받는데 신경써야 할 것이다.

4장 좋은 테이블 설계 - 정규화는 왜 하죠?
이 장에서는 테이블 설계 시 정규화(Normalization)를 해야 하는 이유에 대해서 설명하고 있다. 데이터베이스론을 들은 사람이라면 정규화를 하는 이유가 이상(Anomaly)현상이 발생하지 않도록 하기 위해서 라는 것을 잘 알고 있을 것이다. 1차 -> 2차 -> 3차 ->BC-> 4차 -> 5차 정규화를 진행할 수록 테이블이 분할되면서 데이터의 중복이 사라지게 된다. 그런데...  실제로 5차 정규화까지 다 수행할까?

이론적으로는 5차 정규화까지 수행할 수 있으나... 실무에서는 5차까지 안 간다.  3차까지 가면 많이 한 거다. 1차 정규화는 기본적으로 수행한다. cell 내에 여러 값을 가지 않는다던지, 기본키(PK; Primary Key)를 가지게 한다던지 이런 것은 기본적으로 한다.

2차 정규화도 대부분 수행한다. PK내부에서 컬럼들 사이에 함수적 종속성이 존재해도 특별한 경우에는 그냥 두는 경우도 있다.  자주 사용되는 SQL문장의 처리속도를 높이기 위하여 PK 인덱스만 사용하여 처리하고자 하는 경우가 이런 경우라고 하겠다. 하지만 특별한 경우가 아니라면, 숙련된 데이터 모델러는 2차 정규형(NF; Normal Form)까지 만든다. 

3차는  PK가 아닌 컬럼들 사이에 함수적 종속성이 존재하면, 이들 컬럼들 사이에 중복이 생기기 때문에 많은 경우 테이블을 분리한다. 하지만 하나의 테이블이 30-40개 컬럼으로 이루어져 있고, 해당 테이블에 행이 천만건이 넘어가는 경우에는, JOIN의 속도 등을 고려해서 3차 정규형을 만들지 않는 경우가 의외로 많다.
예를 들면 원장테이블에 코드와  코드명이 컬럼이 같이 들어 있는 경우가 되겠다.  데이터 모델링 이론에 박식하나 대용량처리를 많이 해본 경험이 없는 경우에는 이런 모델에 대해서 신랄하게 공격한다.  하지만...  사용되는 SQL문을 보면.. 이렇게 가지 않으면 3초내에 응답을 만들기가 쉽지 않다.

대부분 3차까지 한다.  BC(Boyce-Codd),  4차, 5차 정규화는 잘 안한다. 이유는 이상(Anomaly)현상의 발생으로 (이로 인한 데이터의 중복 등으로 인한 무결성이 깨지는 현상)인한 손해와 더이상 정규화를 진행시키지 않아서 (테이블을 분할하지 않아서 JOIN을 통하지 않고 원하는 값을 같은 테이블에서 바로 처리할 수 있는) 성능의 이득 사이에 절충(Trade-off)을 해 본 결과, 경험상 3차 정규형이 최적이라고 보기 때문인 것 같다.


5장 이후는 별도로 올리겠다.



t********s 2012.02.22. 신고 공감 2 댓글 0
리뷰 총점 종이책
독특한 구성방식. 즐겁게 공부할 수 있는 책.
"독특한 구성방식. 즐겁게 공부할 수 있는 책." 내용보기
1. 혼자하는 공부는 재미가 없다. 2. 기존의 암기위주의 딱딱한 구성의 책에 질렸다. 3. 번역본이지만 이해할수없게 번역된 컴퓨터 서적에 질렸다. 4. 즐겁게 배우고 싶다.   이 책은 정말 구성이 잘 되어있는 것 같다. 요새 TV에서 공부에 빠진 어린딸을 '놀게'만드는 어머니가 등장하는 CF를 하던데, 이 책에대해 한마디로 이야기하자면, 자꾸만 공부하게끔 만드는 매력이 있달
"독특한 구성방식. 즐겁게 공부할 수 있는 책." 내용보기

1. 혼자하는 공부는 재미가 없다.

2. 기존의 암기위주의 딱딱한 구성의 책에 질렸다.

3. 번역본이지만 이해할수없게 번역된 컴퓨터 서적에 질렸다.

4. 즐겁게 배우고 싶다.

 

이 책은 정말 구성이 잘 되어있는 것 같다.

요새 TV에서 공부에 빠진 어린딸을 '놀게'만드는 어머니가 등장하는 CF를 하던데,

이 책에대해 한마디로 이야기하자면, 자꾸만 공부하게끔 만드는 매력이 있달까?

 

음,,,뭐가 좋냐하면,,,,,,,

 

 

일단 편집이 독특하다.

중요한 핵심사항을 쭈욱~~~~~~~~나열해서 학습자를 지치게 만드는 그런책이 아니다.

잡지같다. 이론을 설명하기 위해 가상의 두 사람을 등장시켜 서로 대화하면서 설명하기도하고, 낱말퍼즐로 설명하기도 한다.

무엇보다 중요한 내용을 그림으로 자세히 그리고 여러번 반복해서 설명해주기때문에, '아 이게 중요한 내용이구나'라고 스스로 느끼고 또 금새 익힐 수 있게 만들어준다.

 

또,,,번역이 잘 되어있다.

대학에서 전산을 전공하면서 수많은 번역본 교재로 공부를 해봤지만

이게 번역된 내용이 한국말인지 외국어인지 이해할 수가 없어서 공부를 포기하고 치킨에 맥주를 먹으러 간적이 많았다. (아 치킨,,,)

이 책은 그림도 많지만 글씨도 많기때문에 번역이 참 중요할텐데, 번역과정에서 외계어를 만들지 않았다. 그래서 한번 쓰윽 읽어도 쉽게 이해할 수 있어서 좋다.

 

그리고 이 Head First 시리즈라는 이름하에,

SQL, AJAX, JSP, JAVA, JAVASCRIPT 등 여러가지 주제의 책이 있다.

앞에서 설명한 것과 동일한 편집으로 구성되어있다.

만약 학교에서 이 책으로 수업했다면 얼마나 좋았을까 싶다.

아무튼 ㅜㅜ 조금 일찍 이 책을 알았더라면,,,

f**********e 2009.03.12. 신고 공감 0 댓글 0
리뷰 총점 종이책
예제 가득한 영어교재 같은 느낌이랄까요?
"예제 가득한 영어교재 같은 느낌이랄까요?" 내용보기
일단 그림이나 사진이 가득해서 초보자가 보기에 거부감 없어보입니다.   솔직히 기본적인 쿼리문이나 프로시저를 사용하는데 무리는 없었으나   다시 쿼리문을 하나하나 되짚어가면서 공부하기 위해서 이 책을 샀습니다.   기존에 알고 있던 내용이라도 이렇게 사용하는 거다. 정도였는데..   책에 설명이 굉장히 자세하네요. 기초개념 배우는데는 이만한 책이 없어보입니다.
"예제 가득한 영어교재 같은 느낌이랄까요?" 내용보기

일단 그림이나 사진이 가득해서 초보자가 보기에 거부감 없어보입니다.

 

솔직히 기본적인 쿼리문이나 프로시저를 사용하는데 무리는 없었으나

 

다시 쿼리문을 하나하나 되짚어가면서 공부하기 위해서 이 책을 샀습니다.

 

기존에 알고 있던 내용이라도 이렇게 사용하는 거다. 정도였는데..

 

책에 설명이 굉장히 자세하네요. 기초개념 배우는데는 이만한 책이 없어보입니다.

 

정규화나 데이터베이스 설계 같이 왠지 어려워보이는 단락도 쉽게쉽게 풀어가네요.

 

일단 초급 프로그래머까지는 무난하게 배울 수 있는 책 같습니다.

 

중급, 고급으로 가려면 다른 책도 구입하셔야겠지만요.

 

SQL 공부의 첫걸음에 추천드릴만한 책 같네요.

 

 

 

l*******s 2008.07.30. 신고 공감 0 댓글 0
리뷰 총점 종이책
처음 시작하기엔 딱 좋은 수준
"처음 시작하기엔 딱 좋은 수준" 내용보기
전산전공자가 아닌 저로썬 실무에 접근하기 위한 좋은 지침서가 되는 책이더군요.  sql 책을 여럿 손을 댔지만 중도에 포기 많이 했습니다. 어려웠던것이죠., 하지만 이 책은 비전공 또는 초보자가 쉽게 다가갈수 있도록 해준 책이었습니다. sql 관련 책 중 끝까지 보게된 책은 이게 처음이네요.그림이 많아 그림책 수준처럼 보였는지 모르겠지만 근무하는 곳에서 슬쩍슬쩍 지나가면서 저
"처음 시작하기엔 딱 좋은 수준" 내용보기

전산전공자가 아닌 저로썬 실무에 접근하기 위한 좋은 지침서가 되는 책이더군요.  sql 책을 여럿 손을 댔지만 중도에 포기 많이 했습니다. 어려웠던것이죠., 하지만 이 책은 비전공 또는 초보자가 쉽게 다가갈수 있도록 해준 책이었습니다.

 sql 관련 책 중 끝까지 보게된 책은 이게 처음이네요.

그림이 많아 그림책 수준처럼 보였는지 모르겠지만 근무하는 곳에서 슬쩍슬쩍 지나가면서 저에게  뭐 이런 그림책을 보냐 라고

핀잔 비슷하게 동료들이 하더군요..

하지만 비전공자인 저에겐 정말 도움이 되는 책입니다.

연습문제??? 꼭 풀어 보세요  읽었던 내용이 정리가 되고 머리에 오래 남습니다.

이 책의 수준이 초보 또는 시작하는 사람수준에 머물러 있어서 업무에 적용하거나  좀 더 깊게 파고들기엔 무리가 있습니다.

그러나...

다음 수준으로 넘어갈 수 있게 하는 초석이 되기엔 부족함이 없다고 생각이 됩니다.

 sql을 공부할때 항상 트라우마로 다가왔던 조인에 대해서 개념이 정리가 되어 기쁨니다...

한번 읽고 다시 한번 읽어 보려 합니다.!


d*******c 2013.01.28. 신고 공감 0 댓글 0
리뷰 총점 종이책
Head First SQL : 효율적인 DB 관리를 위한 SQL 학습법
"Head First SQL : 효율적인 DB 관리를 위한 SQL 학습법 " 내용보기
SQL을 처음 공부하고 싶은 분들에게는 추천하고 싶은 책이다.설명이 너무 자세한 것이 흠이기도 하지만 어떤 분야던 처음 배울 때 개념을 확실하게 잡아 두면 두고두고 도움이 되지 않는가?   이 책은 특정 제품(MySQL  MS-SQL, ORACLE ..)에 대한 설명이 아니라 모든 DB에 적용되는 SQL 문법에 대해서 어떤 경우에 사용하고, 이런식으로 응용이 가능하다는 식으로 기술을 하였다. 책
"Head First SQL : 효율적인 DB 관리를 위한 SQL 학습법 " 내용보기

SQL을 처음 공부하고 싶은 분들에게는 추천하고 싶은 책이다.
설명이 너무 자세한 것이 흠이기도 하지만 어떤 분야던 처음 배울 때 개념을 확실하게 잡아 두면 두고두고 도움이 되지 않는가?

 

이 책은 특정 제품(MySQL  MS-SQL, ORACLE ..)에 대한 설명이 아니라 모든 DB에 적용되는 SQL 문법에 대해서 어떤 경우에 사용하고, 이런식으로 응용이 가능하다는 식으로 기술을 하였다.

책을 펼치자 마다 화면에서 입력하고 결과가 나오기를 바라는 독자라면 이 책이 답답하겠지만, 그럼에도 미리 읽어보면 큰 도움이 될 수 있을것 같다.
이 책은 컴퓨터를 켜고 공부하는 것 보다 오히려 학교공부 하듯이 공책을 펴 두고 읽는 것이 더 어울릴것 같다.
마치 단어 외우듯이 설명을 읽어 보고 공책에 한번 써보는 방식으로 공부를 하다 보면 DB에 대한 개념이 더 정확하게 들어 오지 않을까?

 

단점이라면 너무 정직하게 번역을 해서 (번역은 참 잘 한 편이다..) 예제의 내용들이 우리나라의 현실과는 안맞는 부분들이 좀 많은 듯하다.
편역을 해서 예제에 나오는 따라하기 단어나 사람이름, 장소..등을 우리에게 낮익은 쉬운 단어나 한글로 바꾸어 주었으면 더 좋았을텐데... 하는 아쉬움이 남는다.

그럼에도 최근에 나온 책들 중에서 SQL 과 DB의 개념에 대해서 이만한 책이 있을까?  하는 생각이 든다.

다른 책들을 다 보지 못해서 모르지만...(개념잡는 책을 몇권이나 볼 수야 없으니..), 참 잘 샀다는 생각이 든다.

d*******3 2008.06.16. 신고 공감 0 댓글 0
리뷰 총점 종이책
책 좋아요
"책 좋아요" 내용보기
책이 기본적으로 쉽게 되어있습니다.   완전 초보분이 보시면 좋구요   이책 말고 다른책도 꼭 보셔야 됩니다.   이책은 쉽게 소설처럼 읽으시고 레퍼런스 책을 따로   보셔야 합니다.   정말 헤드퍼스트 시리즈는 다 좋은데   이상하게 저는 자바 헤드퍼스트는 그닥....   차라리 소설같은 자바 추천
"책 좋아요" 내용보기

책이 기본적으로 쉽게 되어있습니다.

 

완전 초보분이 보시면 좋구요

 

이책 말고 다른책도 꼭 보셔야 됩니다.

 

이책은 쉽게 소설처럼 읽으시고 레퍼런스 책을 따로

 

보셔야 합니다.

 

정말 헤드퍼스트 시리즈는 다 좋은데

 

이상하게 저는 자바 헤드퍼스트는 그닥....

 

차라리 소설같은 자바 추천