Php 为什么在已经创建的表中添加列会被认为是不好的做法?
我正在研究ALTER过程,将一列添加到已经创建的表中,许多答案都指出动态添加列并不是一种好的做法。Php 为什么在已经创建的表中添加列会被认为是不好的做法?,php,mysql,Php,Mysql,我正在研究ALTER过程,将一列添加到已经创建的表中,许多答案都指出动态添加列并不是一种好的做法。 我正试图创建一个额外的列来监控某一天的出勤情况,所以相对于这个目标来说,更改表仍然是一种糟糕的做法,因为我真的看不到解决方法吗?数据库应该在项目一开始就创建,并且应该保持原样。当您创建查询(例如INSERT)时,如果您不使用命名列,它可能会破坏您的系统 比如说 INSERT INTO `table` VALUES('a','b','c'); 而不是 INSERT INTO `table`(col
我正试图创建一个额外的列来监控某一天的出勤情况,所以相对于这个目标来说,更改表仍然是一种糟糕的做法,因为我真的看不到解决方法吗?数据库应该在项目一开始就创建,并且应该保持原样。当您创建查询(例如INSERT)时,如果您不使用命名列,它可能会破坏您的系统 比如说
INSERT INTO `table` VALUES('a','b','c');
而不是
INSERT INTO `table`(column1, column2, column3,...)
VALUES ('a', 'b', 'c',...)
有很多行代码可能会崩溃。大多数是基于列编号而不是名称的。更改数据库可能会产生很多问题,如果系统相当大,则很难找到这些问题
在表中创建关系比创建大量列更好
此外,您还应该了解数据库规范化,它“是组织关系数据库的字段和表以最小化冗余和依赖性的过程。”数据库应该在项目一开始就创建,并且应该保持原样。当您创建查询(例如INSERT)时,如果您不使用命名列,它可能会破坏您的系统 比如说
INSERT INTO `table` VALUES('a','b','c');
而不是
INSERT INTO `table`(column1, column2, column3,...)
VALUES ('a', 'b', 'c',...)
有很多行代码可能会崩溃。大多数是基于列编号而不是名称的。更改数据库可能会产生很多问题,如果系统相当大,则很难找到这些问题
在表中创建关系比创建大量列更好
此外,您还应该了解数据库规范化,它“是组织关系数据库的字段和表以最小化冗余和依赖性的过程。”这不是随意做的事情,需要计划,但如果您有不断变化的需求或只是忘记了什么,无论如何:添加列 从不添加专栏根本不是什么好建议,也不现实。您应该能够
- 适应不断变化的需求
只有当应用程序中断或业务破产时,需求才会停止更改 - 保持数据库正常化
您可以决定添加一个引用现有表的整个表,而不是添加一个列,以避免这种被称为错误的做法。请不要 - 修复规范/实施中的错误
我们都是人
- 需要测试
- 可以轻松破坏现有的应用程序
- 需要测试
- 需要计划
- 需要测试
- 适应不断变化的需求
只有当应用程序中断或业务破产时,需求才会停止更改 - 保持数据库正常化
您可以决定添加一个引用现有表的整个表,而不是添加一个列,以避免这种被称为错误的做法。请不要 - 修复规范/实施中的错误
我们都是人
- 需要测试
- 可以轻松破坏现有的应用程序
- 需要测试
- 需要计划
- 需要测试
- 您谈论的是将列添加到已经存在的表中,但实际上您并不是在应用程序中动态地执行此操作,而是在更新应用程序代码时执行一次。在部署期间。只要保持应用程序和数据库结构同步,就可以了
- 您所说的是,每当发生某种情况或数据处于需要添加表的状态时,从应用程序runtime添加一列。这很少是一件好事。在CMS中,在某些情况下,您创建的内容类型预计不会更改,并且很少添加,这可能是正常的。然而,大多数情况下,这表明设计不好,会导致性能和复杂性问题
- 您谈论的是将列添加到已经存在的表中,但实际上您并不是在应用程序中动态地执行此操作,而是在更新应用程序代码时执行一次。在部署期间。只要保持应用程序和数据库结构同步,就可以了
- 您所说的是,每当发生某种情况或数据处于需要添加表的状态时,从应用程序runtime添加一列。这很少是一件好事。在CMS中,在某些情况下,您创建的内容类型预计不会更改,并且很少添加,这可能是正常的。然而,大多数情况下,这表明设计不好,会导致性能和复杂性问题
- 在布局中进行更改的数据描述语言(DDL)。这些主要是
,CREATE TABLE
等。这些更改不应在应用程序正常运行期间进行,而应仅在安装期间进行ALTER TABLE
- 理解你的问题的方法太多了
有太多的方法来理解你的问题
这取决于您希望何时进行这些更改 如果由于系统的扩展功能而在过程中发生更改,则这些更改是正常的 但是,如果在使用应用程序的过程中不断地进行更改,那就是糟糕的设计 一般来说,您会区分