장고 웹 개발, 동적 웹 페이지 개발하기 위해 기본적으로 완료 정적 페이지를 개발했다 (사용자와 사이트가 입력 및 출력 상호 작용을 할 수 있습니다), 당신은 레이어 (정적 페이지) 표시해야합니다 -> 논리적 계층 (기능) -> 데이터 계층 (데이터베이스) 상호 작용합니다.
그리고 데이터베이스, 데이터베이스 테이블, 필드, 관계가 명확하고 간단 경우 어떻게, 장고는 데이터베이스가 매우 간단 만듭니다.
시스템 요구 사항, 분석 및 설계를 전체 데이터베이스 테이블의 데이터베이스를 수집하는 경우, 필드, 관계, 그것은 매우 어렵습니다. (호출 데이터베이스 설계 / 개발)
데이터베이스 설계 / 개발 단계의 단계에서, 우리는 데이터베이스를 설계하는 세 가지 패러다임을 따라야합니다.
1, 데이터베이스 설계 세 가지 패러다임 :
우선 패러다임 데이터가 분리 될 수 없다.
#은 하나의 숫자, 예를 들어, 필드는 사용자 이름과 휴대 전화 번호를 저장할 수 없습니다 당신은 유지하려는 경우, 당신은 두 개의 필드가 존재 열이있는 필드로 이해 될 수있다.
두 번째 패러다임은 , 각 테이블에는 고유 한 기본 키를 가질 필요가있다.
관계형 데이터베이스가 같은 조 스미스 이상을 가질 수있는 같은 이름의 이름으로 찾기 위해 기본 키가 필요하기 때문에 #이 기본 키로 사용할 수 없습니다 사용 ××× 수입니다.
세 번째 패러다임 이 아닌 기본 키에 대한 데이터 테이블이 없을 수 있습니다, 의존한다.
테이블 내부에 예를 들어 ××× 번호, 이름, 전화 번호, 거주 지역, 이렇게 네 개의 필드 거주시, 제 ×××, 우리는 이름과 전화 번호, 소위 "이름"을 결정할 수있을 것이다 결정 # "전화 번호 "만 의존. 은 "거주 지역", "도시 생활은"이 두 분야 "××× 수는"반드시 실제로 의존성이다. 그것은 아무 문제가 없었을 것이지만, 분명히 "살아있는 도시"는 "거주 성"이다 재능 선택의 전제 확실히 광저우시, 광동성, 예를 들어, 의존이 있습니다. 은 "거주 지역은"그래서 기본 키가 아닌 데이터 종속성이라는 기본 키가 아닙니다. 따라서, 3 정규형을 위반는 솔루션의 또 다른 조각에 "거주 지역", "도시 생활"별도의 분할이 될 것입니다 "살아있는면."
2 데이터 관계 :
내가 전에 언급 한 바와 같이, 관계형 데이터베이스는 두 개의 차원 테이블 관계의 더미는 관계가 대개 세 사례를 가지고있다.
하나 : 테이블의 직접 사용, 다른 필드는 기본 키에 의존;
# 이러한 학교로, 학생의 이름이 해당됩니다
많은, 많은-하기 : 내부 멀티에 외부 키를 참조
# 예를 들어, 교사는 교훈을 가르 칠 수 있지만, 교훈을 가르치는 더 많은 교사가 될 수 있다고 가정합니다. 그런 관계는 많은 - 투 - 교사와 교육 과정, 교육 과정 및 교사 관계가 많은 하나입니다.
추가해야 데이터베이스 설계에서 어디 멀티 사람 테이블의 외래 키 내부 (테이블 교사), 기본 키 내부 사람 (교육 과정) 테이블을 인용 (코스 ID)
# 추가 가정 예를 들어, 교사가 많은 과목을 가르 칠 수있는, 할 수 있고, 과정은 수업 시간에 교사가 될 수 후 교사와 교육 과정 사이의 관계는 많은, 많은 - 투 - 교육 과정이되고 교사의 관계가 변경되었습니다.
데이터베이스 설계, 그것은 (교과 과정) 사람 (교사 m) 기본 키에 외래 키 참조를 추가 (교사 ID, 직원의 작업 번호 등이있을 수 있습니다) 여러 사람이 테이블된다
많은에 많은 : 이 상황은 두 테이블 사이에 직접적인 관계를 설정할 수 없습니다, 우리는 연결로, 허공 중간 테이블을 설정해야합니다.
# 예를 들어 학생이 더 선택 과목 이상, 과정은 측면에서 외부 키의 도입으로 해결할 수없는 많은 관계에 많은에 비해 취할 더 많은 학생들을 줄 수 있습니다.
당신은 기본 키 (예 : 일련 번호 / ID 등), 기본 키 및 외래 키 참조 학생들의 기본 키 테이블을 생성, 예를 들어, "등록 양식"이라고, 교과 과정을 중간 테이블을 작성해야합니다. 학생 및 동료 프로그램.
3, 데이터베이스 테이블 디자인
우리는 장고 웹 사이트 시스템 개발 요구 사항을보고 : 실제 운동] 파이썬 + 장고 웹 개발 시리즈 02-장고 완전한 개발 환경 배포 https://blog.51cto.com/14423403/2418370을
우리는 먼저 요구와 관계를 분석, 객체의 학생, 교사, 교육 과정이 세 가지 범주가 있습니다.
우리는 시스템이 각 학생이 개 선택 과목까지 될 수 있어야한다고 가정, 두 과목을 가르 칠 수있는 각 교사는, 각 과정은 수업 시간에 교사가 될 수 있습니다. 그리고 이러한 요구에 따라 :
1) 학생과 과정 사이의 관계는 다음과 같습니다 많은 많은;
2) 교사와 교육 과정 사이의 관계는 다음과 같습니다 많은 한;
3) 학생과 교사 사이의 관계는 다음과 같습니다, 과정을 통해 연결되어 직접적인 관계가 없습니다;
따라서, 적어도 네 개의 테이블, 학생 테이블, 테이블 교사, 교과 과정, 성적 증명서 (학생 및 중간 테이블의 교육 과정), 반면 교사 테이블의 (a) 기본 키 외래 키를 참조하는 교육 과정 (등).
그리고 그들은 우리의 시스템 요구 사항을 충족해야하는 정보에 대해 생각 필드를 네 개의 테이블을 디자인합니다. (null가 아닌 표현은 null 일 수 없습니다)
학생 표 | |||
학생 ID | SNO | 기본 키 | null이 아닌 |
이름 | 벗겨 | 없는 | |
성 | Sseksh | 없는 | |
사용자 이름 | susername | 없는 | |
나이 | 세이지 | 없는 | |
어디학과 |
sdept | 없는 |
교사 테이블 | |||
교사의 수 | TNO | 기본 키 | null이 아닌 |
교사의 이름 | TNAME | 없는 | |
교사 아이디 | tusername | 없는 | |
제목 | ttitle | 없는 |
교육 과정 | |||
코스 번호 | 누구 |
기본 키 | null이 아닌 |
코스 명 | CNAME | 없는 | |
신용 | ccredit | 없는 | |
수업 시간 | ctime이 | 없는 | |
장소 | cplace | 없는 | |
제 교사 | TNO | 외래 키 | null이 아닌 |
결과 테이블 | |||
코스 번호 | 누구 | 외래 키 | null이 아닌 |
학생 ID | SNO | 외래 키 | null이 아닌 |
성취 | cscore | 없는 |
따라서, 데이터베이스의 설계 / 개발이 완료됩니다. 위반이있는 경우 어떤 관계의 패러다임에 따라 세 가지 검사는, 우리는 다시 분할 위반 패러다임을 필드해야하고, 다음보기의 관계 포인트는 테이블 중앙을 증가시킬 필요가 있는지 여부에 따라 달라집니다. (이들은 여전히 이러한 데이터베이스 테이블로 돌아가 데이터베이스 장고 웹 개발의 뒤로 그냥 아주 간단한 경우,이 많은 어려움보다 실제 생산 시스템 데이터베이스의 설계 / 개발, 있습니다)