0

작은 웹 응용 프로그램을 만들려고합니다. 응용 프로그램은 책갈피와 해당 태그를 저장합니다. www.jquery.com데이터베이스 정규화

태그 :

북마크 프로그래밍 자바 :

즐겨 찾기 : www.javaworld.com
태그를 자바, 태그를 기반으로

지금 내 검색 기준을 웹 어플리케이션 . 사용자 검색이 자바에 대한 것이라면 java로 저장 한 모든 책갈피를 제공해야합니다. 여기에는 www.javaworld.com과 www.jquery.com이 모두 표시되어야합니다.

내 데이터베이스 테이블

처럼 보이는이

사용자 (UID, UNAME, 비밀번호)

책갈피 (BID, UID, BOOKMARK_URL,이 tag1, tag2로, TAG3, tag4, tag5)

또는

책갈피 (BID, UID, 북마크)

태그 (TID, BID, 태그 이름)

,

여기에서 BID와 TID는 서로 게이트 키입니다.

내가 준 시나리오를 고려하여이 문제를 해결할 수있는 더 좋은 방법을 제안 해주십시오 ..

답변

1

은 왜 유래에 같은 비슷한을? 태그는 "전역"이며 단일 책갈피에 바인딩되지 않습니다. 책갈피를 미리 정의하지 않아도 태그를 정의 할 수 있으므로 유연성이 향상됩니다. 또한 첫 번째 솔루션 에서처럼 5 개의 태그로 제한하는 것도 좋은 아이디어가 아닙니다.

다음과 같이 분리하면 집계 기능을보다 잘 (태그 구름 만들기) 실행할 수 있으며 태그 표를 사용하여 확인란을 선택/새 책갈피를 여러 번 선택할 수 있습니다. 다른 북마크에 이미 바인딩되어 있다면 어색함을 느낄 것입니다.

Table: User [UID, Uname, PW] 

Table: Bookmark [BID, UID, url] 

Table: Tag [TID, Tagname] 

Table: Bookmark_Tag [BID, TID] 
+0

감사합니다. 그렇게 할거야. – sundeep

+1

수백만 명의 사용자가 동일한 북마크 된 URL을 사용할 수 있습니다. 사용자 ID와 북마크 ID가 쌍을 이루는 다섯 번째 테이블이 있습니다. 그렇지 않으면 모든 사용자가 www.ebay.com을 복제 할 수 있습니다 (규칙을 정규화하지 못합니다) – JM4

0

첫 번째 솔루션은 다음과 같은 문제가 있습니다
을 - 당신이 태그의 고정 번호가 어떻게 사용자가 그녀의 즐겨 찾기위한 6 태그를 정의 할 수 있습니다?
- 많은 NULL 값을 가질 가능성이 높습니다. 북마크의 태그 수가 5 개 미만인 경우 다른 열에는 값이 없습니다. 이 경우 사용되지 않는 열에 대한 메모리를 낭비 할 가능성이 있습니다.
- 검색 메커니즘의 속도를 높이려면 검색을 수행하려는 열을 색인해야합니다 (해당 경우 tag1, ... tag5) : 5 개의 모든 태그 열을 색인화해야합니다.

그런 이유로 나는 두 번째 솔루션을 선택하고 태그 테이블의 "태그 이름"속성에 대한 색인을 정의 할 것을 제안합니다. 또는 대안으로 모든 태그를 정의하는 태그 테이블을 포함 할 수 있습니다. 이 경우 태그 테이블은 태그의 숫자 ID (int)를 사용하여 태그 테이블을 참조합니다.