책 소개
한국어판 지은이의 글 제가 SQL에 대한 책을 쓴 이유는 뭘까요? 소프트웨어 개발과 관련된 제 경험에 비추어봤을 때, SQL은 많은 프로그래머들에게 널리 사용되고 있습니다. 그러나 프로그래머들이 SQL을 잘못 사용하는 경우도 매우 흔합니다. SQL의 본래 목적과 관계없는 엉뚱한 작업을 해결하려 하면서 말이죠. SQL은 다른 컴퓨터 프로그래밍 언어에 비해 오래된 기술입니다. 요즘은 데이터 관리를 위해 새로운 기술이 많이 등장하고 있습니다. 어떻게 새롭고 혁신적인 소프트웨어를 SQL과 같은 오래된 기술을 사용해 만들 수 있을까요? 한국은 훌륭한 기술 혁신을 이룩했습니다. 최상의 인터넷 환경을 갖추고 있으며, 우주항공, 생명공학, 로봇공학에도 투자를 많이 하고 있습니다. 한국이 교육, 과학, 기술 분야에서 일궈낸 성취는 전세계적으로 잘 알려져 있습니다. 인기 있는 게임이나 인터넷 사이트는 모두 SQL 데이터베이스에 의존하는 부분이 있습니다. 인기 있는 소셜 네트워크 사이트인 싸이월드는 MS SQL Server를 사용합니다. 세컨드 라이프와 같은 대용량 온라인 게임에서는 MySQL을 사용하고 있습니다. SQL은 새로운 기술은 아니지만 많은 혁신적인 기업에서 SQL에 의존하고 있습니다. 뭔가 새롭고 혁신적인 일을 하고 싶다면, 각 소프트웨어 개발 도구의 장점을 잘 활용해야 합니다. SQL을 사용할 때도 SQL의 적절한 역할을 제대로 이해하고 사용해야 합니다. 관계형 데이터베이스는 수학적 이론이 어떻게 실무적으로 도움이 되는지를 보여줍니다. 저는 이런 비유를 사용합니다. 목수는 나사를 돌리는 데 망치를 사용하지 않고, 못을 박는 데 드라이버를 사용하지 않습니다. 두 도구 모두 필요합니다. 하나가 있다고 해서 다른 하나가 쓸모없어지지는 않습니다. 저는 다른 소프트웨어 개발자가 망치를 적절히 사용하는 최적의 기법과 최적의 시점을 이해하도록 돕기 위해 이 책을 썼습니다. 제 책을 읽어주셔서 감사합니다. 또한 이 책을 검토하고 좋은 의견을 주었을 뿐 아니라 한국어로 번역해준 윤성준씨에게도 감사의 마음을 전합니다. 빌 카윈(Bill Karwin)
목차펼치기접기
옮긴이의 글 한국어판 지은이의 글 1장 개요 1.1 대상 독자 1.2 이 책에 있는 내용 1.3 이 책에 없는 내용 1.4 일러두기 1.5 예제 데이터베이스 1.6 감사의 글 2장 무단횡단 2.1 목표: 다중 값 속성 저장 2.2 안티패턴: 쉼표로 구분된 목록에 저장 2.3 안티패턴 인식 방법 2.4 안티패턴 사용이 합당한 경우 2.5 해법: 교차 테이블 생성 3장 순진한 트리 3.1 목표: 계층구조 저장 및 조회하기 3.2 안티패턴: 항상 부모에 의존하기 3.3 안티패턴 인식 방법 3.4 안티패턴 사용이 합당한 경우 3.5 해법: 대안 트리 모델 사용 4장 아이디가 필요해 4.1 목표: PK 관례 확립 4.2 안티패턴: 만능키 4.3 안티패턴 인식 방법 4.4 안티패턴 사용이 합당한 경우 4.5 해법: 상황에 맞추기 5장 키가 없는 엔트리 5.1 목표: 데이터베이스 아키텍처 단순화 5.2 안티패턴: 제약조건 무시 5.3 안티패턴 인식 방법 5.4 안티패턴 사용이 합당한 경우 5.5 해법: 제약조건 선언하기 6장 엔터티-속성-값 6.1 목표: 가변 속성 지원 6.2 안티패턴: 범용 속성 테이블 사용 6.3 안티패턴 인식 방법 6.4 안티패턴 사용이 합당한 경우 6.5 해법: 서브타입 모델링 7장 다형성 연관 7.1 목표: 여러 부모 참조 7.2 안티패턴: 이중 목적의 FK 사용 7.3 안티패턴 인식 방법 7.4 안티패턴 사용이 합당한 경우 7.5 해법: 관계 단순화 8장 다중 칼럼 속성 8.1 목표: 다중 값 속성 저장 8.2 안티패턴: 여러 개의 칼럼 생성 8.3 안티패턴 인식 방법 8.4 안티패턴 사용이 합당한 경우 8.5 해법: 종속 테이블 생성 9장 메타데이터 트리블 9.1 목표: 확장 적응성 지원 9.2 안티패턴: 테이블 또는 칼럼 복제 9.3 안티패턴 인식 방법 9.4 안티패턴 사용이 합당한 경우 9.5 해법: 파티션과 정규화 10장 반올림 오류 10.1 목표: 정수 대신 소수 사용 10.2 안티패턴: FLOAT 데이터 타입 사용 10.3 안티패턴 인식 방법 10.4 안티패턴 사용이 합당한 경우 10.5 해법: NUMERIC 데이터 타입 사용 11장 31가지 맛 11.1 목표: 칼럼을 특정 값으로 제한하기 11.2 안티패턴: 칼럼 정의에 값 지정. 11.3 안티패턴 인식 방법 11.4 안티패턴 사용이 합당한 경우 11.5 해법: 데이터로 값을 지정하기 12장 유령 파일 12.1 목표: 이미지 또는 벌크 미디어 저장 12.2 안티패턴: 파일을 사용해야 한다고 가정한다 12.3 안티패턴 인식 방법 12.4 안티패턴 사용이 합당한 경우 12.5 해법: 필요한 경우에는 BLOB 데이터 타입을 사용하라 13장 인덱스 샷건 13.1 목표: 성능 최적화 13.2 안티패턴: 무계획하게 인덱스 사용하기 13.3 안티패턴을 인식하는 방법 13.4 안티패턴 사용이 합당한 경우 13.5 해법: 인덱스를 MENTOR하라 14장 모르는 것에 대한 두려움 14.1 목표: 누락된 값을 구분하기 14.2 안티패턴: NULL을 일반 값처럼 사용 14.3 안티패턴 인식 방법 14.4 안티패턴 사용이 합당한 경우 14.5 해법: 유일한 값으로 NULL을 사용하라 15장 애매한 그룹 15.1 목표: 그룹당 최댓값을 가진 행 얻기 15.2 안티패턴: 그룹되지 않은 칼럼 참조 15.3 안티패턴 인식 방법 15.4 안티패턴 사용이 합당한 경우 15.5 해법: 칼럼을 모호하게 사용하지 않기 16장 임의의 선택 16.1 목표: 샘플 행 가져오기 16.2 안티패턴: 데이터를 임의로 정렬하기 16.3 안티패턴 인식 방법 16.4 안티패턴 사용이 합당한 경우 16.5 해법: In No Particular Order 17장 가난한 자의 검색 엔진 17.1 목표: 전체 텍스트 검색 17.2 안티패턴: 패턴 매칭 사용 17.3 안티패턴 인식 방법 17.4 안티패턴 사용이 합당한 경우 17.5 해법: 작업에 맞는 올바른 도구 사용하기 18장 스파게티 쿼리 18.1 목표: SQL 쿼리 줄이기 18.2 안티패턴: 복잡한 문제를 한 번에 풀기 18.3 안티패턴 인식 방법 18.4 안티패턴 사용이 합당한 경우 18.5 해법: 분할해서 정복하기 19장 암묵적 칼럼 19.1 목표: 타이핑 줄이기 19.2 안티패턴: 지름길만 좋아하면 길을 잃는다 19.3 안티패턴 인식 방법 19.4 안티패턴 사용이 합당한 경우 19.5 해법: 명시적으로 칼럼 이름 지정하기 20장 읽을 수 있는 패스워드 20.1 목표: 패스워드를 복구하거나 재설정하기 20.2 안티패턴: 패스워드를 평문으로 저장하기 20.3 안티패턴 인식 방법 20.4 안티패턴 사용이 합당한 경우 20.5 해법: 패스워드의 소금 친 해시 21장 SQL 인젝션 21.1 목표: 동적 SQL 쿼리 작성하기 21.2 안티패턴: 검증되지 않은 입력을 코드로 실행하기 21.3 안티패턴 인식 방법 21.4 안티패턴 사용이 합당한 경우 21.5 해법: 아무도 믿지 마라 22장 가상키 편집증 22.1 목표: 데이터 정돈하기 22.2 안티패턴: 모든 틈 메우기 22.3 안티패턴 인식 방법 22.4 안티패턴 사용이 합당한 경우 22.5 해법: 극복하라 23장 나쁜 것 안 보기 23.1 목표: 코드를 적게 작성하기 23.2 안티패턴: 짚 없이 벽돌 만들기 23.3 안티패턴 인식 방법 23.4 안티패턴 사용이 합당한 경우 23.5 해법: 에러에서 우아하게 복구하기 24장 외교적 면책특권 24.1 목표: 관례 따르기 24.2 안티패턴: SQL을 2등 시민으로 만들기 24.3 안티패턴 인식 방법 24.4 안티패턴 사용이 합당한 경우 24.5 해법: 초당적 품질 문화 확립 25장 마법의 콩 25.1 목표: MVC에서 모델 단순화하기 25.2 안티패턴: 액티브 레코드인 모델 25.3 안티패턴을 인식하는 방법 25.4 안티패턴 사용이 합당한 경우 25.5 해법: 액티브 레코드를 가지는 모델 부록 A 정규화 규칙 A.1 관계형의 뜻 A.2 정규화에 대한 미신 A.3 정규화란? A.4 상식 부록 B 참고문헌
출처: 국립중앙도서관 서지정보
리뷰 남기기
로그인하면 리뷰를 남길 수 있어요.
리뷰 0개
아직 리뷰가 없어요.
