[실용 운동] 기초 지식과 원리 시리즈 02- 데이터베이스 설계 및 데이터베이스 개발의 패러다임

장고 웹 개발, 동적 웹 페이지 개발하기 위해 기본적으로 완료 정적 페이지를 개발했다 (사용자와 사이트가 입력 및 출력 상호 작용을 할 수 있습니다), 당신은 레이어 (정적 페이지) 표시해야합니다 -> 논리적 계층 (기능) -> 데이터 계층 (데이터베이스) 상호 작용합니다.


그리고 데이터베이스, 데이터베이스 테이블, 필드, 관계가 명확하고 간단 경우 어떻게, 장고는 데이터베이스가 매우 간단 만듭니다.

시스템 요구 사항, 분석 및 설계를 전체 데이터베이스 테이블의 데이터베이스를 수집하는 경우, 필드, 관계, 그것은 매우 어렵습니다. (호출 데이터베이스 설계 / 개발)


데이터베이스 설계 / 개발 단계의 단계에서, 우리는 데이터베이스를 설계하는 세 가지 패러다임을 따라야합니다.


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
없는


따라서, 데이터베이스의 설계 / 개발이 완료됩니다. 위반이있는 경우 어떤 관계의 패러다임에 따라 세 가지 검사는, 우리는 다시 분할 위반 패러다임을 필드해야하고, 다음보기의 관계 포인트는 테이블 중앙을 증가시킬 필요가 있는지 여부에 따라 달라집니다. (이들은 여전히 ​​이러한 데이터베이스 테이블로 돌아가 데이터베이스 장고 웹 개발의 뒤로 그냥 아주 간단한 경우,이 많은 어려움보다 실제 생산 시스템 데이터베이스의 설계 / 개발, 있습니다)

추천

출처blog.51cto.com/14423403/2418782