主题:[原创]数据库重要概念的澄清
不幸的(unfortunately)是,在数据库里面有两套相似的术语,使的一切清楚的东西变得有些模糊.下面列举,这几组让人模糊的概念:
Tables(表) Relations(关系)
Rows(行) Tuples(元组)
Column(列) Attributes(属性)
除了上面列举的以外,还有一套属于被提到---file, record, field, 他们使用比较少,这里就不进行讨论.
先看一张表,我们也称之为relations(关系),通常情况下,关系和表几乎是一样的:
CUSTOMERS
cid Cname City Discnt
C001 Basics Dallas 10.00
C002 Tittop Duluth 12.00
C003 Allied Dallas 8.00
这里面什么是行,什么是元组,什么是列,什么是属性呢?
cid,cname,city,discnt是不是属于行的范围呢?
cid 到底是属性,还是cid,c001,c002,c003是属性?
cid 到底是列,还是cid,c001,c002,c003是列?
We will refer to the column names of a table as the attributes of that table
For instance, the attributes of the table CUSTOMERS(上面的表) are cid, cname, city, and discnt
(来自<<database principles, programming, and performance>> second edition)
由此可以知道,attributes(属性)仅仅是指:cid, cname, city, discnt 即表的heading(标题),于之对应的概念是 column name, 而不是 column. 这是很多人都混淆不清的.column表示的一个集合,比如属性为cid的column是 c001, c002, c003,不包含有cid. 行一样是一个集合,比如上表里面的一个行是 c001,basics,dallas,10.00 ,行不包括cid,cname,city,discnt这一条.通常我们喜欢称c001,basics,dallas,10.00为第一行,即使范式不允许我们这样做.
细细理解attributes,应该可以感觉出它的抽象,有点像class这个概念,它并没有表示一个具体的东西,而表示一个无穷的集合,相比下,column,表示是一个有限的集合,即表里面列举出来的内容,这个集合随表的变化而变化,而attributes是不变的.
数据库里面沿袭着很多思想,也表现在其他的领域.即使一些概念的模糊,不影响你去完成一个系统.没有精密的理论体系下,永远无法完成更为完善甚至完美的系统(当然,能写出来的系统,就不会是完美的系统),而这样的理论体系就建立在一个个概念之上.
Tables(表) Relations(关系)
Rows(行) Tuples(元组)
Column(列) Attributes(属性)
除了上面列举的以外,还有一套属于被提到---file, record, field, 他们使用比较少,这里就不进行讨论.
先看一张表,我们也称之为relations(关系),通常情况下,关系和表几乎是一样的:
CUSTOMERS
cid Cname City Discnt
C001 Basics Dallas 10.00
C002 Tittop Duluth 12.00
C003 Allied Dallas 8.00
这里面什么是行,什么是元组,什么是列,什么是属性呢?
cid,cname,city,discnt是不是属于行的范围呢?
cid 到底是属性,还是cid,c001,c002,c003是属性?
cid 到底是列,还是cid,c001,c002,c003是列?
We will refer to the column names of a table as the attributes of that table
For instance, the attributes of the table CUSTOMERS(上面的表) are cid, cname, city, and discnt
(来自<<database principles, programming, and performance>> second edition)
由此可以知道,attributes(属性)仅仅是指:cid, cname, city, discnt 即表的heading(标题),于之对应的概念是 column name, 而不是 column. 这是很多人都混淆不清的.column表示的一个集合,比如属性为cid的column是 c001, c002, c003,不包含有cid. 行一样是一个集合,比如上表里面的一个行是 c001,basics,dallas,10.00 ,行不包括cid,cname,city,discnt这一条.通常我们喜欢称c001,basics,dallas,10.00为第一行,即使范式不允许我们这样做.
细细理解attributes,应该可以感觉出它的抽象,有点像class这个概念,它并没有表示一个具体的东西,而表示一个无穷的集合,相比下,column,表示是一个有限的集合,即表里面列举出来的内容,这个集合随表的变化而变化,而attributes是不变的.
数据库里面沿袭着很多思想,也表现在其他的领域.即使一些概念的模糊,不影响你去完成一个系统.没有精密的理论体系下,永远无法完成更为完善甚至完美的系统(当然,能写出来的系统,就不会是完美的系统),而这样的理论体系就建立在一个个概念之上.