2010-07-31 3 views
1

온라인 캘린더를 만들고 있습니다.데이터베이스 테이블 정규화 질문

en 이벤트를 만든 다음 "무한"또는 "끝"에서 "끝"datetime을 추가 할 수 있습니다. 또한 "끝"에서 "끝"까지를 선택하면 매일, 매주 또는 매월 반복 또는 반복하지 않도록 선택할 수 있습니다.

이 관계를 만드는 가장 좋은 방법은 무엇일까? 이와

Table: Events 
Columns: name, description, date_time (foreign key) 

Table: Date_time 
Columns: from, to, repeat (foreign key) 

Table: Repeat 
Columns: mode, days 
1: "daily", "every 2nd day" 
2: "weekly", "Monday, Wednesday" 
3: "monthly", "1st, 12th, 19th" 

나는 몇 가지 문제가 발생 : 여기

내 내가 지금 데 테이블입니다.

외래 키 제약 조건이 있으므로 Events.date_time을 지정해야합니다. 사용자가 datetime을 지정하지 않고 무한대로 설정하도록 선택할 수있게하려면 어떻게해야합니까?

반복에 대해서도 마찬가지입니다. 사용자가 datetime을 설정했다면 반복을 none으로 설정할 수있는 가능성을 부여하고자합니다.

누군가 나를 올바른 방향으로 안내 할 수 있습니까?

감사

+0

사용하신 DDL을 게시 할 수 있습니까? 일반적으로 외래 키는 이들을 지정하지 않아도됩니다 ... –

+0

DDL의 의미를 모릅니다. 나는 SQL을 사용하여 MySQL과 메신저를 설치했다. –

+0

테이블을 생성하는 SQL 문은 다음과 같습니다. –

답변

2

내가 스키마를 재고 제안, 나의 제안은 같은 :

편집 : 이벤트에서 하나 개 이상의 기간을 가질 수있다 때문에 및 에서 를 사용하는 것이 좋습니다 열로는으로, null 인 경우 이벤트는 무한대로 유효합니다.

Table: Events 
Columns: id, name, description, from (nullable), to (nullable) 

Table: Repeat 
Columns: mode, days, event_id (foreign key to Event) 
1: "daily", "every 2nd day" 
2: "weekly", "Monday, Wednesday" 
3: "monthly", "1st, 12th, 19th" 
관련 문제