首页  编辑  

数据库示例


数据库示例

我们创建了一个示例大学RDBMS应用程序来作为本文使用的示例应用程序和代码引用。这个应用程序是专门为揭示从Oracle 7应用程序转换到SQL Server 7.0应用程序的要点、问题和技巧而创建的。

示例大学应用程序

这个示例应用程序使用四个表来跟踪所有的大学活动。DEPT表记录了大学里所有的系。CLASS表用来记录每个系的班级。STUDENT表用来记录大学里的每个学生。GRADE表用来记录每个班的学生注册的情况。

在这个示例应用程序中,社会保险号(social security number,ssn)在STUDENT表中作为主键。DEPT表用系编号(department code,dept)作为主键,课程代号(course code ,ccode)用做CLASS表的主键。社会保险号和课程代号的结合作为GRADE表的主键。

majorSTUDENT表中定义为外部键。当选择一个major,学生必须从DEPT表选择一个有效的系编号。CLASS表中的department列也被定义为一个外部键。当课程被输入这个表时,必须伴随一个来自DEPT表的有效的系编号。

GRADE表有两个外部键。当向一个班注册一个学生时,社会保险号必须存在于SETUDENT表,课程代号必须存在于CLASS表。这样确保学生不会被注册到不存在的班级,而班级也不会被添入不存在的学生。

示例应用程序和代码引用

下面这些示例应用程序在本章中被引用。

  • Orademo.cpp

用来访问Oracle 7.3上的示例大学表的Oracle ODBC应用程序。该程序是转换过程的起点。它允许用户对示例大学应用程序执行数据登录和过程报表。

  • Ssdemo.cpp

用ODBC写的SQL Server应用程序。该程序是转换过程的终点。所有的Oracle SQL命令、过程、包和函数都被转换成SQL Server Transact-SQL语句和过程。在这个程序中列举了许多SQL Server 7.0具有的优点。

  • Common.cpp

可以在Oracle和SQL Server上工作的ODBC应用程序。要连接到Oracle或者SQL Server上,用户只需要简单的提供ODBC数据源名字(ODBC Data Source Name,DSN)。然后程序登录到请求的RDBMS。该程序提供了一个极好的示例,说明在开发多数据库程序中使用的编程技术。

  • Orauser.sql

创建示例Oracle程序需要的数据库用户账号和数据库角色。

  • Oratable.sql

创建示例Oracle程序需要的表和视图。

  • Oraproc.sql

创建示例Oracle程序需要的Oracle存储过程、函数和包。

  • Oracommn.sql

创建支持Common.cpp程序需要的所有额外的Oracle数据库对象。

  • Oradata.sql

把示例应用程序装载到示例Oracle程序需要的表中。

  • Ssuser.sql

创建示例SQL Server程序需要的SQL Server用户账号和数据库角色。

  • Sstable.sql

创建示例SQL Server程序需要的SQL Server表和视图。

  • Ssproc.sql

创建示例SQL Server程序需要的存储过程。

  • Sscommon.sql

创建支持Common.cpp应用程序需要的所有额外的SQL Server数据库对象。

  • Ssdata.sql

把示例应用程序需要的数据装载到示例SQL Server程序需要的表中。

运行提供的脚本

示例脚本必须以下列顺序运行以在目标RDBMS平台上创建示例应用程序。

要运行那些针对SQL Server数据库的脚本,你必须首先创建一个应用程序数据库(叫做USER_DB)以使这些脚本和示例SQL Server程序可以工作。这个数据库可以用SQL Server Enterprise Manager或者Transact-SQL CREATE DATABASE语句创建。创建完成以后,以system administrator身份(sa SQL Server用户,或者是sysadmin固定服务器角色成员)登录到SQL Server 7.0,使用SQL Server Query Analyzer,并且按照前面指出的顺序运行脚本。

要运行那些针对Oracle 7.3数据库的脚本,示例脚本假设USER_DATATEMPORARY_DATA表空间存在。它们通常是在缺省的Oracle 7.3数据库安装过程中创建的。如果这些表空间不存在,你必须加上它们或者修改提供的示例脚本以使用其它表空间。

确认这些表存在以后,以SYSTEM账号登录到SQL*Plus。如果口令不是缺省值MANAGER,修改Oracle SQL脚本中的口令。

RDBMS用户账号

为这个应用程序创建了三个账号:

  • STUDENT_ADMIN

此账号是STUDENT和GRADE表的管理权所有者。

  • DEPT_ADMIN

此账号是DEPT和CLASS表的管理权所有者。

  • ENDUSER1

此账号是一个只能查询STUDENT、GRADE、DEPT和CLASS表的账号。

image011.gif (6.6KB)
image012.gif (2.9KB)