2008-09-28 8 views
12

레코드 용 태그를 저장하는 가장 좋은 방법은 무엇입니까? varchar 필드를 사용 하시겠습니까? 태그 x가 포함 된 행을 선택하면 어떨까요? 같은 연산자를 사용합니까?SQL Server 테이블에 태그를 저장하는 가장 좋은 방법은 무엇입니까?

감사합니다.
1) 태그의 양/태그 기록
2) 데이터의 매우 큰 볼륨을 처리하지 않는 한 당신이

:-) 정상화에 종교적인 의견을 가지고 있는지 여부 :

+0

https://elliot.silvrback.com/handling-tags-in-a-sql-database –

답변

13

두 가지에 따라 달라집니다 , 나는 '태그'테이블에 정수 식별자에 varchar 값을 매핑 한 다음 두 번째 테이블에 태그가 지정된 레코드를 해당 태그 ID에 매핑하는 것이 좋습니다. 먼저 구현을 제안한 다음 성능 요구를 충족시키지 않는지 확인하십시오. 이 경우 태그가있는 행의 ID와 태그의 실제 텍스트가있는 단일 테이블을 유지하십시오. 그러나이 경우 최적화 프로그램이 전체 테이블 스캔을 수행하는 경우 쿼리를 죽이기 때문에 char 열을 사용하는 것이 좋습니다. varchar 열이있는 큰 테이블.

+0

동의하면 태그의 이름을 쉽게 바꿀 수 있습니다. –

+2

유니 코드 지원을 위해 NVARCHAR 또는 NCHAR 열을 사용하십시오. 태그에 ASCII 문자 만 지원하려면 다른 방법을 사용하십시오. – Horcrux7

3

아니요, 일반적으로 여러 필드를 하나의 필드에 넣는 것은 좋지 않습니다. 대신 별도의 태그 테이블 (TagID 및 TagName 만 사용)을 사용하고 각 레코드에 대해 태그 ID를 지정하십시오. 레코드가 여러 태그와 연결되어 있으면 TagID 만 차이가있는 레코드가 중복됩니다.

이점은 태그별로, 레코드별로 쉽게 쿼리하고 태그 테이블을 별도로 유지할 수 있다는 것입니다. 즉, 태그 이름이 변경되면 어떻게 될까요? 단지 당신을 위해

+3

중복 레코드도 원하지 않습니다.이 경우 TagIds를 RecordIds와 일치시키는 TagRecord 테이블이 필요합니다. –

3

은 최소 허용 기본 키와 태그 테이블을 사용합니다. 255 개 미만의 태그가 있으면 바이트 (tinyint) 또는 다른 단어 (smallint)를 사용하십시오. 키가 작을수록 주 테이블의 외래 키 인덱스가 작고 빠릅니다.

+0

그래, 왜이게 유용하지 않니? :( –

관련 문제