gpt4 book ai didi

mysql - 使用日期字段作为表之间的引用是否明智?

转载 作者:可可西里 更新时间:2023-11-01 08:07:30 25 4
gpt4 key购买 nike

我有两个表 events 和 bookings,它们由 event_id 链接。示例:

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;

我想知道,我可以使用日期字段作为表之间的引用吗,因为它比整数少消耗 1 个字节,并且使用单个表而不是合并表更容易读取和操作。但我不确定它如何影响索引和 SQL 查询性能。

最佳答案

使用纯数据字段作为表之间的链接并不是一个好主意。 date 字段在直觉上似乎是一个通用字段,因此另一位工程师最终会出于合理的应用目的更新该字段。如果它被用作表链接,更新会破坏链接。

为什么不为表链接目的创建一个特定的字段?当然,每条记录可能需要 4 或 8 个字节,但您是否考虑过存储成本?它几乎是免费的。另一方面,对字段的非直观使用可能会在未来的错误、误解、混淆和停机中付出相当大的代价。

关于mysql - 使用日期字段作为表之间的引用是否明智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com