2012-04-03 8 views
0

프로젝트에 MySQL 데이터베이스와 JSP를 사용하고 있습니다. 내 프로젝트에는 Philosophy, Technical, Art, Sports 등의 카테고리가 있습니다. 스포츠에 하키, 크리켓, 축구 등 다양한 가치가있는 카테고리가 있습니다.이 값을 저장하기 위해 데이터베이스를 사용하면 중복이 발생합니다.
예 : 스포츠 크리켓, 스포츠 하키 등.하나의 카테고리에 여러 개의 키를 효율적으로 저장하십시오.

내 질문은 어떤 사람이 크리켓을 입력하면 스포츠 카테고리에서 크리켓과 비교할 수 있도록이 값을 저장하는 효율적인 방법이 있습니까?

답변

0

고전 many-to-many relationship 인 것 같습니다.

category

많은 value 기록이 수 있으며, value 많은 category 레코드와 연관 될 수 있습니다.

모델을 작성하려면 category, value 및 접합 테이블 category_value의 세 테이블을 작성하십시오.

카테고리

  • ID
  • 이름 기타
  • ...

  • ID
  • 이름
  • 기타 ...

Category_Value

  • 카테고리 ID
  • ValueID
0

전형적인 DBMS는 "포인터"의 개념을 이해하지 않습니다 , 그래서 두 테이블을 "관련 시키려면"o의 일부 값 ne 테이블은 다른 테이블에 물리적으로 복사되어야합니다. 또한 인덱스를 만들 때마다 인덱싱 된 열의 데이터 복사본이 해당 인덱스에 저장됩니다.

데이터베이스에 포인터가없는 이유는 매우 있습니다. 특히, DBMS는 포인터를 매달아 걱정하지 않고 물리적 저장소 내에서 데이터를 이동할 수 있습니다. 이것만으로도 저장소 요구 사항이 다소 증가 할 수 있습니다 (복사본 대신 포인터를 사용하는 가설적인 DBMS보다). 따라서 함께 살면됩니다.


말했다되는 것을 데이터를 정상화 않습니다. Michael Fredrickson's answer 이미 M 적용 : N 관계를하지만, 경우에 이것은 실제로 1 :

enter image description here

: N (즉, 값이 두 개 이상의 범주에 될 수 없음),이 같은 뭔가가 필요 것
관련 문제