2010-08-10 2 views

답변

1

일반적으로 값을 두 번 저장하지 않는 것이 가장 좋습니다. 대신 당신은 테이블의 하나의 값을 저장 할 수 있습니다 당신은 당신이 동시에 두 테이블의 값에 액세스 할 수 있습니다 있도록 외래 키에 함께 두 테이블에 가입 할 수 있습니다 쿼리 할 때 :

SELECT table1.foo, table2.bar 
FROM table1 
JOIN table2 ON table1.table2_id = table2.id 

하는 경우를 당신은 값을 두 번 저장합니다. 이것을 비정규 화라고합니다. 값이 한 가지 이유 또는 다른 이유로 동기화되지 않으면 문제가 발생할 수 있습니다. 때로는 성능을 향상시키기 위해 비정규 화하는 것이 유리하지만 단일 조인은 매우 빠르므로 성능을 측정하고 너무 느린 경우가 아니라면이 작업을 수행하는 것이 좋습니다.

-1
INSERT INTO TABLE A (FieldInA) VALUES ('X') 
INSERT INTO TABLE B (FieldInB) VALUES ('X') 

그런 다음이 테이블 행을 삭제하거나 업데이트하지 말고 다른 표의 두 입력란에서 항상 동일한 값을 유지해야합니다.

+0

하하하! 나는 너가 농담으로 이것을 의도했기를 정말로 바란다 ... –

+0

나 아니지만 도박이다. 이 대답을 삭제하면 담당자를 다시 계산할 때 담당자에게 다시 알립니다. –

0

normalize 동일한 데이터를 두 번 사용하지 않아도되고 더 이상 이와 같은 것에 대해 걱정할 필요가없는 이유는 무엇입니까? 당신은 디자인이 triggers

+0

내 생각에 동일하게 유지되는 값은 사용자가 입력 한 자유형 텍스트 또는 기타 사항이지만, 테이블을 가지고 ID로 새 항목을 참조 할 수 있습니다. – FrustratedWithFormsDesigner

0

왜 지금까지이 작업을 수행 할 것 좀 봐 변경할 수없는 경우

?

하나의 엔티티 중 하나의 속성이 다른 관련 엔티티의 일부 속성과 동일한 항상이면 중복 데이터 모델이 있습니다.

을 동기화하는 대신을 하나의 속성으로 참조하십시오. 조인을 사용하여 첫 번째 테이블을 두 번째 테이블에 조인 한 다음 한 테이블에서 특성 값을 가져옵니다.

TableA.foo should always equal TableB.bar 

드롭 열 TableA.foo,이 작업을 수행합니다 : 현재이있는 경우 예는,

select A.*, B.bar as foo 
from TableA A 
join TableB B on (B.foreign_key = A.key); 
관련 문제