단일 데이터베이스 테이블에 여러 옵션 저장
문제: 결과 계산을 위한 데이터베이스를 설계하려고 합니다. 학생들은 여러 코스를 연결할 수 있으며, 이를 위해서는 데이터베이스 내에 일련의 데이터를 저장할 수 있는 필드가 필요합니다. 주제.
해결책:
데이터 정규화 원칙:
특정 데이터베이스 설계 기술을 살펴보기 전에 다음을 이해하는 것이 중요합니다. 데이터 정규화 원칙. 학생, 강좌 등 다양한 엔터티에 대해 별도의 테이블을 생성하면 데이터 중복을 방지하고 참조 무결성을 유지할 수 있습니다.
데이터베이스 구조:
각 항목에 대해 여러 강좌를 저장하려면 학생의 경우 SCJunction이라는 접합 테이블이 사용됩니다. 이 테이블에는 학생 ID, 코스 ID 및 출석, 성적 등 기타 관련 정보가 연관되어 있습니다. 열(studentId,courseId,term)에 대한 복합 색인은 빠른 데이터 검색을 보장하고 중복된 데이터 입력을 방지합니다.
예시 데이터베이스 구조:
create table student ( studentId int auto_increment primary key, fullName varchar(100) not null ); create table dept ( deptId int auto_increment primary key, deptName varchar(100) not null ); create table course ( courseId int auto_increment primary key, deptId int not null, courseName varchar(100) not null, CONSTRAINT fk_crs_dept FOREIGN KEY (deptId) REFERENCES dept(deptId) ); create table SCJunction ( id int auto_increment primary key, studentId int not null, courseId int not null, term int not null, attendance int not null, grade int not null, unique key(studentId,courseId,term), key (courseId,studentId), CONSTRAINT fk_sc_student FOREIGN KEY (studentId) REFERENCES student(studentId), CONSTRAINT fk_sc_courses FOREIGN KEY (courseId) REFERENCES course(courseId) );
이점:
참고: 단일 필드에 여러 옵션을 배열로 저장하는 것이 편리해 보일 수 있지만 일반적으로 데이터베이스 설계에는 권장되지 않습니다. 이 접근 방식은 성능 문제와 데이터 처리 문제로 이어질 수 있습니다. 접합 테이블은 다대다 관계를 저장하기 위한 보다 구조화되고 효율적인 솔루션을 제공합니다.
위 내용은 학생을 위한 여러 강좌를 데이터베이스에 효율적으로 저장하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!