私はevent_idでリンクされた2つのテーブルイベントと予約を持っています。 例:それは1バイト少ない整数に比較を消費だと私は思ったんだけどテーブル間の参照として日付フィールドを使用することは賢明ですか?
CREATE TABLE `bookings` (
`booking_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`event_id` int(10) UNSIGNED NULL DEFAULT NULL,
`fullname` varchar(80) NOT NULL,
`phone` varchar(20) NULL DEFAULT NULL,
`note` text NULL,
`date_created` datetime NOT NULL,
`date_updated` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`booking_id`),
FOREIGN KEY (`event_id`) REFERENCES `events` (`event_id`) ON DELETE SET NULL ON UPDATE CASCADE,
INDEX `event_id` USING BTREE (`event_id`),
INDEX `source_id` USING BTREE (`source_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=COMPACT;
#events
CREATE TABLE `events` (
`event_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`date` date NOT NULL ,
`title` varchar(255) NULL DEFAULT NULL ,
`description` text NULL,
PRIMARY KEY (`event_id`, `date`),
UNIQUE INDEX `date` USING BTREE (`date`) ,
INDEX `event_id` USING BTREE (`event_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=COMPACT;
は、私は、テーブル間の参照として日付フィールドを使用することができますし、読み込まれ、単一のテーブルではなく、組み合わせで動作するように簡単です。 しかし、インデックスとSQLクエリのパフォーマンスにどのような影響があるのかよくわかりません。