2012-06-05 2 views
0

어리석은 질문이라면 실례지만, 관계형 데이터베이스를 처음 사용하고 답을 찾지 못하는 것 같습니다 (아마도 다른 모든 사람들은 이미 답을 알고 있기 때문일 수 있습니다).참조 테이블에 적합한 양방향 관계입니까?

시간 (TAI, UTC, GPS 등)이 약간 다른 다양한 형식의 시간을 포함 할 수있는 테스트 데이터를 저장하고 있습니다. 나는 입력이되기 전에 시간이 임의의 일관된 형식으로 변환되도록하고 싶지는 모르겠다. (또는 아마도 가장 좋은 방법 일까?)하지만 유연성을 유지할 수 있다고 가정 할 때 참조 테이블 (룩업 테이블) 그래서 같은 시간 유형의 : 나는 또한 실제 시간을 저장하는 테이블이있을 것이다

ref_time_types 
-------------- 
id (PK) 
desc (UTC, GPS, TAI, etc) 

과 :

tbl_time 
------------- 
id (PK) 
ref_time_types.id (FK) 
seconds 
year 
. 
. 
. 

내 질문은 내가 아주 기본적인 확신합니다. tbl_time에서 ref_time_types 로의 단방향 다 대일 또는 이들 간의 양방향 관계를 설정해야합니까? 나는 모든 UTC 시간을 찾고 싶어하는 이유를 생각할 수 없다. 그것은 양방향 관계를 창출 할 것인지에 대한 기본 원칙입니까? 참조 테이블의 관계에 관해서 가장 좋은 방법이 있습니까?

나는 차이점이 있으면 파이썬, sqlalchemy 및 sqlite를 사용하고 있습니다.

+0

이 예제의 세부 사항 외에, 참조 테이블에 대한 양방향 관계를 설정하는 것이 일반적으로 불필요한 것입니까? – IanVS

답변

2

실제로 을 보존 하시겠습니까? 형식입니까?

  1. 아니요, 그렇다면 데이터베이스에 저장하지 마십시오. 데이터베이스는 데이터를 저장하기위한 것으로, 데이터가 UI에 표시되는 방법에 대해 신경 쓰지 않아야합니다. 그래서, 당신이 UI에서 원하는 입력을 처리하는 것이 좋습니다 것이 (그렇게 여러 형식을 의미하는 경우),하지만 그것을 데이터베이스에 저장하기 전에 일관된 형식으로 변환하고 ref_time_types 없애 버려.
  2. 그렇다면 계속해서 형식을 저장하십시오. 그러나 쿼리 할 때 전환이 적어지기 때문에 날짜/시간 자체의 일관된 표현을 사용합니다 (입력 조건을 쿼리, 원하는 형식과 일치하지 않는 모든 행 대신).

또한, 당신의 DBMS에서 지원 날짜/시간 형식을 사용합니까 - 당신이 실제로 이러한 개별 구성 요소에 조회 할 하지 않는 한 나는 (필드를 구분하기 위해 다양한 날짜/시간 구성 요소를 분리 할 특별한 이유가 표시되지 않습니다 색인을 생성하려고합니다.)

tbl_time에서 ref_time_types까지 단방향 다 대 1을 설정해야합니까?

위에서 설명한 것처럼 첫 번째 경우에는 관계가 필요하지 않습니다 (하나의 표만 있기 때문에). 두 번째 경우는 관계가 1 대 1이됩니다.

+0

고마워, 나는 데이터베이스에 저장되기 전에 모든 시간을 GPS 초로 변환하는쪽으로 기울어 져있다. 그러면 데이터베이스에서 일관성이 향상되고 쿼리하기가 쉬워집니다. 날짜/시간 유형을 사용하는 경우 sqlite에는 윤초 개념이 없기 때문에 실제로는 불가능합니다. 이는 나에게 중요합니다. 도와 주셔서 감사합니다! – IanVS

관련 문제