2017-03-26 1 views
0

데이터베이스를 설계 중입니다. 나는 시간 기록을위한 모든 속성을 갖는 하나의 관계를 가진다. 그리고 항목이있는 다른 관계에서 외래 키로 만들어야합니다. 하지만 별도의 특성으로 날짜와 시간을 사용하여 기본 키 (복합 키)를 만들거나 기본 dateTime 특성을 기본 키로 사용할지 여부는 확실하지 않습니다. 감사합니다하나의 속성으로 날짜와 시간을 저장하는 것이 좋습니다.

답변

1

데이터베이스 쿼리를 최적화 할 때는 언제나 다른 관계와 테이블 간의 조인이 적어야합니다. 또한 DATETIME 형식의 특성을 저장하면 두 개의 열을 가져오고 응용 프로그램 논리를 적용하는 대신 열을 한 번 가져 와서 수행 할 수있는 작업을보다 잘 제어 할 수 있습니다. 또한 데이터베이스의 메타 데이터 크기를 전반적으로 작게 유지하는데도 도움이됩니다.

위의 관점에서 두 속성을 DATETIME과 같은 데이터 유형의 단일 열에 보관하는 것이 좋습니다.

희망 하시겠습니까?

+0

감사합니다. Shuja. 날짜와 시간에 다른 속성을 사용하면 데이터베이스 성능에 영향을 미칠 수 있습니다. 당신이 말했듯이 우리는 2 개의 속성에 대한 관계 사이의 조인을 수행해야합니다. 반면에 우리는 하나의 속성 dateTime 만 조인 할 것입니다. 또한이 단일 속성에서 여러 속성을 파생시켜야 할 경우 어떻게됩니까? 이 경우 오버 헤드 비용이 들지 않을까요? –

+0

그렇습니다. 데이터 정규화 및 결합은 모든 데이터베이스의 성능에 영향을 미치는 2 가지 핵심 요소입니다. DATETIME 특성을 가진 단일 열은 항상 데이터베이스의 동일한 수준에 created_at 및 updated_at 열을 저장하는 데 사용했습니다. 어떤 추가 쿼리 나 조인을 수행하지 않아도 날짜 나 시간을 기반으로 데이터를 평가할 수 있습니다. 그래서 그것은 분명히 성능에 영향을줍니다. –

+0

감사합니다. –

0

속성 자체는 단일 datetime 열을 사용하십시오. 따로 따로 취한 날짜와 시간 뒤에 어떤 의미가있는 경우에만 분할하는 것이 좋습니다.

그렇다고해서 datetime 열을 키로 사용하는 경우는 거의 없습니다. 일반적으로 숫자 (대용) 기본 키가 있고 datetime은 속성 일뿐입니다. 어쩌면 정확히 같은 순간에 두 개의 레코드가 발생한다고 기대하지 않을 수도 있습니다. 대부분의 경우 결국 결국 잘못된 가정으로 판명됩니다.

+0

감사합니다. 나는 "날짜와 시간 뒤에 의미"를 이해하지 못했습니다. 그게 무슨 뜻 이니? 또한 나는 그것을 강조하고 싶다, 나는 시간 로그에 대해 완벽한 관계를 사용하고있다. 나는 두 개의 항목이 동시에 발생할 수 있음을 의미하는 timeLog와 item relation 사이에 일대일 관계가 있습니다. 그래서 이것은 timelog 관계의 모든 데이터와 항목 관계에서 중복을 제거하는 데 도움이됩니다. 또한 이것은 timeLog 관계에 새로운 키를 도입하는 것을 피합니다. –

+0

의미 :이 속성과 관련된 유일한 질문은 이벤트가 발생했을 때 (datetime), 즉 원자입니까? 또는 날짜 및/또는 시간이 혼자 비즈니스 의미가 있고 당신이 그것/필터에 의해 그것을 쿼리해야합니다 - 그래서 당신은 datetime에서 그것을 추출해야할까요? –

+0

예, 파생 속성에 datetime을 사용해야합니다. –

관련 문제