SQL 데이터베이스 디자인 초보자 가이드 [닫기]


127

SQL 솔루션을 디자인하는 방법을 배울 수있는 좋은 소스를 알고 있습니까?

기본 언어 구문 외에도 이해하는 데 도움이되는 것을 찾고 있습니다.

  1. 구축 할 테이블과 연결 방법
  2. 다양한 규모로 디자인하는 방법 (대규모 분산 웹 사이트에 대한 소규모 클라이언트 APP)
  3. 효과적이고 효율적이며 우아한 SQL 쿼리 작성 방법

답변:


60

Jan L. Harrington 이 쓴이 책 : 데이터 관리 시스템의 Morgan Kaufmann Series (페이퍼 백) :이 책에서 시작하여 매우 명확하고 도움이되었습니다.

이 일을 속도를 일어로하고 있었다 좋은 너무 데이터베이스 시스템 설계, 구현 및 관리 (국제 컴퓨터 과학 시리즈)에 대한 실용적인 접근 (페이퍼 백)

SQL과 데이터베이스 디자인은 다르지만 보완적인 기술 이라고 생각 합니다.


1
데이터베이스 설계 시작 : 초보자부터 전문가까지-Clare Churcher?
enthusiasticgeek

40

이 기사부터 시작했습니다

http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html

전체 책을 읽는 것에 비해 매우 간결하며 데이터베이스 디자인의 기본 (정규화, 관계 유형)에 대해 잘 설명합니다.


이 안내서를 사랑하십시오, 감사합니다.
MsO

이 답변의 링크가 더 이상 작동하지 않습니다.
그리즐리 피크 소프트웨어

1
링크가 다시 작동하는 것 같습니다.
user8576017

1
링크가 더 이상 작동하지 않습니다
jat255


28

경험은 많지만 테이블 디자인 측면에서 Hibernate 및 Grails와 같은 ORM이 작동하는 이유를 파악하는 방법을 통해 많은 것을 배울 수 있습니다. 게다가:

  1. 다른 유형의 데이터를 별도로 유지하십시오. 예를 들어 주문 테이블에 주소를 저장하지 않고 별도의 주소 테이블에있는 주소에 링크하십시오.

  2. 개인적으로 기본 키인 각 테이블에 서로 다른 테이블을 서로 연결하는 테이블이 아닌 데이터를 보유하는 정수 또는 긴 대리 키를 선호합니다.

  3. 또한 타임 스탬프 열을 만들고 수정 한 것을 좋아합니다.

  4. 쿼리에서 "where column = val"을 수행하는 모든 열에 인덱스가 있는지 확인하십시오. 아마도 세계에서 데이터 유형에 가장 완벽한 인덱스는 아니지만 최소한 인덱스 일 것입니다.

  5. 외래 키를 설정하십시오. 또한 객체 구조에 따라 계단식 또는 null로 관련있는 ON DELETE 및 ON MODIFY 규칙을 설정하십시오 (따라서 객체 트리의 '헤드'에서 한 번만 삭제하면 모든 객체의 하위 객체가 가져옵니다. 자동으로 제거됨).

  6. 코드를 모듈화하려면 DB 스키마를 모듈화해야합니다. 예를 들어 "고객"영역, "주문"영역, "제품"영역이며 조인 / 링크 테이블을 사용합니다. 1 : n 관계인 경우에도 중요한 정보를 복제 할 수 있습니다 (예 : 제품 이름, 코드, 가격을 order_details 테이블에 복제). 정규화에 대해 읽어보십시오.

  7. 누군가는 위의 일부 또는 전부에 대해 정확히 반대를 추천 할 것입니다 : p-어떤 일을하는 진정한 방법은 없습니다!


1
ORM, 모든 포인트는 안티 데이터베이스 입니다.
PerformanceDBA

1
색인을 추가한다고해서 항상 더 빠른 속도를 의미하는 것은 아닙니다. 때로는 실제로 쿼리 속도가 느려집니다. 그것은 실제로 쿼리에 달려 explain analyze있으며 인덱스가 유익한 지 테스트해야합니다 .
ArashM



2

이것은 내 의견으로는 다른 영역의 다른 지식이 필요한 질문입니다.

  1. "어떤"테이블을 빌드 할 것인지 미리 알 수 없으므로 스키마를 적절하게 해결하고 디자인해야하는 문제를 알아야합니다.
  2. 이것은 데이터베이스 디자인 결정과 데이터베이스 벤더 사용자 정의 기능의 혼합입니다 (예 : (r) dbms 문서를 확인하고 결국 스케일링을위한 "팁 및 트릭"을 배워야 함). 또한 dbms 구성은 매우 중요합니다. 스케일링 (복제, 데이터 파티셔닝 등);
  3. 다시 말하지만, 거의 모든 rdbms에는 SQL 언어의 특정 "방언"이 함께 제공되므로 효율적인 쿼리를 원할 경우 특정 언어 (btw)를 배워야합니다. 우아하고 효율적인 효율성은 종종 상충되는 목표입니다.

즉, 아마 당신은 일부 책을 읽고 싶을 것입니다. 개인적 으로이 책 을 datbase 대학 과정에서 사용 했습니다 (그리고 괜찮은 을 찾았지만이 분야의 다른 책을 읽지 않았으므로 제 충고는 확인해야합니다 데이터베이스 디자인에 관한 좋은 책들).


2

읽은 지 오래되었습니다 (따라서 여전히 관련성이 있는지는 확실하지 않습니다). 그러나 나의 기억은 Joe Celko의 SQL for Smarties 책이 우아하고 효과적이며 효율적인 쿼리 작성에 대한 많은 정보를 제공한다는 것입니다. .


2010 년 4 판은 최신 버전 일 수 있습니다.
17:52

1
Celko 책은 오류에 대한 연구이며 데이터베이스에서 구현해야 할 코드로 구현한다는 개념을 추가로 설명합니다.
PerformanceDBA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.