2013-08-09 2 views
0

정말 충고를하고 싶습니다. 직원의 직원 휴무를 기록하려고합니다. 또한 직원은 주어진 날에 많은 휴식을 취할 수 있습니다. 어떤 전술을 사용해야합니까?SQL 및 정규화

내 생각은 원래 직원이었고 많은 휴식을 취할 수 있었고 한 명의 휴식은 한 명의 직원에 대한 것입니다. 일대 다.

그러나 직원이 많은 휴식을 취하고 한 번에 하나의 휴식을 취할 수도 있습니다 (many-to-many). 예를 들어 존과 프레드는 오후 12시에 휴식을 취하고 오후 1시에 돌아옵니다.

우리는 일대 다 (one-to-many)로가는 경향이있는 헤어 스타일로 헤어질 수 있습니다. 예를 들어, John은 12.01pm에 휴식을 취하고, 프레드는 오후 12시에 떠난다. 다른 시간대로 돌아 오는 두 사람은 모두 1.05pm과 1.03pm이다.

이 유형의 시나리오에 적합한 데이터베이스 설계 방법을 제공 할 수 있습니까? 아래 사진에서 아이디어 :

many to many one to many

답변

0

이 일대에 대한 이동합니다. 명확하게

점심 시간에 '12에서 1'과 같은 표준 값을 저장할 수있는 '표준 중단'표를 추가 할 수 있습니다. 직원 (또는 직원 그룹)이 이러한 "표준 휴식"중 하나를 취하면 해당 "휴식"라인이 "휴식"테이블에 추가됩니다.

결국보다 복잡한 모델에서이 "표준 중단"테이블은 "기본 일정"테이블과 연결됩니다. 예를 들어 사무실 직원은 "점심 시간"혜택을 얻습니다.

테이블이 그렇게 볼 수 있었다 :

Tbl_Break: 
    id_Break (primary key) 
    id_Employee (not null) 
    breakStartTime (not null) 
    breakEndTime (not null)   
    id_StandardBreak (nullable) 

Tbl_StandardBreak: 
    id_StandardBreak (primary key) 
    standardBreakStartTime (not null) 
    standardBreakEndTime (not null) 
    standardBreakDescription (not null) 
    id_Schedule (not null) 

을이 구성에서는 직원과 휴식, 직원 사이의 더 복잡한 대다 관계 사이의 일대 다 관계를 관리하는 것 중 하나 Tbl_Break.id_StandardBreak 필드의 값이 null인지 여부에 따라 기본 구분을 사용합니다.

0

나는 일대 다 접근 방식을 사용한다. DB에 데이터가 있으면 분석하여 누가 누가 휴식을 취했는지 파악할 수 있습니다.

또한 전체 프로세스를 자동화하기 위해 펀치 카드 또는 이와 비슷한 것을 사용하기 때문에 일대 다 방식이 원하는 방식입니다.