何时使用自动增量键?

何时使用自动增量键?,第1张

概述我最近开始研究MySQL,虽然我已经阅读了一些有关数据库结构的文档,但是我无法理解自动增量键以及为什么要使用它们.有人告诉我:>最好使用数字代替文本作为主键,>最好使用没有任何业务含义的密钥让我们看一下下面的情况: tStores tSales tCustomers ---------- -----------

我最近开始研究MySQL,虽然我已经阅读了一些有关数据库结构的文档,但是我无法理解自动增量键以及为什么要使用它们.

有人告诉我:

>最好使用数字代替文本作为主键,
>最好使用没有任何业务含义的密钥

让我们看一下下面的情况:

 tStores        tSales         tCustomers----------    -----------    --------------store_ID       sale_ID        customer_IDstoreCode      store_ID               customer_ID

首先,我将一些数据加载到tStore中,以便所有可以销售产品的商店.在我们的业务中,所有商店都有4个字母的代码来标识它们.我可以将其用作主键,但是基于上述建议,我应该使用自动递增的store_ID字段?

问题是,每次我在tSales中插入内容时,我都必须回到tStores并执行以下 *** 作:

SELECT store_ID from tStores WHERE storeCode = @myStoreCode;

假设我正在每个商店的tSales中加载成千上万的行,将storeCode用作主键会不会更有效?
解决这个问题的最有效方法是什么?最佳答案是的,您可以将storeCode用作主键,如果可以确保它是唯一的,它将可以使用.然后,您将在其他表上添加外键以建立关系.

自动增量索引的好处是:

>通常比其他列类型上的任何索引都要快
>通常由某些框架(例如PHP中的Laravel)推荐

与您的结构有关,我将对以下几点进行评论:

>您有混合的套管柱/表.在MysqL上工作时,尤其是在不同的OS(windows / linux)上使用时,我总是建议对模式,表和列都使用小写名称.
>您在store_ID和store_code前面添加了前缀.此前缀不是必需的.为什么不简单地命名列ID和代码.
>应该将tSales上的关系命名为tStores_ID,以便清楚地指出您是从哪个表和哪个列中引用的.

下面是此示例的sql代码:

CREATE SCHEMA `myshop` ;CREATE table `store`.`stores` (  `code` VARCHAR(10) NOT NulL,PRIMARY KEY (`code`));CREATE table `store`.`sales` (  `ID` INT NOT NulL auto_INCREMENT,`store_code` VARCHAR(10) NOT NulL,`customer_ID` INT NOT NulL,PRIMARY KEY (`ID`));CREATE table `store`.`customers` (  `ID` INT NOT NulL auto_INCREMENT,PRIMARY KEY (`ID`));ALTER table `store`.`sales` ADD INDEX `fk_sales_customers_ID_IDx` (`customer_ID` ASC) VISIBLE;ALTER table `store`.`sales` ADD CONSTRAINT `fk_sales_customers_ID`  FOREIGN KEY (`customer_ID`)  REFERENCES `store`.`customers` (`ID`)  ON DELETE CASCADE  ON UPDATE CASCADE;ALTER table `store`.`sales` ADD INDEX `fk_sales_stores_code_IDx` (`store_code` ASC) VISIBLE;ALTER table `store`.`sales` ADD CONSTRAINT `fk_sales_stores_code_ID`  FOREIGN KEY (`store_code`)  REFERENCES `store`.`stores` (`code`)  ON DELETE CASCADE  ON UPDATE CASCADE;
总结

以上是内存溢出为你收集整理的何时使用自动增量键? 全部内容,希望文章能够帮你解决何时使用自动增量键? 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1166016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存