Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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
Php “SoftDeletableBehavior”,自动执行此操作。我们不从数据库中删除行的原因是可能存在与该员工相关的数据。例如,员工工资,或员工假期等。。。您还必须从引用表中删除(如果使用FK正确设置了数据库),这将破坏可能有价值的数据。如果您没有正确设置_Php_Mysql_Database_Database Design - Fatal编程技术网

Php “SoftDeletableBehavior”,自动执行此操作。我们不从数据库中删除行的原因是可能存在与该员工相关的数据。例如,员工工资,或员工假期等。。。您还必须从引用表中删除(如果使用FK正确设置了数据库),这将破坏可能有价值的数据。如果您没有正确设置

Php “SoftDeletableBehavior”,自动执行此操作。我们不从数据库中删除行的原因是可能存在与该员工相关的数据。例如,员工工资,或员工假期等。。。您还必须从引用表中删除(如果使用FK正确设置了数据库),这将破坏可能有价值的数据。如果您没有正确设置,php,mysql,database,database-design,Php,Mysql,Database,Database Design,“SoftDeletableBehavior”,自动执行此操作。我们不从数据库中删除行的原因是可能存在与该员工相关的数据。例如,员工工资,或员工假期等。。。您还必须从引用表中删除(如果使用FK正确设置了数据库),这将破坏可能有价值的数据。如果您没有正确设置FK,您将失去引用完整性。@Guillermo,如果employeeID 123在重要数据中输入FK到员工行,并且您删除了员工行123,那么他们输入的重要数据会发生什么变化?你会删除它吗?它会变得毫无价值吗?你不会用它来显示一个名字吗?我工作的


“SoftDeletableBehavior”,自动执行此操作。我们不从数据库中删除行的原因是可能存在与该员工相关的数据。例如,员工工资,或员工假期等。。。您还必须从引用表中删除(如果使用FK正确设置了数据库),这将破坏可能有价值的数据。如果您没有正确设置FK,您将失去引用完整性。@Guillermo,如果employeeID 123在重要数据中输入FK到员工行,并且您删除了员工行123,那么他们输入的重要数据会发生什么变化?你会删除它吗?它会变得毫无价值吗?你不会用它来显示一个名字吗?我工作的系统需要让员工显示历史工作。你需要将它们从选择列表中筛选出来,等等。但我知道我需要它们永远留在我的系统中。例如,如果你正在为薪资公司创建一个应用程序,我认为这会很有帮助。每个公司都希望员工的编号不同,而不关心数据库的PK。我从不让用户看到内部ID,他们用名字交易,我用IDsguid交易?你的意思是公司ID-EMPLOYEEID。。我想了想,但这不是我想要的。。我希望每家公司都觉得他们拥有系统中“他们”的一部分。。想象一下,您创建了第一名员工,然后拥有1110-7343??顺便说一句,这就是你的意思吗?我的意思正是我所说的,一个全球唯一的标识符。这样,无论雇员为哪一个公司工作(可以改变),你都有一个唯一的ID。考虑到雇员X从公司A变为公司B的情况,除非你有那个雇员的唯一标识符,否则你将有一个更新异常。如果雇员改变公司,你就不会创建并发问题。他获取新公司的新内部id和所有行,具体取决于内部id分隔符:)但是:您可以删除并重新插入员工,从而丢失所有旧数据。或者,您可以“停用”旧公司中的员工,而不是删除他,同时在新的emp记录中添加对旧员工的引用,以便您可以在不同的公司中跟踪他。唷!谢谢,我刚刚编辑了这篇文章,澄清了员工更换公司不是Escnario。而且,据我所知,@stefs,没有必要将内部_作为外键引用。他只能使用Employees.ID。内部id仅在公司和非公司系统(或另一个系统)内有效。尽管我认为如果员工可以在公司之间移动(他说没有),但最好有另一个用于内部id和公司的表格。类似于(员工ID、公司ID、内部ID、当前员工ID)。不幸的是,基于公司的“愚蠢”ID有时是一种有效的业务要求。我编辑了这篇文章,以澄清我为什么需要它,我知道这是肯定的,但我不想将此内部ID用于任何其他用途@Guillermo,添加一个新字段,它不是他们想要的愚蠢的公司编号的键或FK,一个只显示的字段,比如名称,你仍然可以保持它们的顺序。不要让愚蠢的公司逻辑破坏你的钥匙@HLGEM考虑到并发性问题,您将如何实现此要求?@mike,是的,但是。。在mysql中生成这个数字的最简单和最好的方法是什么?+1,@Guillermo,如果你必须有基于公司的ID,这是最好的方法。我认为在所有公司中使用唯一的员工ID更容易,也不重要,不要让用户看到ID,它是“内部的”。如果他们想要员工编号,请给他们另一个字段,该字段不是他们可以看到/控制的键或fk(如名称字段)。
CREATE TABLE t_identity (company INT NOT NULL PRIMARY KEY, id INT NOT NULL)
INSERT
INTO    t_identity (@company, 1)
ON DUPLICATE KEY UPDATE
SET     id = id + 1