Oracle 学习笔记

2004-06-28lsnrctl start LISTENER    手工启动监听器(Listener)Oracle安装的默认HTTP 服务器可以通过以下 URL 进行访问:http://localhost:7778https://localhost:444318:27 2004-08-14用 select userenv('LANGUAGE') from dual;得到客户端环境的字符集 14:32 2004-9-2A表和B表是N..N的关系,中间有一个关系表R, A表中的部分数据有可能不在R表和B表中有对应的记录, 现在需要把A表中的数据取出,如果有的话,同时包含B和R的数据,否则B和R的列置为空.select...
2004-06-28

lsnrctl start LISTENER    手工启动监听器(Listener)

Oracle安装的默认HTTP 服务器可以通过以下 URL 进行访问:
http://localhost:7778
https://localhost:4443

18:27 2004-08-14
用 select userenv('LANGUAGE') from dual;得到客户端环境的字符集

14:32 2004-9-2
A表和B表是N..N的关系,中间有一个关系表R, A表中的部分数据有可能不在R表和B表中有对应的记录, 现在需要把A表中的数据取出,如果有的话,同时包含B和R的数据,否则B和R的列置为空.

select *
  from a
  left join r
    on a.id = r.id_a
  left join b
    on b.id = r.id_b

注意: sql中join各表的顺序很重要,当使用基本表编写sql时,一般很少犯错误,因为顺序搞错很可能编译不通过,但在使用拉平的视图编写sql时就可能导致潜在的问题,比如可能把join r和b的顺序弄反.

select *
  from a
  left join b
    on ...
  left join r
    on r.id_a = a.id
   and r.id_b = b.id

这样编写,对于r表中没有对应记录的数据就会产生笛卡儿乘积.


11:22 2004-9-28
取得一个给定日期的星期数,并使用指定的格式返回:
to_char( sysdate, 'day', 'nls_date_language=American' )

若需要锁定记录可是用:
select * from table for update 语句,当前session会获得一个锁,在提交之前或者回滚之前,其他session不能修改此表.


14:27 2004-9-29
用同义词方法,使用户可以像另一个对象的拥有者一样操作这个对象,不用加用户名前缀 user.table1

SQL>CREATE PUBLIC SYNONYM user1.DEPT FOR SCOTT.DEPT;
SQL>connect user1/pass1;
SQL>select * from dept; <- 引用 scott.dept 表

能不能更进一步?>

可以

<我的表很多,每个表都要建一次同义词?>

没有必要

<能不能对用户,而不是具体的表,建立同义词?>
不行

更简单的办法:

用户B登录,先执行:
alter session set current_schema=a
select * from table1 就是 select * from a.table1


15:25 2004-9-29
Oracle 8i 文档中对临时表的描述:
 Temporary Tables

In addition to permanent tables, Oracle can create temporary tables to hold session-private data that exists only for the duration of a transaction or session.

The CREATE GLOBAL TEMPORARY TABLE command creates a temporary table which can be transaction specific or session specific. For transaction-specific temporary tables, data exists for the duration of the transaction while for session-specific temporary tables, data exists for the duration of the session. Data in a temporary table is private to the session. Each session can only see and modify its own data. DML locks are not acquired on the data of the temporary tables. The LOCK command has no effect on a temporary table as each session has its own private data.

A TRUNCATE statement issued on a session-specific temporary table truncates data in its own session; it does not truncate the data of other sessions that are using the same table.

DML statements on temporary tables do not generate redo logs for the data changes. However, undo logs for the data and redo logs for the undo logs are generated. Data from the temporary table is automatically dropped in the case of session termination, either when the user logs off or when the session terminates abnormally such as during a session or instance crash.

You can create indexes for temporary tables using the CREATE INDEX command. Indexes created on temporary tables are also temporary and the data in the index has the same session or transaction scope as the data in the temporary table.

You can create views that access both temporary and permanent tables. You can also create triggers on temporary tables.

The EXPORT and IMPORT utilities can export and import the definition of a temporary table. However, no data rows are exported even if you use the ROWS option. Similarly, you can replicate the definition of a temporary table but you cannot replicate its data.



