gpt4 book ai didi

MySql - 使用外键约束创建表 `SortOrder`?

转载 作者:行者123 更新时间:2023-11-29 00:36:32 28 4
gpt4 key购买 nike

这是一个将被需要使用它的任何其他表使用的表。因此,想象一下大量使用。

delimiter $$

CREATE TABLE `sortorder` (
`sortOrderId` int(11) NOT NULL AUTO_INCREMENT,
`sortOrder` tinyint(4) NOT NULL,
PRIMARY KEY (`sortOrderId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$

需要什么来确保该表能够处理对其施加的任何负载?

我只能想象 sortOrder 需要一个 tinyint 数据类型 例如,如果我在菜单中有 10 个选项卡,或 5 个缩略图等,那么你可以看到我们此处不需要大的 INT 数据类型。

我需要学习和做的另一件事是在此表上设置外键约束。

例如,如果 image 表删除了带有 sortOrderId 的记录,则需要在 sortorder 表中删除匹配的记录。

这是怎么做到的?

ALTER TABLE 排序代码:

ALTER TABLE sortorder ADD FOREIGN KEY fk_sortorder;

创建表排序代码:

...

**编辑:image 表使用 sortOrderId 列。我必须确保如果在 image 表中删除了一条记录 - 在 sortorder 表中删除了相应的记录。

delimiter $$

CREATE TABLE `image` (
`imageId` int(11) NOT NULL AUTO_INCREMENT,
`imageFileName` varchar(45) DEFAULT NULL,
`imagePath` varchar(255) DEFAULT NULL,
`imageTitle` varchar(100) DEFAULT NULL,
`imageAlt` varchar(100) DEFAULT NULL,
`imageWidth` int(11) DEFAULT NULL,
`imageHeight` int(11) DEFAULT NULL,
`classId` int(11) DEFAULT NULL,
`imageSizeId` tinyint(4) NOT NULL,
`isImageEnabled` bit(1) DEFAULT b'0',
`sortOrderId` int(11) DEFAULT NULL,
PRIMARY KEY (`imageId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$

最佳答案

快速使用此表的关键indexes如果它们具有高基数,则在您将选择和排序的列上。如果您认为此键会有很大差异,则您可能应该在 sortOrder 上添加键。


要获得级联删除,您需要:

ALTER TABLE sortorder
add CONSTRAINT fk_sortOrderId
FOREIGN KEY (sortOrderId)
REFERENCES image(sortOrderId)
ON DELETE CASCADE

我认为 sortOrder 上的索引不会很有效。这是由于组成索引的 BTree 数据结构的性质。如果您考虑一下,sortOrder 的大多数值可能是 1-10 的低数。几乎没有差异,索引的好处就会下降。

看来使用复合索引会更好。

CREATE INDEX `sort_index` on `sortorder` (`sortOrderId`, `sortOrder`)

您必须在运行时监视性能才能真正感受到这是充分利用数据库的正确方法,我只是猜测。

关于MySql - 使用外键约束创建表 `SortOrder`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14022983/

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