문제

가정 내가와 테이블 다음과 같은 열이(단어 목록):

word: varchar
contributor: integer (FK)

지금 가고 싶어 번역에 대한 각각의"word".무엇이 될 것이 최고입니까?두 번째는 테이블?

word: integer (FK)
translation: varchar
contributor: integer (FK)
lang: integer (FK)

나 또는 모두에서 동일한 표?

word: varchar
translation_for: integer (FK - to the same table)
contributor: integer (FK)
lang: integer (FK)

가정 두 가지 시나리오에,(1)어디에 내가 필요로 끌어 번역된 단어는 원본과 함께 단어로 번역한 것,(2)는 내가 필요로 끌어 번역된 단어입니다.모두에서 시나리오를 수도 있겠다는 생각이 드네요를 사용하는"원래는"단어를 훨씬 더 많(모두 선택UPDATEing/삽입).

그래서,어떤 방법을 것이 최선 각 시나리오에 대한,또는 일반적으로?나는 쪽으로 첫 번째 방법,그 이후로 저는"기본"선택하는 데 시간을 소비할 필요 없이에 의해 자격 열입니다.당신은 무엇을 생각하십니까?

감사합니다!

도움이 되었습니까?

해결책

나는 당신을 해치는 경우 나중에 추가하고 싶어 하지 않을 경우 나중에 정상화 데이터베이스는 지금.단어가 있는 테이블이 단어는 기본 언어입니다.고 있습니다.언어 테이블과 함께하는 ID(i.e스페인,2),그리고 번역하는 테이블이라는 단어가 있습니다 ID,ID 언어,그리고 마지막으로 실제 단어에서는 언어입니다.이 테이블 연결.

사용하기 위한 쿼리하지만,삽입 업데이트에 따라,DBMS,필요할 수 있는 하드 쿼리를 처리합니다.

이것은 단지 가려는 로컬라이제이션이 제공,따라서 가능성을 더 추가 언어니다.이렇게 하면 보다 쉽게 수정하지 귀하의 데이터베이스에 추가 열 때마다 당신이 추가 언어입니다.당신이 정말로 하나만 필요한 번역 및 높은 의심할 필요한 다른 추가 중 하나는 열이 허용될 수 있습니다.

다른 팁

때문에 당신이 원하는 것을 보"단어"의 정체성을 가지고 별도의에서는"번역된 단어",그때 생각 1 1 일 옵션이 필요에 맞는 더 낫습니다.

일반적으로,나는 생각 디자인에 더 좋아:

PK (Key (varchar), Lang (FK)), Word (nvarchar)

는 것이 더 적절-만 참조하 텍스트는 그것에 의하여 열쇠와 Lang 값입니다.하지만,그것을 대체하 키로"원래는 단어"-그래서 그것은 약간 다릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top