Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103782172
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Mysql/postgreSQL

2008-04-19 23:22:11

 

  视图,就是把数据库中单个表或多个用 JOIN 连接起来的表中的数据,通过提取并生成到一个新窗口的方式提供给用户察看的一种功能。数据库开发和管理人员广泛使用视图功能主要基于如下两个原因:

  对数据库安全的管理

  -视图可以通过隐藏元表中的某些敏感信息列来帮助保护敏感数据,这些元表可以是单个实际表,或者是JOIN 表,通过限制从这些元表中可以返回的实际的数据行,或解密已保存在磁盘上的加密数据来实现对数据库的安全 管理。

  优化数据库的性能

  -视图可以用来帮助调优数据库性能,就是通过预定义一个微调过的 JOIN 条件建立的多表视图,或通过限制只允许少量数据从巨大的数据库表中返回来实现。

  MySQL5 所支持的视图功能在一定条件下可以实现使 用视图来执行某些 UPDATE 语句,使那些数据可以得到更新,下面举例说明:

  mysql> select * from customer;
  +-------------+---------------------+--------------------+------------------+
  | customer_id | customer_first_name | customer_last_name | customer_ssn |
  +-------------+---------------------+--------------------+------------------+
  | 1      | fred        |        smith | ?Q,U? ¢?╠?4╨??| 
  +-------------+---------------------+--------------------+------------------+ 
  1 row in set (0.03 sec)

  mysql> create view v_customer as t_name,
  -> select customer_id, customer_first_name, customer_last_name
  -> aes_decrypt(cusomer_ssn,'password') as customer_ssn
  -> from customer; 
  Query OK, 0 rows affected (0.03 sec)

  mysql> select * from v_customer;
  +-------------+---------------------+--------------------+--------------+
  | customer_id | customer_first_name | customer_last_name | customer_ssn |
  +-------------+---------------------+--------------------+--------------+
  | 1 | fred | smith | 456097234 |
  +-------------+---------------------+--------------------+--------------+

  从上例可以看到,通过使用解密函数 aes_decrypt() 得到指定的 customer_ssn 的值并利用创建视图的方式把该值显示出来,而且 并未破环原始表 对其他 customer_ssn 值在磁盘或数据库的加密式存放。这样管理人员就保证敏感信息不会被随意破坏。
阅读(634) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~