2010-08-17 5 views
1

많은 다른 지역의 학교 학생들이 참여할 예정인 이벤트 등록 시스템을위한 스키마를 디자인하고 있습니다. 내 주요 문제는 내가 데이터베이스에 학교 이름을 저장하는 방법입니다.데이터베이스 스키마에 학교 이름 저장

학생이 별도로 등록 할 경우 동일한 학교 이름의 유사어가 시간이 지남에 따라 축적 될 가능성이 큽니다. 우리가 수집하고자하는 통계 중 하나가 이벤트에 등록한 학교와 기관의 수이기 때문에 특히이를 제거 할 수있는 쉬운 방법이 필요합니다.

나는 Participant 테이블에 여분의 열로 school_name를 저장하거나 School 테이블을 (다른 방법을 생각할 수 없다) 참조하는 외래 키로 school_id를 저장하는 사이에 논의하고있다. 스토리지 활용, 중복 데이터 제거 용이성 및 기타 요소에 관해서 어느 것이 더 효율적인지 증명할 수 있습니까?

답변

2

실수를 피하려면 기존 학교 이름 목록을 제공 할 수 있습니다 (예 : 커질 수 있음). 그들이 학교를 선택하면 해당 학교의 신분증을 보관합니다. 모든 학교를 예상 할 수 없기 때문에 "다른"학교를위한 자유 형식의 텍스트 필드를 가지고 참가자 레코드에 텍스트로 저장할 수 있습니다. 새로운 학교를 학교 목록에 추가하거나 정기 "다른"학교를 기존 학교에 연결하려면 주기적으로 조정해야 할 수도 있습니다. 목록에 있었지만 방금 본 적이 없거나 잘못 입력했을 수 있습니다. "이 스토리지, 데이터를 복제 퍼지의 용이성 및 기타 요인의 활용에있어 하나 을보다 효율적으로 증명?"

+0

하지만 문제는 실제로 엄청난 학교 목록이 없다는 것입니다. 그리고 이것은 제가 대학을 신청할 때 경험 한 것입니다. 학교 목록에 학교 이름이 없으면 정말 고무적이지는 않습니다. :) –

+0

@mganjoo : 전체 목록을 원한다면 정부 부서가 있습니까? 또는 그 목록을 가지고있을 공공 기록? 낙담하는 학생을 피하고 싶다면 UI를 통해 할 수 있습니다. 학교 이름이 텍스트 필드로 자동 완성되는 일부 AJAX는 학교에없는 전체 목록을 볼 수 없지만 학교가 * 목록에 * 표시되어 있으면 자동 완료됩니다. – FrustratedWithFormsDesigner

+0

정부 목록 - 극히 희박합니다. 이것은 여러 나라에서 개최되는 과외 활동 (UN 모델)입니다. AFAIK, 공립학교 데이터는 주머니에 꽤 무겁습니다. 하지만 이제는 언급 했으므로 작년에 등록한 학교 목록으로 시작할 수는 있습니다. –

2

외부 테이블 키로 ID를 저장하는 것이 복제가 적기 때문에 바람직합니다.

2

저장은 저렴합니다. 따라서 미리 준비된 학교 목록을 제공하여 데이터 중복 제거에 소요되는 시간을 최소화하고 사용자에게 입력 내용을 저장하는 접근 방식을 선택하고 외래 키를 시행하십시오.

물론 이것은 사용자가 무료 텍스트 상자를 제공하는 것보다 필연적으로 더 많은 작업을 수행 할 수있는 그런 목록을 가져와 검색 메커니즘을 제공해야한다는 것을 의미합니다. 모든 것은 쉽습니다. :) 그러나 자유 텍스트는 표준화의 적이므로 가능하면 언제든지 피하십시오.


귀하의 프로필에 따르면 귀하는 싱가포르에 있습니다. 응용 프로그램의 기반이되는 곳이면 this Wikipedia page은 많은 타이핑을 저장합니다 (Wikipedia 적용에 대한 일반적인주의 사항). 많은 다른 나라에서 온 schoold 목록도 있습니다. Find out more.


'할'자동 완성 '필드 드롭 다운을위한 유연한 대체 역할을? '

할 수 있습니다. 그러나 그들은 특히 우리가 선택하려고했던 가치를 선택했다는 것을 보장하기가 어렵다면 완전히 짜증나게 할 수 있습니다. 나는 SO tag 기능이 이런 점에서 혼란스럽고 기술 유형이라고 생각합니다. 드롭 다운은 더 이해하기 쉽습니다. 다른 한편으로, 대부분의 젊은이들은 예측 문자 메시지에 완전히 익숙하므로 아마도 자동 완성 기능이 더 적합 할 것입니다.

+0

정말 말이 되네요. 옆으로, "자동 완성"필드는 드롭 다운에 대한 유연한 대체 역할을합니까? 아마도 돌에 설정된 드롭 다운 목록보다 오류가 발생하기 쉽지만 그 목적에 부합합니까? –

0

학교 이름 시간이 지남에 변경하십시오. 이런 일들을 통해 살아 왔기 때문에 이름을 기본 키가 아니게 만드는 것이 좋습니다. 즉, 학교에서 변경하지 않는 각 학교의 ID에 테이블을 매핑하는 테이블을 얻었습니다. 나머지 데이터베이스는 ID를 사용할 수 있으며 적절한 외래 키 관계를 설정할 수 있습니다. 전체 카 들들. 고유 한 이름 C 럼을 제한하려고합니다. 학교가 이름을 변경하더라도 둘 중 누구도 같은 이름을 가지지 않습니다. 왜냐하면 여러 달의 시간 척도 (예 : 변경 사항을 처리해야하는 다년간의 시간 척도에 불과합니다)에서 실제 PK와 비슷한 방식으로 작동하기 때문에 이름이 같습니다. .

+0

학교 이름이 고유하지 않습니다. 존 F. 케네디 고등학교가 얼마나 많은지를 간단히 살펴보십시오 (1964 년 미국의 많은 신설 학교들이이 이름을 지었기 때문에이 사실을 알고 있습니다). 학교 이름은 일반적으로 다른 모양이나 형태가 아닌 교육구 내에서 고유합니다. – HLGEM

+0

@HLGEM : 나는 대학 학교의 관점에서 생각하고 있었다. 평균적인 대학 컴퓨터 과학 학교는 얼마나 많은 학교입니까? (사실, 합병 후 얼마 지나지 않아 두 명으로 구성된 어딘가에서 일 했었지만 그 당시에도 다른 이름이있었습니다.) 또한 일반 교육구에는 여러 개의 JFK 고등학교가 있습니까? 문제가있는 것은 큰 스케일에서만 가능합니다. –

관련 문제