대부분의 사람들은 아래 접근법을 사용하고 변환이 필요한 특정 테이블에 대한 변환 테이블을 작성하지만 이는 테이블로드에 영향을 줄 수 있음을 알고 있습니다.테이블 용 언어 변환
CREATE TABLE Product
(
Product_id
,ProductTrans_id -- FK
)
CREATE TABLE ProductTranslation
(
ProductTrans_id
,Product_id
,Name
,Descr
,lang_code
)
아래의 접근 방법이 실행 가능합니까? 1 개 이상의 열을 번역해야하는 많은 테이블이 있다고 가정 해보십시오. 다음 테이블에서 모든 번역을 1 개의 테이블에 보관할 수 있습니까? 나는이 테이블이 시간이 지남에 따라 커질 것이라고 생각합니다. 적은 수의 테이블을 가진 것은 자동으로 의미하지 않는다 :
CREATE TABLE translation_entry (
translation_id int,
language_id int,
table_name nvarchar(200),
table_column_name nvarchar(200),
table_row_id bigint,
translated_text ntext
)
CREATE TABLE translation_language (
id int,
language_code CHAR(2)
)
그래서 당신은 당신이 테이블의 수에 대한 우려 이유를 모르겠어요 그래서
select
product.name
,translation_entry.translated_text
from product
inner join translation_entry on product.product_id = translation_entry.table_row_id
and translation_entry.table_name = 'Product' and translation_entry.table_column_name = 'Name'
and language_id = 3
두 번째 방법은 오버 헤드가 많은 것처럼 보이며 단일 제품의 번역 된 열을 가져 오기위한 여러 가지 가져 오기가 필요합니다. 제대로 이해하면 ..? +1 좋은 질문입니다! –
좋은 접근 방식은 처음에 쿼리가 어떻게 보이는지 고려하는 것입니다. 테이블 디자인을 위임합니다. –
두 번째 방법에서는 TableName과 ColumnName을 필터링 한 다음 table_row_id를 통해 링크 할 수 있습니다. 쿼리 속도가 느릴 수도 있습니다. 이 작업을 수행하는 방법을 생각하면 새 테이블이나 열 등에 번역이 필요할 때 스키마 변경이 필요하지 않습니다. – davey