我有一个规范的数据库,外键/主键给一个数据库.
我计划使用PHP访问这个数据库,用于基本的前端/后端显示.现在,我的问题来自这两个示例查询:
CREATE VIEW `view` AS SELECT functiondetails.Detail,functionnames.ID,functionnames.FunctionName,functionnames.Catogory FROM functiondetails INNER JOIN functionnames ON functiondetails.AsscID = functionnames.ID
要么
SELECT functiondetails.Detail,functionnames.Catogory FROM functiondetails INNER JOIN functionnames ON functiondetails.AsscID = functionnames.ID
查询中没有错误,因为我一直都没有运行,但我的整体问题是这样的:
如果我打算不断地从我的数据库中引用很多信息.创建视图不会更容易,然后会随着新添加的信息更新,或者更好的做法是在我的实际PHP上进行第二个查询.示例:
$Query = $MysqLi->prepare(" SELECT functiondetails.Detail,functionnames.Catogory FROM functiondetails INNER JOIN functionnames ON functiondetails.AsscID = functionnames.ID ") $Query->execute(); $Results = $Query->fetch_results(); $Array = $Results->fetch_array(MysqLI_ASSOC);
还是从我的角度选择?
$Query = $MysqLi->prepare("SELECT * FROM `view`"); $Query->execute(); $Results = $Query->fetch_results(); $Array = $Results->fetch_array(MysqLI_ASSOC);
Views是
abstraction layer,创建抽象层的通常原因是为您提供一个使您的生活更轻松的工具.
使用视图的一些重要优点包括:
>安全
您可以控制谁拥有访问权限,而无需授予他们对基础表的访问权限.
>澄清
通常情况下,列标题的描述不一样.视图允许您添加清晰的返回数据.
>表现
表现明智,意见不会对你造成负面伤害.但是,您不会因为MysqL不支持@L_404_3@而使用视图来获得性能提升.>轻松编码视图可以用于重复使用复杂的查询,用户错误的空间较小.>易于管理当您的表格模式发生变化时,它将使您的生活更轻松.例如,假设您有一张包含您要出售的房屋的房屋,homes_for_sale,但后来您决定要让该桌子处理您曾经出售/出售的所有房屋,目前都是出售所有房屋.显然,新表的模式与第一个方案有很大的不同.如果您从homes_for_sale中提取了大量查询,那么现在您必须遍历所有代码并更新所有查询.这将打开您的用户错误和管理噩梦.更好地解决这个变化的方法是用相同名称的视图替换表.该视图将返回与原始表完全相同的模式,即使实际模式已更改.然后,如果需要,您可以按照自己的速度浏览代码,并更新查询调用.