2012-09-11 3 views
1

2 개의 테이블을 갖고 싶기 때문에 오래된 테이블을 두 번째 테이블로 옮길 수 있으므로 메인 테이블을 작게 유지하면서도 하나의 int를 사용하여 두 테이블에 연결할 수 있기를 원합니다. 기본 키.SQL, 2 개의 테이블, 하나의 공유 기본 키

예 : (내 실제 테이블에있는이 예제를 단순화했습니다.) 추적 세션을 유지하고 만료 된 세션을 Expired_Sessions 테이블로 이동하려고하지만 Login_Attempts와 같은 로그 테이블에 세션을 연결하고 있습니다. 테이블과 나는 그 테이블에 대한 링크를 끊고 싶지 않습니다.

Sessions 
-------------------- 
PKey  | int 
Session_ID | varchar 


Expired_Sessions 
-------------------- 
PKey  | int 
Session_ID | varchar 

Login_Attempts 
-------------------- 
Session_FKey | int 
Count  | int 

을 나는 일 것이라고이 작업을 수행하는 두 가지 방법을 생각 않았다 그러나 나는이 작업을 수행 할 수있는 더 좋은 방법이 있어야한다 생각?

하나 : 내 sys_constants 테이블에 기본 키 카운터를 저장하고 레코드를 추가 할 때마다이를 증가시킵니다. 또는

두 가지 : 세션 테이블 기본 키와 만료 세션 기본 키를 세 번째 기본 키에 연결 한 다음 세 번째 기본 키를 사용하여 내 로그 테이블에 연결하는 다른 테이블을 추가하는 두 가지 방법이 있습니다.

+0

? 신탁? PostgreSQL? DB2? –

답변

0

각 테이블마다 별도의 기본 키를 유지하지 않고 세션의 고유 식별자로 사용되는 다른 열을 추가하는 이유는 무엇입니까? Session_ID ...를 참조하십시오. 색인을 생성하면 조회를 위해 사용할 수도 있습니다.

1

테이블 분할 사용에 대해 생각해 보셨습니까? 나는 당신의 요구 사항에 대해 충분히 알지 못하지만 조사 할만한 가치가있을 것입니다. 테이블과 인덱스가 매우 커질 때

은 분할은 더 작고 관리 섹션으로 데이터를 분할 하여 도움을 줄 수 있습니다. 이 용지는 개의 큰 그룹이 여러 개의 개별 파티션에 저장되는 가로 분할에 중점을 둡니다. 파티션 된 세트 의 정의는 필요에 따라 사용자 정의, 정의 및 관리됩니다. Microsoft SQL Server 2005에서는 정의 된 범위 또는 목록을 사용하여 특정 데이터 사용 패턴을 기반으로 테이블을 분할 할 수 있습니다. SQL Server 2005는 또한 의 새로운 테이블 및 인덱스 구조에 디자인 된 기능을 추가하여 파티션 된 테이블과 인덱스를 장기간 관리 할 수있는 다양한 옵션을 제공합니다.

사용중인 DBMS

http://msdn.microsoft.com/en-us/library/ms345146(v=sql.90).aspx