GLOBAL TEMPORARY关键字:

GLOBAL TEMPORARY    

specifies that the table is temporary and that its definition is visible to all sessions. The data in a temporary table is visible only to the session that inserts the data into the table.

A temporary table has a definition that persists the same as the definitions of regular tables, but it contains either session-specific or transaction-specific data. You specify whether the data is session- or transaction-specific with the ON COMMIT keywords (below).

For more information on temporary tables, please refer to Oracle8i Concepts.  

 
    

Restrictions:

    * Temporary tables cannot be partitioned, index-organized, or clustered.

    * You cannot specify any referential integrity (foreign key) constraints on temporary tables.

 

 
    

    * Temporary tables cannot contain columns of nested table or varray type.

    * You cannot specify the following clauses of the LOB_storage_clause: TABLESPACE, storage_clause, LOGGING or NOLOGGING, MONITORING or NOMONITORING, or LOB_index_clause.

 

 
    

    * Parallel DML and parallel queries are not supported for temporary tables. (Parallel hints are ignored. Specification of the parallel_clause returns an error.)

    * You cannot specify the segment_attributes_clause, nested_table_storage_clause, or parallel_clause.

    * Distributed transactions are not supported for temporary tables.

on commit 关键字:
ON COMMIT  
    

can be specified only if you are creating a temporary table. This clause specifies whether the data in the temporary table persists for the duration of a transaction or a session.  

 
    

DELETE ROWS  
    

specifies that the temporary table is transaction specific (this is the default). Oracle will truncate the table (delete all its rows) after each commit.  

 
    

PRESERVE ROWS  
    

specifies that the temporary table is session specific. Oracle will truncate the table (delete all its rows) when you terminate the session.


12:56 2004-10-8
plsql中可以使用for c in (select...) loop 语句,select后面可以跟一个或多个列名,并会把值自动付给变量c,变量c的类型为rowtype,
在循环体内可以通过如下方式引用:

for c in (select colno,cname from sys.col) loop
  dbms_output.put_line( c.colno || ': ' || c.cname );

end loop;


14:05 2004-10-13
oracle 存储过程中,当在返回类型的cursor中使用临时表,可以不用指定on commit关键字,外部程序通过ado访问都可以取到记录集。


17:15 2004-10-14
vc程序通过ado访问数据库,调用存储过程,如果在程序中使用了odbc数据源(dsn)则会有一些限制,比如:调用即含有cursor又含有返回值的存储过程会发生返回值无法取出。应直接使用connection对象获得数据库连接,可以避免此问题。


14:54 2004-10-15

to_char(sysdate, 'hh:mi:ss.ssss')
to_char(sysdate, 'hh:mi:ss.sssss')
是有效的,四个以下或者5个以上的's'都是非法的。

18:38 2004-10-18
可以在cursor的sql中使用order by子句,但如果sql当中含有 sequence的调用,则不允许使用order by子句。

21:24 2004-10-19
min()与max() 函数将会把重复的值合并掉,比如数据库中有多条记录col列的最小值为1,则min(col)会返回:1,与min(distinct col)返回结果相同.


17:02 2004-10-20
plsql 的记录集操作符:

UNION      All rows selected by either query.  
    两个合并重复记录的结果集,其交叉部分只出现一次.

UNION ALL      All rows selected by either query, including all duplicates.  
        两个未合并重复记录的结果集,不合并交叉的部分.(不合并任何部分)

INTERSECT      All distinct rows selected by both queries.  
        两个合并重复记录的结果集,只返回交叉部分.

MINUS      All distinct rows selected by the first query but not the second.  
    两个合并重复记录的结果集,从第一个结果集中去除交叉的部分.



select * from test t1 where b = (select max(b) from test t2 where t1.a = t2.a);
select a,max(b) from test t1 group by a;


16:14 2004-10-21
round(d, fmt) 函数返回一个日期以给定最小单位的最近时间.比如:
round(sysdate, 'dd') 返回下一日的日期
round(sysdate, 'yyyy') 返回下一年开始的日期
round(sysdate, 'mi') 返回下一分钟的时间

