2012-02-11 5 views
0

비즈니스 로직 데이터를 저장하기 위해 여러 테이블을 사용하는 DB 모델이 있습니다. 테이블 중 하나는 UserID를 보유하는 사용자 테이블을 포함합니다. 코드는이 테이블에서 데이터를 읽고 응용 프로그램에서 사용되는 json 문자열을 생성합니다. 쿼리를 다시 실행하고 json 문자열을 다시 생성하지 않으려면 json 문자열을 UserID 및 JsonCacheWork라는 두 개의 열만있는 테이블 호출 JsonCache에 저장합니다. 각 사용자에게는 여러 개의 JsonCacheWork 항목이 있습니다 (항목은 사용자 상호 작용의 결과로 추가됩니다).왜 데이터베이스 테이블을 링크합니까?

현재 데이터베이스 다이어그램에는 User 테이블과 JsonCache 테이블 사이에 관계가 없습니다. 잘 작동하는 것 같습니다.

왜 2 개의 테이블 사이에 관계를 추가하고 싶습니까? 내 DB 다이어그램을 그대로 유지하는 이점이있는 경우는 무엇입니까?

설명해 주셔서 감사합니다.

+0

"데이터베이스 다이어그램"은 데이터 집합 디자이너, Visual Studio Server 탐색기의 데이터베이스 다이어그램, SSMS의 데이터베이스 다이어그램 또는 다른 것을 의미합니까? –

+0

@ChrisShain : linq-to-SQL ORM – frenchie

답변

2

당신은 데이터베이스 관리 시스템에게 테이블 사이의 관계를 추가를 그 기록에 그 두 테이블은 관련이 있습니다. DMS는이 관계를 강제 할 수 있습니다. 즉, 존재하지 않는 UserId가있는 JsonCache 테이블에 레코드를 추가하는 실수를하지 않아도됩니다.

또한 외래 키 제약 조건을 사용하면 다른 테이블의 관련 레코드가 삭제 (계단식 삭제) 될 때 한 테이블의 레코드를 자동으로 삭제할 수 있습니다. 따라서 사용자를 삭제하면 DMS가 JsonCache에서 자신의 항목을 삭제합니다.

SQL Server는 관계형 데이터베이스이며 테이블 간의 관계는 데이터베이스 스키마의 핵심 부분입니다. 데이터 무결성을 유지하는 데 도움이됩니다.

+2

관계와 관계에는 차이가 있습니다. –

+0

관계가 개선되지 않았습니까? – frenchie

+0

@frenchie : 약간만. 관계 또는 기타 제약 조건은 약간의 성능 저하가 강제로 적용됨을 의미합니다. 그러나 당신은 그들없이 무결성을 잃습니다. –

1

두 엔티티간에 다 대다 관계가있는 경우 두 테이블 사이에 조인 테이블이 있어야합니다. 나는 사용자와 JSON이 일대일 관계이므로 두 개의 별도 엔티티를 사용하는 것에 대해 의문을 가질 것이라고 말한다. JSON을 사용자 테이블에 넣고 사용자 ID로 간단히 쿼리합니다. JSON 용으로 두 개의 열이있는 별도의 테이블에 대한 이유는 없습니다.

json으로는 유통 기한이 있다면 내 마음을 바꿀 수

: 효과와 유효 기간, 단일 사용자에 대한 역사 등

+0

사용자가 로그 오프 할 때 json 문자열이 삭제된다는 것은 로그 인한 사용자의 데이터 만 포함하기 때문에 테이블이 매우 작다는 것입니다. 각 사용자는 해당 캐시 테이블에 여러 레코드를 가지므로 다른 테이블 (즉, 사용자 테이블이 아님)에 데이터를 저장해야합니다. – frenchie

관련 문제