답변:
Jan L. Harrington 이 쓴이 책 : 데이터 관리 시스템의 Morgan Kaufmann Series (페이퍼 백) :이 책에서 시작하여 매우 명확하고 도움이되었습니다.
이 일을 속도를 일어로하고 있었다 좋은 너무 데이터베이스 시스템 설계, 구현 및 관리 (국제 컴퓨터 과학 시리즈)에 대한 실용적인 접근 (페이퍼 백)
SQL과 데이터베이스 디자인은 다르지만 보완적인 기술 이라고 생각 합니다.
이 기사부터 시작했습니다
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
전체 책을 읽는 것에 비해 매우 간결하며 데이터베이스 디자인의 기본 (정규화, 관계 유형)에 대해 잘 설명합니다.
경험은 많지만 테이블 디자인 측면에서 Hibernate 및 Grails와 같은 ORM이 작동하는 이유를 파악하는 방법을 통해 많은 것을 배울 수 있습니다. 게다가:
다른 유형의 데이터를 별도로 유지하십시오. 예를 들어 주문 테이블에 주소를 저장하지 않고 별도의 주소 테이블에있는 주소에 링크하십시오.
개인적으로 기본 키인 각 테이블에 서로 다른 테이블을 서로 연결하는 테이블이 아닌 데이터를 보유하는 정수 또는 긴 대리 키를 선호합니다.
또한 타임 스탬프 열을 만들고 수정 한 것을 좋아합니다.
쿼리에서 "where column = val"을 수행하는 모든 열에 인덱스가 있는지 확인하십시오. 아마도 세계에서 데이터 유형에 가장 완벽한 인덱스는 아니지만 최소한 인덱스 일 것입니다.
외래 키를 설정하십시오. 또한 객체 구조에 따라 계단식 또는 null로 관련있는 ON DELETE 및 ON MODIFY 규칙을 설정하십시오 (따라서 객체 트리의 '헤드'에서 한 번만 삭제하면 모든 객체의 하위 객체가 가져옵니다. 자동으로 제거됨).
코드를 모듈화하려면 DB 스키마를 모듈화해야합니다. 예를 들어 "고객"영역, "주문"영역, "제품"영역이며 조인 / 링크 테이블을 사용합니다. 1 : n 관계인 경우에도 중요한 정보를 복제 할 수 있습니다 (예 : 제품 이름, 코드, 가격을 order_details 테이블에 복제). 정규화에 대해 읽어보십시오.
누군가는 위의 일부 또는 전부에 대해 정확히 반대를 추천 할 것입니다 : p-어떤 일을하는 진정한 방법은 없습니다!
explain analyze
있으며 인덱스가 유익한 지 테스트해야합니다 .
Head First SQL 은 훌륭한 소개입니다.
이것은 내 의견으로는 다른 영역의 다른 지식이 필요한 질문입니다.
즉, 아마 당신은 일부 책을 읽고 싶을 것입니다. 개인적 으로이 책 을 datbase 대학 과정에서 사용 했습니다 (그리고 괜찮은 책 을 찾았지만이 분야의 다른 책을 읽지 않았으므로 제 충고는 확인해야합니다 데이터베이스 디자인에 관한 좋은 책들).
읽은 지 오래되었습니다 (따라서 여전히 관련성이 있는지는 확실하지 않습니다). 그러나 나의 기억은 Joe Celko의 SQL for Smarties 책이 우아하고 효과적이며 효율적인 쿼리 작성에 대한 많은 정보를 제공한다는 것입니다. .