后面的fmt 可以为: yyyy, mm, dd, hh, mi, 不可以为秒ss.


oracle 中的时间分为12小时制和24小时制,当为二十四小时制时,00点00分为一天的起始。23点59分..为一天的结束,不允许出现24点的格式。
在12小时制当中,当然不允许出现大于12的小时数,比如13点。同时也不允许出现00点。24小时制中00点的时间被换算为12点,同时标注上午。即12小时制当中,上午12点00分是一天的开始,下午12点59分...是一天的结束。


14:47 2004-10-25
一个查询统计sql语句。表test中有,a,b,c三列,a为主键列,b为区分1,c为区分2,根据b,c建立一个二维表,各个块上的值为满足此两种区分条件的记录数目。
select t1.c,
       count(t2.a) n1,
       count(t3.a) n2
  from test t1
  left join test t2
    on t2.a = t1.a
   and t2.b = 1
  left join test t3
    on t3.a = t1.a
   and t3.b = 2
 group by (t1.c)


在存储过程中使用select 语句从临时表(commit on delete)中向应用程序返回cursor前,不能在存储过程内部使用commit语句清除临时表的数据,否则,应用程序得不到有效的cursor。


15:38 2004-10-26
使用 select ... for update 进行排他。

select ... for update;

update ...

commit;


20:26 2004-11-1
select id, num from t1 group by rollup(id);
可以在最后一行生成一个num的合计。

