Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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

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 关系数据库组织_Php_Mysql_Sql_Phpmyadmin - Fatal编程技术网

Php 关系数据库组织

Php 关系数据库组织,php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,我正在为一个网站创建一个CMS,该网站将包含新闻和新闻页面的不同主题。所以我为每个主题(体育、文学等)创建了一个表,只是为了有一个更干净更好的数据库组织(我想)。但我最近学习了关系数据库,发现可以用更少的表(只有两个表主题和内容)和更少的代码(这很好)来完成相同的任务。但我担心的是,随着时间的推移,这个网站可能会有数百或数千个页面,在一个表中有这么多页面是否安全、干净、合适?我知道有一天有人会侵入这个网站,把那张桌子扔了,我就会失去所有的帖子。那么,有没有更干净、更安全的方法来完成这项任务,但仍

我正在为一个网站创建一个CMS,该网站将包含新闻和新闻页面的不同主题。所以我为每个主题(体育、文学等)创建了一个表,只是为了有一个更干净更好的数据库组织(我想)。但我最近学习了关系数据库,发现可以用更少的表(只有两个表主题和内容)和更少的代码(这很好)来完成相同的任务。但我担心的是,随着时间的推移,这个网站可能会有数百或数千个页面,在一个表中有这么多页面是否安全、干净、合适?我知道有一天有人会侵入这个网站,把那张桌子扔了,我就会失去所有的帖子。那么,有没有更干净、更安全的方法来完成这项任务,但仍然使用关系数据库的概念

随着时间的推移,这个网站可能会有数百页或数千页,在一个表中有这么多页是否安全、干净、合适

只要索引正确,就可以在数据库中存储数百万页

知道有一天有人会侵入这个网站,然后放弃它 桌子,我会把所有的柱子都松开

在这里使用一个或一千个表没有什么区别,如果你可以删除一个表,那么你可以删除所有表

随着时间的推移,这个网站可能会有数百页或数千页,在一个表中有这么多页是否安全、干净、合适

只要索引正确,就可以在数据库中存储数百万页

知道有一天有人会侵入这个网站,然后放弃它 桌子,我会把所有的柱子都松开


在这里使用一张或一千张表没有什么区别,如果你可以删除一张表,那么你可以删除所有的表。

简短回答:是的。正如JLo在上面的评论中所说,在设计数据库结构时,不应该主要考虑安全性;主要考虑数据存储的效率(即标准化)

如果黑客可以进入您的数据库,那么无论他们可以访问哪些表,这都是一个问题。因此,在安全方面,首先要集中精力防止注入和数据库攻击。试图将数据分成不同的表以防止黑客入侵,就像将黄金储存在十个不同的银行金库中以防止银行抢劫;这是一个错误,而且它的每一步都对你不利

相反,在安全方面:

  • 如果您的服务器代码已经编写好,请对其进行安全审计。专家可以向您指出可能会导致不必要的数据库访问的代码位,并告诉您确切原因。我要说的是,你从审计中获得的学习经验比他们提出的实际具体建议更有价值
  • 用谷歌搜索并阅读有关该主题的所有内容。这种技术是大多数数据库黑客攻击的发生方式,非常重要的是,你要更加熟悉它是什么,易受攻击的代码是什么,以及如何编写代码来防范它
  • 设置出色的冗余数据库备份系统。至少有两个独立的备份系统存储在两个不同的位置。如果一个黑客掉了你的一张桌子,那么它将成为一个主要的不便,而不是一个商业破坏者
就规范化数据结构而言:

  • 将相同形状的数据存储在相同的位置。因此,只要所有页面都可以用表中相同的列来描述/定义,就必须将它们存储在相同的表中
  • 了解Mysql性能和索引。索引不良/结构不良的数据库可能会在低流量和最大表中的一百万行以下陷入停顿;一个索引良好的数据库可以处理数十亿行。随着流量的增加,这个问题会变得更严重,所以希望您的预算也会相应增加,并允许您在这方面获得专家帮助。性能问题可能会突然出现,因此在它们破坏您的站点之前,有必要好好了解它们
  • 不要太担心行数。这里主要关心的是性能;见上文。建立关系数据库是为了处理大型表;这是他们的主要用例。使用基本的索引技术(例如,在每个外键列和通常查询的任何其他列上添加索引(但主键列已被索引,因此它们不需要索引)),您应该能够将其添加到1M-10M行,而不会出现重大性能问题
  • 找到一种方法,根据实际数据对查询进行基准测试。一些性能优化是显而易见的,但正如俗话所说。例如,在编写查询时,请进行一些基准测试,以了解更少的查询(更长/连接更多)或更多的查询(更小更快)是否更有效。一般来说,查询越少越好,但在很多情况下,你的应用程序会不同意;-)因此,请准备好基础设施,自己进行测试。添加索引时也是如此;基准测试可以让您很好地了解索引对数据库的影响,这种直觉是非常有价值的

    • 简短回答:是。正如JLo在上面的评论中所说,在设计数据库结构时,不应该主要考虑安全性;主要考虑数据存储的效率(即标准化)

      如果黑客可以进入您的数据库,那么无论他们可以访问哪些表,这都是一个问题。因此,在安全方面,首先要集中精力防止注入和数据库攻击。试图将数据分成不同的表以防止黑客入侵,就像将黄金储存在十个不同的银行金库中以防止银行抢劫;这是对你不利的