2010-11-24 2 views
1

레일을 사용하여 예약 시스템을 만들고 있습니다.이 시나리오에서 모델간에 어떤 연관성이 필요합니까?

세 가지 모델 - 방문자, 객실 및 예약.

방문자는 객실에 머무를 수 있습니다.

예약은 방문자가 많을 수 있으며 많은 객실 (또는 공유)에있을 수 있습니다. 예약에는 시작일/종료일도 있습니다.

방문자는 예약 내 방 사이를 이동할 수 있으며이 방 배정의 시작/종료 날짜를 알고 있어야합니다.

하나의 조인 테이블로 충분합니까? 나는. visitor_id, room_id, booking_id?

또는이 모델 간의 연관성은 어떻습니까? 객실 추가 할당이 필요합니까?

대단히 감사합니다.

답변

1

room_allocations 테이블이 있어야한다고 생각합니다.

+0

나는 room_allocation_visitors 테이블과 함께 이것이 갈 수있는 방법이라고 생각합니다. 감사. – user88

0

방문자는 잠재적으로 할당이 알려질 필요가 이러한 공간의 시작/종료 날짜를 예약에서 객실 사이에 를 이동 수 있습니다.

방문자가 방을 변경하면 새 예약을 만들 수 있습니까? 이 경우 추가 테이블이 필요하지 않습니다.

+0

방문자가 방을 옮길 때마다 새로운 예약을 만드는 것과는 대조적으로 모든 세부 사항을 한 예약에 포함하고 싶습니다. 나는 방 할당 테이블이 가장 적절하다고 생각하고 있습니다. 어쨌든 고마워. – user88

0

많은 예약자가있을 수 있으며 은 많은 객실 (또는 공유)에 포함될 수 있습니다. 예약도 시작일/종료일이 있습니다.

'공유'란 무엇을 의미합니까?

그렇지 않으면 일반적인 절차는 엔티티를 나열한 다음 엔티티 간의 관계를 정의하는 것입니다. 그것은 이런 식으로 뭔가를 갈 것이라고 - 나는 여기에 명확한 답을 제공하기 위해 노력하고 있지 않다,하지만 그것에 대해 생각하면 갈 수있는 방법을 설명하기 위해 : 개체로 속성 그룹을 정의하는

첫 번째 시도

엔티티 . 데이터 사전을 만드는 것이 좋습니다. 특히 팀으로 작업하는 경우에 좋습니다.

관계

봅니다 구체적으로 - 은 (시스템 설계에서 매우 중요한 인 의미를) 관계에 이름을 부여 적은 도움이 비교된다 많은 방문자를 가질 수 예약을 말.

가 방문자 (들)/방문자 (들)에 의해 예약은 당신이 이름과의 관계를 구별 할 수 있습니다 당신 때문에이 더 예약을 예약 말 : 예약 방문객을 위해 만들어/방문자 (을 예약 둘 다 가지고 있고 카디널리티를 결정하는 데 도움이된다면 도움이 될 수 있습니다. 두 가지 방법으로도 이름을 지정하면 도움이 될 수 있습니다. 가끔 어색한 언어로 끝나기도합니다 (예 : 여기서는 방문자).) 예약 예약 예약 자체가 관계 테이블이 아닌 경우 - weak entity) 나쁘다.

여러분이 가서 모든 관계의 이름을 짓는다면 훨씬 더 정확하게 대답 할 수 있습니다.

참고 : 3 진 다 대다 관계 테이블은 non-trivial way에서 비정규화할 수 있습니다. 그리고 정규화가 매우 중요한 이유 중 하나는 아름답고 이상적인 데이터베이스 설계가 아니라 데이터베이스의 잠재적 인 불일치를 관리 할 수 ​​있다는 것입니다 (예를 들어 비정규화된 설계로 어떤 종류의 비정상적인 데이터베이스가 있는지 알아보기로 결정한 경우) 표현할 수 있으며, 이는 상당히 명백합니다 (3NF까지). 이 같은

0

뭔가 당신이 시작할 수 있어야합니다

alt text

는 예약 & 룸 예약을 충당하기 위해 아마 깔끔한 방법이 있습니다. OO 용어로는 복합 패턴을 사용하여 모델링 할 수 있습니다. 아마도 로직을 더 깨끗하게 만들 것입니다. 물론 여전히 테이블에 매핑해야합니다. 탐험할만한 가치가 있는지 여부는 앱의 더 넓은 요구에 달려 있습니다.

hth.