2013-01-07 2 views
0

처음에는 이런 생각을하고있었습니다. mysql 이벤트 기반 데이터베이스 만들기

CREATE TABLE `events` (
    `event_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, 
    `event_name` VARCHAR(200), 
    `date_added` DATETIME 
    PRIMARY KEY(event_id) 
); 

CREATE TABLE `event_date` (
    `event_id` INTEGER UNSIGNED NOT NULL, 
    `start_date` DATE, 
    `end_date` DATE, 
    FOREIGN KEY event_id REFERENCES events(event_id) ON DELETE CASCADE 
); 

CREATE TABLE `event_times` (
    `event_id` INTEGER UNSIGNED NOT NULL, 
    `event_date` DATE, 
    `start_time` TIME, 
    `end_time` TIME, 
    FOREIGN KEY event_id REFERENCES events(event_id) ON DELETE CASCADE 
); 

IT는 even_times.event_date이 스키마의 event_date.start_date 및 event_date.end_date 범위 내에 있는지 확인 할 수 있을까요?

답변

0

에서 날짜 필드를 제거 even_time와 even_date를 관련 나는 당신이 설명하는 필요를 충당한다고 생각한다.

CREATE TABLE events(
    event_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    event_name VARCHAR(200) DEFAULT NULL, 
    date_added DATETIME DEFAULT NULL, 
    PRIMARY KEY (event_id) 
); 

CREATE TABLE event_date(
    event_date_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    event_id INT(10) UNSIGNED NOT NULL, 
    start_date DATE DEFAULT NULL, 
    end_date DATE DEFAULT NULL, 
    PRIMARY KEY (event_date_id), 
    INDEX FK_event_date_events_event_id (event_id), 
    CONSTRAINT FK_event_date_events_event_id FOREIGN KEY (event_id) 
    REFERENCES events (event_id) ON DELETE CASCADE ON UPDATE RESTRICT 
); 

CREATE TABLE event_times(
    event_time_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    event_date_id INT(10) UNSIGNED NOT NULL, 
    start_time TIME DEFAULT NULL, 
    end_time TIME DEFAULT NULL, 
    PRIMARY KEY (event_time_id), 
    INDEX FK_event_times_event_date_event_date_id (event_date_id), 
    CONSTRAINT FK_event_times_event_date_event_date_id FOREIGN KEY (event_date_id) 
    REFERENCES event_date (event_date_id) ON DELETE CASCADE ON UPDATE RESTRICT 
) 

;

+0

커피를 마신 후에도 같은 결론에 도달했습니다. 나는 너에게 이것에 끄덕임을 줄거야. 그걸 찔러 줘서 고마워. – user1620152

0

이벤트 세부 정보를 만들려는 경우 하나 이상의 날짜에 이벤트가 발생할 수 있으며 각 날짜는 하나 이상의 완료 시간을 가질 수 있습니다.

그렇다면, 심지어 EVENT_DATE에서 참조 "폭포"의 관계를 구축하는 것이 바람직 할 것이고, 결국이 구조 테이블 even_time

+0

기본적으로 전체 콘서트의 시작과 끝 시간이 다른 n 일 동안 열리는 콘서트와 같은 이벤트를 진행하고 있습니다. 그런 다음 각 그룹에 대해 시간대를 설정합니다. 그래서 저는 실제로 데이터베이스 내에서 최상의 정확성과 최소한의 코드 양을 허용 할 수있는 최상의 설정을 얻으려고 노력하고 있습니다. – user1620152

관련 문제