Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 当修改表1时,保留两个相关表(使用自动增量主键)以具有相同的自动增量ID最大值是否是一种良好做法?_Mysql_Sql_Database - Fatal编程技术网

Mysql 当修改表1时,保留两个相关表(使用自动增量主键)以具有相同的自动增量ID最大值是否是一种良好做法?

Mysql 当修改表1时,保留两个相关表(使用自动增量主键)以具有相同的自动增量ID最大值是否是一种良好做法?,mysql,sql,database,Mysql,Sql,Database,让我们看看这个例子,我们有两个相互关联的表: Table1 textID - text 1 - love.. 2 - men... ... Table2 rID - textID 1 - 1 2 - 2 ... 这意味着表1中的最大自动增量ID仍为100,但表2中的最大自动增量ID已达到200 如果用户多次修改会怎样?如果他们这样做,那么表2可能会没有记录了?我们可以使用BigInt,但这会让应用程序运行得更慢吗 注意:如果您在修改表1时花时间编写程序来修改表2中的

让我们看看这个例子,我们有两个相互关联的表:

Table1 textID - text 1 - love.. 2 - men... ... Table2 rID - textID 1 - 1 2 - 2 ... 这意味着表1中的最大自动增量ID仍为100,但表2中的最大自动增量ID已达到200

如果用户多次修改会怎样?如果他们这样做,那么表2可能会没有记录了?我们可以使用BigInt,但这会让应用程序运行得更慢吗

注意:如果您在修改表1时花时间编写程序来修改表2中的记录,那么这将非常困难&因此很容易出错。但是如果您只是清除旧记录并将新记录插入表2中,那么编程就容易多了&因此您的程序更简单,更不容易出错


那么,在修改表1时,使用自动增量PK保留两个相关表以使其具有相同的自动增量ID最大值,这是一个好做法吗?

糟糕的想法。如果键应该同步,那么实际上是一个键,所以将两个表合并到一个表中。否则,它们是独立的表-保持这样。关系是1个rID将有1个且只有1个textID,但1个textID可以有几个rID。大不了。因此,表1和表2之间存在一对多关系。在表2中定义外键。继续前进。继续前进意味着什么?那么,当表1中的记录被修改时,我应该删除、插入或更新表2中的记录吗?删除和插入更容易编程,但更新相当困难。继续前进意味着做一些其他富有成效的事情。您不应该更新密钥。这是一个键-除了永久标识行之外,不要将其用于任何其他用途。谷歌代理键-这就是你得到的,这是通常的方法。 Table2 rID - textID 101 - 1 102 - 2 ... 200 - 100