数据库的设计
数据库设计原则
良好的数据库设计对于一个高性能的应用程序非常重要。关系没有经过优化,数据库无法尽可能高效地运行。应该把数据库的关系和性能看作是规范化的一部分。规范化指的是为了尽量避免重复性和不一致性而组织数据结构的过程。此外,可维护性和数据的可扩展性也是重要考虑因素。
表关系具有以下三种形式:
(1):一对一关系。
(2):一对多关系。
(3):多对多关系。
规范化中用到的这一套规则叫做范式。
(1):第一范式
1>:去除重复的信息
2>:为相关的数据单独创建一个表
(2):第二范式
1>:没有依赖与主键的一部分的非主键属性。
(3):第三范式
1>:没有依赖与非主键属性的属性
MySQL中的事务和存储过程
数据库事务只是必须按照如下方式的一组查询:如果其中有一个查询没有执行完,那么所有的查询都将失败。
COMMIT——这个命令出现在事务中的一系列查询的最后,只有在所有的查询成功地执行之后才执行此命令。
ROLLBACK——当事务中的系列查询的一个或多个失败时将使用这个命令,并且把相关的表重置到事务之前的状态。
存储过程是一个用SQL编写的,存储在数据库服务器上面而不是Web服务器上的过程。从性能和可维护性考虑,在代码中使用存储过程的关键原因:
(1):更好的性能——存储过程作为一个预编译的SQL存在于数据库中,因此,一个典型的两步过程(编译和执行)变成了单步过程(执行)。
(2):易于维护——在一个地方(数据库中)维护一条语句,比在多个地方(如Web服务器的所有脚本中)维护一条语句要少花很多时间。此外,把所有这些语句存储到数据库中,而不是存储到Web服务器文档根目录下的实际的文本文件中,这就多了一条保护线,以防止有人访问你的Web服务器上的文件,这样一来,他们所拥有的只是调用存储过程的查询,而不是过程本身的逻辑。
存储过程的一个例子:
(1):存储过程中使用的分隔符:mysql> DELIMITER //
(2):创建一个基本的存储过程:mysql>CREATE PROCEDURE spl() SELECT * FROM testtable //
(3):调用存储过程:mysql>CALL spl() //