17:10 2004-11-2
如果采用 select id, count(decode(c1,'a', 1), count(decode(c2, 'b', 1), sum(1) from t1 group be rollup(id);
当decode中的等式右边的值都互斥时,sum(1)可以起到对列进行汇总的作用.
count(decode(c1,'a', 1) + count(decode(c2, 'b', 1) 最终会等于sum(1)

原理就是count(1)只对非空列进行计数,而sum(1)对每一列都产生了一个计数,只要第一个count与第二个count之间不产生重复计数,则上述等式成立.
如果把sum(1)变为sum(2)或者sum(0.5),则还会可以使总计的值是实际值的某个倍数.

但这样的语句就不会成立:
select dummy,1,2,3,4,sum(1) from dual group by rollup(dummy);

DUMMY          1          2          3          4     SUM(1)
----- ---------- ---------- ---------- ---------- ----------
X              1          2          3          4          1
               1          2          3          4          1


14:49 2004-11-5
在plsql的trigger中,可以使用when子句指定在何种条件下才触发trigger,但必须用在行级别的trigger(使用for each row),不能用在表级别的trigger.
而且不能够在when子句中调用用户自定义的函数. 在when子句中引用new 或者old不需要加":"前缀.

The expression in a WHEN clause must be a SQL expression, and it cannot include a subquery. You cannot use a PL/SQL expression (including user-defined functions) in the WHEN clause.


使用语句判断当前触发trigger的是哪类事件:
IF DELETING THEN
IF UPDATING THEN
IF INSERTING THEN

或者IF UPDATING( 'mycol')来判断是否更新了某列。
或者: after update of mycol on table

如果一个表名是new或者old,则可以在定义trigger时使用以下子句,避免冲突
BEFORE UPDATE ON new
REFERENCING new AS Newest

在代码中可以使用:Newest引用表new.


19:01 2004-11-10
使用utl_file包写入超过1024个字符数据时,需要在fopen方法中增加参数声明最大的size,如允许最大5000个字符:
utl_file.fopen( 'd:', 'ora.log', 'a', 5000 );

数据库设计中英文术语表

索引A B C D E F G H I J K L M N O P...

索引

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

正文

  1. Access method(访问方法):此步骤包括从文件中存储和检索记录。
  2. Alias(别名):某属性的另一个名字。在SQL中,可以用别名替换表名。
  3. Alternate keys(备用键,ER/关系模型):在实体/表中没有被选为主健的候选键。
  4. Anomalies(异常)参见更新异常(update anomalies)
  5. Application design(应用程序设计):数据库应用程序生命周期的一个阶段,包括设计用户界面以及使用和处理数据库的应用程序。
  6. Attribute(属性)(关系模型):属性是关系中命名的列。
  7. Attribute(属性)(ER模型):实体或关系中的一个性质。
  8. Attribute inheritance(属性继承):子类成员可以拥有其特有的属性,并且继承那些与超类有关的属性的过程。
  9. Base table(基本表):一个命名的表,其记录物理的存储在数据库中。
  10. Binary relationship(二元关系):一个ER术语,用于描述两个实体间的关系。例如,panch Has Staff。
  11. Bottom-up approach(自底向上方法):用于数据库设计,一种设计方法学,他从标识每个设计组建开始,然后将这些组件聚合成一个大的单元。在数据库设计中,可以从表示属性开始底层设计,然后将这些属性组合在一起构成代表实体和关系的表。
  12. Business rules(业务规则):由用户或数据库的管理者指定的附加规则。
  13. Candidate key(候选键,ER关系模型):仅包含唯一标识实体所必须得最小数量的属性/列的超键。
  14. Cardinality(基数):描述每个参与实体的可能的关系数目。
  15. Centralized approach(集中化方法,用于数据库设计):将每个用户试图的需求合并成新数据库应用程序的一个需求集合
  16. Chasm trap(深坑陷阱):假设实体间存在一根,但某些实体间不存在通路。
  17. Client(客户端):向一个或多个服务器请求服务的软件应用程序。
  18. Clustering field(群集字段):记录总的任何用于群集(集合)航记录的非键字段,这些行在这个字段上有相同的值。
  19. Clustering index(群集索引):在文件的群集字段上定义的索引。一个文件最多有一个主索引或一个群集索引。
  20. Column(列):参加属性(attribute)。
  21. Complex relationship(复杂关系):度数大于2的关系。
  22. Composite attribute(复合属性):由多个简单组件组成的属性。
  23. Composite key(复合键):包含多个列的主健。
  24. Concurrency control(并发控制):在多用户环境下同时执行多个十五并保证数据完整性的一个DBMS服务。
  25. Constraint(约束):数据库不允许包含错误数据的一致性规则。
  26. Data conversion and loading(数据转换和加载):数据库应用生命周期重的一个阶段,包括转换现有数据到新数据库中以及酱下耨应用程序转换到新的数据库上运行。
  27. Data dictionary(数据字典):参见系统目录(system catalog)。
  28. Data independence(数据独立性):使用数据的应用程序的数据描述部分。这意味着,如果将新的数据结构添加到数据库中,或者数据库中现有的结构被修改了,那么使用此数据库的就会受到影响,除非应用程序不直接依赖于被修改的部分。
  29. Data model(数据模型):描述数据、数据间关系以及数据的约束的概念的一个集成的集合。
  30. Data redundancy(数据冗余):参见冗余数据(redundant data)。
  31. Data security(数据安全):包括对数据库对象(如表和视图)的访问和使用以及用户可以在这些对象上实施的操作。
  32. Database(数据库):是逻辑上相关的数据(以及这些数据的描述)的一个共享的集合,用于解决公司对信息的需求。
  33. Database design(数据库设计):数据库应用生命周期中的一个阶段,包括创建一个支持公司的操作和目标的数据库的设计。
  34. Database integrity(数据库完整性):指存储数据的正确定和一致性。完整性通常用约束来表达。
  35. Database Management System,DBMS(数据库管理系统):一个能够让用户定义、创建和维护数据库并控制对数据库的访问的软件系统。
  36. Database planning(数据库规划):能尽可能有效的实现数据库应用的各阶段的管理活动。
  37. Database server(数据库服务器):同服务器。
  38. DBMS engine(DBMS引擎):同服务器。
  39. DBMS selection(DBMS选择):数据库应用生命周期中的一个阶段,包括选择一个合适的DBMS来支持数据库应用。
  40. Degree of a relationship(关系的度):一个关系中参与的实体的个数。
  41. Denormalization(反规范化):形式上,这个术语指的是对基本表结构的修改,这样新的表比原始的表的规范化程度要低。但也可以用此属于更宽泛地形容将两个表和并成一个新表的情形,而这个新表与原来的表具有相同的范式,但比原表包含更多的空值。
  42. Derived attribute(派生属性):表示其值可以从一个相关属性和属性集的值派生得到的属性,这个属性在实体中不是必须的。
  43. Design methodology(设计方法学):一种结构化的方法,它使用过程、工具和文档来支持和简化设计过程。
  44. Disjoint constraint(无连接约束):描述子类的成员间的关系,并指明超类某个成员是否有可能成为一个或多个子类的成员。
  45. Domain(域):一个或多个属性的取值范围。
  46. Entity(实体):具有相同性质的对象的集合,它是由用户或公司标识并可独立存在的。
  47. Entity integrity(实体完整性):在一个基本表中,主健列的值不能为空。
  48. Entity occurrence(实体出现):实体中的一个唯一可标识的对象。
  49. Entity-Relationship model(实体关系模型):公司的实体、属性和关系的详细逻辑表示。
  50. Fact-finding(事实发现):使用诸如面谈和提问等技术收集关于系统的事实、需求和性能的形式化过程。
  51. Fan trap(扇形陷阱):但从第三个实体扇出的两个实体有1:*关系时出现扇形陷阱,但这两个实体在他们之间应该有直接关系以提供必要的信息。
  52. Field(字段):同元组(Tuple)。
  53. File(文件):存储在副主存储器中的相关记录的一个命名集合。
  54. File-based system(基于文件的系统):一个文件集合,用来管理(创建、插入、删除、更新和检索)一个或多个文件中的数据,并产生基于这些文件中的数据的应用(通常是报表)。
  55. File organization(文件组织):当文件存储在磁盘上时,对文件中的记录的安排方式。
  56. First normal form(1NF,第一范式):表中的每个列的交叉处以及记录包含切进包含一个值的表。
  57. Foreign key(外健):一个表中的一个列或者多个列的集合,这些列匹配某些其他(也可能是同一个)表中的候选键。
  58. 4GL, Fourth-Generation Language(第四代语言):一种非过程化语言,比如SQL,他只需要用户定义必须完成什么操作,4GL负责将所进行的操作翻译成如何实现这些操作。
  59. Full functional dependency(完全函数依赖):一个列在功能上依赖于复合主健,但不依赖于主健的任何一个子集的条件。
  60. Functional dependency(函数依赖):描述表中列之间的关系。
  61. Generalization(泛化):通过标识实体间的公共特征使实体间差别最小化的过程。
  62. Generalization hierarchy(泛化层次结构):同类型层次(type hierarchy)。
  63. Global data model(全局数据模型):代表整个公司(和被模型化的公司的一部分)的数据模型。
  64. Implementation(实现):数据库应用生命周期中的一个阶段,包括数据库和应用程序设计的物理实现。
  65. Index(索引):一种允许DBMS将特定的记录更快的放置到文件中,从而加快对用户查询的响应的数据结构。
  66. Infomation system(信息系统):能够在整个公司范围内收集、管理、控制和分发数据/信息的资源。
  67. Inheritance(继承):参见属性继承(attribute inheritance)。
  68. Integrity constaints(完整性约束):防止出现数据库中的数据不一致的约束。
  69. IS-A hierarchy(IS-A层次结构):同类型层次结构(type hierarchy)。
  70. Local logical data model(局部逻辑数据模型):代表特定用户视图或用户视图的组合的数据模型。
  71. Logical database design(逻辑数据库设计):基于特定的数据模型构建公司的数据的模型的过程,但不依赖于特定的DBMS以及其他的物理条件。
  72. Meta-data(元数据):关于数据的数据,参见系统目录(system catalog)。
  73. Mision objective(使命目标):标识数据库必须支持的特定任务。
  74. Mission statement(使命语句):定义数据库应用程序的主要目标。
  75. Multiplicity(多样性):定义与某个相关实体的一次出现有关的实体的出现数目。
  76. Multi-valued attribute(多值属性):为一个实体的出现保存多个值的属性。
  77. Nonkey attribute/column(非键属性/列):不是键的一部分的属性/列。
  78. Normal forms(范式):规范化过程的一个阶段。前三个范式分别为第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。
  79. Normalization(规范化):一种产生带有需要的特性的技术,这种特性能支持用户和公司的需求。
  80. Null(空值):表示当前不知道或对于这条记录来说不可使用的一个列的值。
  81. Operational maintenance(操作维护):数据库应用生命周期的一个阶段,包括监视和维护系统安装后的运行。
  82. Participation constraint(参与约束,EER模型):确定超类中的每个出现是否必须作为子类的一个成员进行参与。
  83. Participation constraint(参与约束,ER模型):确定是否所有或者仅仅是某些实体出现参与到关系中。
  84. Physical database design(物理数据库设计):在二级存储上产生数据库实现的描述的过程,它描述基本表、文件的组织、用于获得有效访问的索引以及所有与完整性约束和安全性限制有关的说明。
  85. Primary index(主索引):在文件的有序键字段上构建的索引。一个文件最多可以有一个主索引或一个群集索引。
  86. Primary key(主健,ER模型):用来标识每个实体的出现的候选键。
  87. Primary key(主健,关系模型):在一个表中用来标识记录唯一性的候选键。
  88. Privileges(权限):允许用户在给定基本表和视图上执行的操作。
  89. Prototyping(原型):数据库的应用程序生命周期的一个阶段,包括勾践数据库应用程序的工作模型。
  90. Query-by-Example(QBE):一种用于关系型DBMS的非过程化的数据库语言。QBE是一个图形化的“点-按”查询数据库的方法。
  91. RDBMS:关系型DBMS。
  92. Record(记录):同元组(Tuple)。
  93. Recovery control(恢复控制):当时百事,将数据库还原到正确状态的过程。
  94. Rcursive relationship(递归关系):一种关系,挡同一个实体在不同的角色中参与多次时就会出现递归关系。例如Staff Supervises Staff。
  95. redundant data(冗余数据):在多个表中存储的重复数据。
  96. Referential integrity(参照完整性):如果一个表中存在外健,则外健值必须匹配主表中的某些记录的候选键的值。
  97. Relation(关系):一个关系是一张表,它也有列和行。
  98. Relational model(关系模型):以表(或关系)的形式表示数据的数据模型。
  99. Relational database(关系数据库):规范化表的集合。
  100. Relation (关系):实体间有意义的关系。
  101. Relationship occurrence(关系出现):两个实体出现之间的唯一可标识的联系。
  102. Requirements collection and analysis(需求收集于分析):数据库应用程序生命周期的一个阶段,包括收集和分析数据库应用程序所要支持的关于公司的信息,并使用这些信息来标识新的数据库应用需求。
  103. Row(行):同元组(Tuple)。
  104. Second normal form(第二范式):一个已经是第一范式的表,同时满足所有的非主健列只能从构成主健的全部列中获得。
  105. Secondary index(二级索引):在数据文件的非有序字段上定义的索引。
  106. Security(安全):指防止数据库被非授权的用户访问,包括有意的和无意的。RDBMS通常提供两种类型的安全:数据安全和系统安全。
  107. Server(服务器):为发出请求的客户提供服务的软件应用程序。参见两层/三层客户端-服务器体系结构。
  108. Simple attribute(简单属性):只有一个组件的属性。
  109. Single -valued attribute(单值属性):对于一个实体出现只有一个值的属性。
  110. Specialization(特化):通过标识用来区分实体间成员的特征来最大花实体间成员的差别的过程。
  111. Specialization hierarchy(特化层次结构):同类型层次结构(Type hierarchy)。
  112. SQL(Structured Query Language,结构化查询语言):一种用于RDBMS的非过程化数据库语言。换言之,你只需要指定你需要那些信息,而不需要指定如何得到这些信息。SQL已经被国际标准化组织(ISO)标准化了,因此SQL是定义和操纵RDBMS的正式和实际上的标准语言。
  113. Strong entity(强实体):一个不依赖于其他实体的主健的存在而存在的实体。
  114. Subclass(子类):为(超类)实体中的某些出现并保持特定属性和关系并有不同角色的实体
  115. Superclass(超类):为实体中的所有出现保存公共属性和关系的实体。可参见特化和泛化。
  116. Superkey(超键,ER模型):一个属性或属性集,诶译的标识了每个实体地出现。
  117. Superkey(超键,关系模型):一个列或者列集,唯一的标识了表中地一个记录。
  118. System catalog(系统目录):保存关于数据库地结构、用户、应用程序等信息地数据。
  119. System definition(系统定义):数据库应用声明周期重的一个阶段,包括定义数据库应用程序以及他的主要用户视图地范围和边界。
  120. System security(系统安全):在系统级保护数据库地访问和使用,不如用户名和密码。
  121. Table(表):同关系(relation)。
  122. Ternary relationship(三元关系):三个实体间的关系。例如panch,staff和member之间的Registers关系。
  123. Testing(测试):数据库应用生命周期的一个阶段,包括执行应用程序并有意地发现错误。
  124. Third normal form,3NF(第三范式):一个已经是1NF和2NF的表,同时满足所有的非主健的列的值仅能从主健列得到,而不能从其他列得到。
  125. 3GL, Third-Generation Language(第三代语言):一种过程化的语言,比如COBOL、C、C++,它需要用户(通常是程序员)指定必须要干什么事情以及如何干这些事情。
  126. Three-tier client-server architecture(三层客户端-服务器体系结构):由处理用户界面的客户和处理业务逻辑的应用程序服务器以及数据处理曾组成,而数据库服务器是用来来运行DBMS的。
  127. Top-down approach(自顶向下方法,用于数据库设计):一种设计方法,此种方法从定义系统的主要结构开始,然后将这些结构逐步细分成更小的单元。在数据库设计中,通过标识实体和数据间的关系开始这个顶层的步骤,然后逐步添加细节,比如你希望保存的关于实体和关系的信息(成为属性)以及在实体、关系和属性上的所有约束。
  128. Transaction(事务):由用户和应用程序执行的一个动作或一系列动作,这些动作访问或修改数据库的内容。
  129. Transaction Processing Monitor,TPM(事务处理监视器):控制数据在客户端和服务器键转换的程序,以便为联机事务处理(OLTP)提供一个一致的环境。
  130. Transitive dependency(传递依赖):假设A、B、C是表中的列,如果B依赖于A(A--&gt;B),并且C依赖于B(B- -&gt;C),则C通过B传递而依赖于A(假设A不依赖于B或C)。如果在主健上存在一个传递依赖,则此表就不是3NF的。必须从表中去掉传递依赖以达到3NF的要求。
  131. Tuple(元组):关系中的一行记录。
  132. Two-tier client-server architecture(两层客户端-服务器体系结构):由处理主要业务和数据处理逻辑以及与用户的接口的客户端应用程序和管理和控制数据库访问的服务器程序组成。
  133. Type hierarchy(类型层次结构):一个是提以及它的子类和他们的超类,等等。
  134. UML(Unified Modeling Language,统一建模语言):在20世纪80年代和90年代引入的诸多面向对象分析与设计方法重的一种较新的方法。
  135. Update anomalies(更新异常):当用户视图更新一个包含冗余数据的标识可能引起的不一致。有三种类型的异常:插入、删除和更新。
  136. User view(用户视图):从特定的作业(比如经理或管理者)角度或业务应用领域(比如市场、职员或库存控制)定义的数据库应用的需求。
  137. View(视图):一个“虚拟底表”,它不实际存在数据库中,但他由 DBMS从现有底它所涉及的基本表中产生。
  138. View integration approach(视图综合法,用于数据库设计):每个用户视图的需求,用来构建代表用户试图底独立数据模型。在数据库设计阶段,结果数据库模型被合并成一个更大的模型。

 

参考资源

  • 《Database Solution-A Step by Step Guide to Building Database》by Thomas M.Connolly, Carolyn E.Begg, 译者: 何玉洁,梁琦等