楼主: server

"主键"是什么?

[复制链接]
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
11#
发表于 2003-12-18 21:07 | 只看该作者
最初由 lodge 发布
[B]
嘿嘿, 深入讨论!
那是不是所有以行和列的形式存储的表都可称为关系型数表呀? [/B]


不一定

看看CODD博士的:关系数据库的理论模型的12条规则
关键几点:物理数据独立、逻辑数据独立、分布独立、视图更新、
DDL、基于关系模型的动态、DML....

使用道具 举报

回复
论坛徽章:
59
马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:522012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41灰彻蛋
日期:2011-10-28 14:15:35管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
12#
发表于 2003-12-18 21:17 | 只看该作者
最初由 ccwlm741212 发布
[B]

不一定

看看CODD博士的:关系数据库的理论模型的12条规则
关键几点:物理数据独立、逻辑数据独立、分布独立、视图更新、
DDL、基于关系模型的动态、DML.... [/B]

呵呵, 果然高手, 抬出了CODE
只是想通过讨论给 SERVER同学解释一下主键的概念

根据C.J. DATE 同学的说法, 只要在一个表里不存在完全相同的两行, 这样的表就可以做为一个关系表,
在关系表的一行中, 如果存在这样一组项目使得其它项目都能够通过这组项目来确定, 这样一组项目被称做主键. 上面有一个说主键是能够确定行的项目, 这不够准确, 因为不是每一个项目都需要使用全部主键来确定的, 如果一个表存在可通过部分主键来确定的项目的话, 偶们就称该表存在冗余.

接下来, 一个问题, 主键和被建立了UNIQUE INDEX 和NOT NULL 约束的字段有何不同呀?

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
13#
发表于 2003-12-18 21:28 | 只看该作者
你要下个pdf格式的阅读器,acrobereader

使用道具 举报

回复
论坛徽章:
8
ITPUB元老
日期:2005-04-29 10:01:15操作系统板块每日发贴之星
日期:2005-05-08 01:01:44网络板块每日发贴之星
日期:2005-05-22 01:03:56网络板块每日发贴之星
日期:2005-06-01 01:02:21操作系统板块每日发贴之星
日期:2005-06-06 01:01:45网络板块每日发贴之星
日期:2005-09-26 01:02:13网络板块每日发贴之星
日期:2005-10-01 01:02:10会员2006贡献徽章
日期:2006-04-17 13:46:34
14#
 楼主| 发表于 2003-12-18 22:08 | 只看该作者
谢谢,谢谢呀!
太感动了!


这么多好人,现在还是好人多呀!

哈哈!!

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
15#
发表于 2003-12-18 22:17 | 只看该作者
最初由 lodge 发布
[B]
呵呵, 果然高手, 抬出了CODE
只是想通过讨论给 SERVER同学解释一下主键的概念

根据C.J. DATE 同学的说法, 只要在一个表里不存在完全相同的两行, 这样的表就可以做为一个关系表,
在关系表的一行中, 如果存在这样一组项目使得其它项目都能够通过这组项目来确定, 这样一组项目被称做主键. 上面有一个说主键是能够确定行的项目, 这不够准确, 因为不是每一个项目都需要使用全部主键来确定的, 如果一个表存在可通过部分主键来确定的项目的话, 偶们就称该表存在冗余.

接下来, 一个问题, 主键和被建立了UNIQUE INDEX 和NOT NULL 约束的字段有何不同呀? [/B]


看上去是一样的,可有2点区别:
1、主键可以复合,后者不行
2、主键的索引一般系统自动己创建,自己须DBOO

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
16#
发表于 2003-12-18 22:18 | 只看该作者
最初由 lodge 发布
[B]
呵呵, 果然高手, 抬出了CODE
只是想通过讨论给 SERVER同学解释一下主键的概念

根据C.J. DATE 同学的说法, 只要在一个表里不存在完全相同的两行, 这样的表就可以做为一个关系表,
在关系表的一行中, 如果存在这样一组项目使得其它项目都能够通过这组项目来确定, 这样一组项目被称做主键. 上面有一个说主键是能够确定行的项目, 这不够准确, 因为不是每一个项目都需要使用全部主键来确定的, 如果一个表存在可通过部分主键来确定的项目的话, 偶们就称该表存在冗余.

接下来, 一个问题, 主键和被建立了UNIQUE INDEX 和NOT NULL 约束的字段有何不同呀? [/B]


看上去是一样的,可有2点区别:
1、主键可以复合,后者不行
2、主键的索引一般系统自动己创建,自己须DBOO

使用道具 举报

回复
论坛徽章:
22
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:36
17#
发表于 2003-12-19 01:37 | 只看该作者

使用道具 举报

回复
论坛徽章:
22
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:36
18#
发表于 2003-12-19 02:56 | 只看该作者
最初由 lodge 发布
[B]
呵呵, 果然高手, 抬出了CODE
只是想通过讨论给 SERVER同学解释一下主键的概念
接下来, 一个问题, 主键和被建立了UNIQUE INDEX 和NOT NULL 约束的字段有何不同呀? [/B]


lodge兄,我来了。

首先回答你的讨论,请指点:

1.not null表示该字段不允许为空,如果在做insert操作时,不给not null的字段赋值,系统会报错。就这个功能。

2.下面说unique和PK(主键)的区别:
⑴unique约束主要用在非PK的一列或多列上要求数据唯一的情况。
⑵unique约束允许该列上存在null值,而PK决不允许出现这种情况。
⑶可以在一个表上设置多个unique约束,而在一个表上只能设置一个PK。

最初由 lodge 发布
[B]如果一个表存在可通过部分主键来确定的项目的话, 偶们就称该表存在冗余. [/B]


首先你用“部分主键”是不对的,一个表只能有一个PK,你说的情况是候选键(candidate key),这样的情况出现在数据库逻辑设计实体对应关系M:N的情况下,而且是必须的,为了避免更少的冗余出现才这样做,而不是这样做会产生冗余。

冗余在数据库里有时也是必须的,毕竟不能严格遵循范式和扩展范式的要求,如果都这样做的话,效率反而更低。冗余的出现要有一定的目的和准则。

在安全里有一项技术叫做热备份,其实也是一个冗余技术了。中国的这次航天飞机在也用了冗余技术来保证飞机的安全。

使用道具 举报

回复
论坛徽章:
22
授权会员
日期:2005-10-30 17:05:332012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:362012新春纪念徽章
日期:2012-02-13 15:11:36马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:36
19#
发表于 2003-12-19 03:15 | 只看该作者
文档数据库与关系数据库的比较

 摘要:

  随着应用领域的不断拓展和多媒体技术, 人们发现关系数据库的许多限制和不足,因而数据库技术进入了"后关系数据库时代"。文档数据库由此应运而生。本文概要地从数据格式、数据库结构和WEB发布数据三个方面比较了文档数据库与关系数据库的异同,同时区别了文档数据库与过去存储数据的文件系统的不同。
  
  关键词:数据库 Internet 文档数据库 WEB数据库服务器


一. 关系数据库的优势和目前面临的问题

  从60年代末开始, 数据库技术经历了层次数据库、网状数据库和关系数据库而进入数据库管理系统( DBMS)阶段至今, 数据库技术的研究也不断取得进展。80年代, 关系数据库成为发展的主流, 几乎所有新推出的DBMS产品都是关系型的。关系型数据库在计算机数据管理的发展史上是一个重要的里程碑,这种数据库具有数据结构化、最低冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,目前较大的信息系统都是建立在结构化数据库设计之上的。

  然而,随着网络技术和软件技术的飞速发展,特别是Internet和Intranet技术的发展,使得非结构化数据的应用日趋扩大。关系数据库从1970年发展至今,虽功能日趋完善,但对数据类型的处理只局限于数字、字符等,对多媒体信息的处理只是停留在简单的二进制代码文件的存储。然而,随着用户应用需求的提高、硬件技术的发展和Intranet/Internet提供的多彩的多媒体交流方式,用户对多媒体处理的要求从简单的存储上升为识别、检索和深入加工,正是用户呼唤出"通用"数据库服务器来处理占信息总量70%的声音、图像、时间序列信号和视频等复杂数据类型。据有关数据,1996年,全球数据库市场的销售额已接近40亿美元,预计到2000年,数据库市场销售额将达到80亿美元。巨大的增长潜力来自复杂数据类型的处理需求,使处理复杂数据类型的"超媒体"数据库将成为各公司投资研发的重点。

二. 全新的文档数据库概念

  从1989年起,Lotus通过其群件产品Notes提出了数据库技术的全新概念-"文档数据库",文档数据库区别于传统的其它数据库,它是用来管理文档。在传统的数据库中,信息被分割成离散的数据段,而在文档数据库中,文档是处理信息的基本单位。一文档可以很长、很复杂、可以无结构,与字处理文档类似。

  文档数据库与五、六十年代管理数据的文件系统不同,文档数据库仍属于数据库范畴。首先,文件系统中的文件基本上对应于某个应用程序。当不同的应用程序所需要的数据有部分相同时,也必须建立各自的文件,而不能共享数据,而文档数据库可以共享相同的数据。因此,文件系统比文档数据库数据冗余度更大,更浪费存储空间,且更难于管理维护。其次,文件系统中的文件是为某一特定应用服务的,所以,要想对现有的数据再增加一些新的应用是很困难的,系统不容易扩充。数据和程序缺乏独立性。而文档数据库具有数据的物理独立性和逻辑独立性,数据和程序分离。

  文档数据库也不同于关系数据库,关系数据库是高度结构化的,而Notes的文档数据库允许创建许多不同类型的非结构化的或任意格式的字段,与关系数据库的主要不同在于,它不提供对参数完整性和分布事务的支持,但和关系数据库也不是相互排斥的,它们之间可以相互交换数据,从而相互补充、扩展。


三. 关系数据库和文档数据库的异同

下面从三个方面比较两种数据库的异同:

1. 格式文本/多媒体(Rich Text/Multimedia)

  在信息时代,所有信息大体上可以分为两类:一类信息能够用数据或统一的结构加以表示。例如,成本、费用、人员、工资以及员工业绩等,都可以用数字或文字来描述或表达。这类信息具有相同的层次或网络结构,我们称之为结构化数据;而另一类信息根本无法用数字或者统一的结构表示,例如,图象、声音等,我们称之为非结构化数据。这些非结构化数据既可以是一段包含大量附加信息(如排版信息)的文字信息,也可能是一段声音、图象,甚至是影像。对于结构化数据和非结构化数据的关系如图所示,非结构化数据包括结构化数据,但又不止是结构化数据;结构化数据属于非结构化数据,是非结构化数据的特例。一般来说,在人们的认识之中,关系数据库最主要的特征就是数据的结构化。然而,随着网络技术和软件技术的飞速发展,特别是Internet和Intranet技术的发展,使得非结构化数据的应用日趋扩大。关系数据库是高度结构化的,这种数据结构化使关系数据库具有冗余度最低、程序与数据独立性较高、易于扩充、易于编制应用程序的特点。但是,随着应用领域的不断拓展, 为满足应用对数据处理不断"苛刻"的要求, 人们开始发现关系数据库的许多限制和不足。因为文档数据库的基本元素就是文档本身,而数据库中的文档可以同时包含结构化的和非结构化的信息,所以,文档数据库能够存储和管理类似文档这样的非结构化数据。特别是,Notes的对象库是一个非常理想的商业信息存储器,可用于高效地存储、传播、分配和管理这类信息。这类信息通常具有丰富的数据类型,如表格(可以是从某个关系数据库或电子表软件中得到的)、格式化文本、WWW的页面、图形、OLE对象、或扫描的图象以及传真件、声频或视频信号这样的多媒体信息。


2. 在结构上

  关系数据库是应用数学方法来处理数据库数据的,其数据模型也是建立在数学概念基础上的,在关系模型中,数据在用户观点下的逻辑结构就是一张二维表。而Lotus Notes是一个文档数据库管理系统,文档数据库的基本元素就是文档。这里的文档和关系数据库中的记录相似。Notes文档的结构是由表单(form)定义的,而表单由一组各式各样的字段域组成。

· 域(Field)、域(Domain)和字段(Field)

  在关系数据库中,域(Domain)是属性值的集合,如:大于0小于150的正整数,长度小于25的字符串集合等等。而在文档数据库中,域(Field)的概念出现在表单对象中,域是表单上存储数据的单个元素,域决定了一个独立的文档能包含什么数据。虽二者的中文译文相同,但其实际意义和作用相差千里。反而在文档数据库中域的概念与关系数据库中的字段(Field)相类似。

· 条目(Item)和属性(Attribute)

  在关系数据库中,有属性(Attribute)的概念,即二维表中的每一列称为一个属性,给每一列起一个名称即属性名。而在文档数据库中,就没有"属性",文档拥有的是条目(Item),条目是指存储于文档中的任意数据部分。每一个条目代表文档中一段数据,在用户界面中,是通过表单中的域来显示文档中的条目的。二者虽命名不同,但笔者认为从"属性"的角度更容易理解文档数据库中条目的意义。

· 视图(View)

  在关系数据库和文档数据库中,均有视图的概念。在关系数据库中,视图是指从一个或几个基本表(或视图)导出的表。视图和基本表不同,视图是一个虚表,即视图所对应的数据不实际存储在数据库中,数据库中只存储视图的定义(存在数据字典中)。在文档数据库中,用户通过Notes视图浏览文档。视图是很方便的目录,用户可以从中看到关于文档的概要信息和文档的状态,然后存取特定的Notes文档。文档数据库中文档可以在视图中显示起全部或部分内容,通过视图,用户可以看一组文档的关键域,并可按某一准则对显示的信息进行分类和排序。实质上,二者逻辑上非常相似,即视图所对应的数据均不实际存储在数据库中,数据库中只存储视图的定义。


3. WEB数据库
  近年来网络体系结构经历了一次次重大变迁,客户机/服务器结构越来越流行了,Intranet以惊人的速度在短短一年内迅速蔓延,面临新的格局,如何简易地实现"客户机/服务器"连接与"Web/Intranet"连接成为数据库管理人员关注的焦点。计算机技术和网络技术的发展使以网络为中心的计算日益得到重视,WWW系统和数据库成为网络化信息服务的基础。如果能把文档数据库同WWW服务器连接起来,就可以从浏览器中检索文档。这种一体化的信息网络系统:数据库+WWW服务器,便成为下一代Internet开发的新领域。目前,在Web上一个典型的数据库应用程序应包括三个部分:Web浏览器、HTTP 服务器和Web数据库服务器。对于一般的关系型数据库,实现Web数据库的应用通常有两种方法:一种是Web服务器提供中间件连接Web服务器与数据库服务器;另一种是把应用程序下载到客户端直接访问数据库。最常用的中间件技术有通用网关接口(CGI)和应用程序编程接口(API)两种。CGI程序缺陷在于CGI接口不支持用户与数据库间的持续互操作,再就是CGI的效率低,且需要同时运行多个CGI程序。用户每次连至服务器时,服务器都要创建一个事务或运行CGI程序的一个拷贝。这样对于一个复杂的应用或有多个用户访问时,就会加重服务器的负担。API在很大程度上克服了CGI的缺点,但其兼容性差和开发难度大也让广大开发人员望而却步。客户端访问数据库主要包括Java Script和数据库连接器(IDC)等。用Java Script和IDC开发Web数据库虽简单但同时也存在功能有限、不能完全控制其过程等缺点。所以它们也无法胜任较复杂的Web数据库的开发。难道就没有一个开发相对容易、功能强大且高效的Web数据库的开发方法吗?有,答案是-Lotus Notes。Lotus Notes通过文档数据库实现了多媒体文档管理,支持客户机/服务器工作方式。每个数据可以包含若干不同形式的Notes文档。存放在一个或多个Notes服务器上,可以让许多用户存取的数据库称为共享数据库。通过利用服务器存取和数据库存取控制等安全措施,数据库管理员可以规定谁可以存取数据库和在什么范围内使用数据库,各数据库在网上通过复制功能实现同步。这样,通过文档数据库用户可以在网络上存取、追踪储存和组织信息。

四. 结束语

  最近几年,我国的数据库市场飞速发展,并将具有更为巨大的增长潜力,表现为如下特点:首先,在近五年里,用户的选型观念发生了明显的改变,有更多的用户把数据库的重要性放在十分重要的地位,其主要原因是用户将把应用软件和应用需求放在首位,应用软件是否满足用户需求是整个项目是否成功的标志,而应用软件开发直接依赖于数据库开发工具。实际上,大量潜在的投资都在应用软件的开发上;另一个原因是硬件随着芯片技术的发展越来越缺乏特性,硬件指标将变成次要的考虑因素。对行业性应用来讲,以前是制定几家硬件产品作为优选,而今可能是首选数据库厂家再考虑硬件厂家了。正是用户需求的这种变化给数据库厂商提供了新的发展机会。Lotus Notes为各数据库系统集成商提供了强大的文档数据库开发平台,Notes结合了企业级电子邮件、分布式文档数据库与快速应用开发等三位一体的强大技术、完全集成了Internet技术,提供用户完整的,以网络为中心的应用技术平台。可以预言,在不久的将来,Lotus Notes的文档数据库将成为继层次数据库、网状数据库和关系数据库之后的又一热点技术。

使用道具 举报

回复
求职 : 系统分析师
论坛徽章:
691
博彩大赢家
日期:2014-07-14 11:41:47博彩大赢家
日期:2015-09-24 12:11:05菠菜神灯
日期:2016-04-18 13:59:20NBA季后赛大富翁
日期:2016-04-27 11:51:10NBA季后赛大富翁
日期:2016-06-24 10:29:08芝加哥公牛
日期:2015-06-25 09:32:08芝加哥公牛
日期:2016-04-18 14:22:33芝加哥公牛
日期:2016-10-27 14:28:54芝加哥公牛
日期:2016-12-27 14:16:24芝加哥公牛
日期:2017-04-18 17:07:58
20#
发表于 2003-12-19 08:15 | 只看该作者
最初由 magicangel 发布
[B]

lodge兄,我来了。

首先回答你的讨论,请指点:

1.not null表示该字段不允许为空,如果在做insert操作时,不给not null的字段赋值,系统会报错。就这个功能。

2.下面说unique和PK(主键)的区别:
⑴unique约束主要用在非PK的一列或多列上要求数据唯一的情况。
⑵unique约束允许该列上存在null值,而PK决不允许出现这种情况。
⑶可以在一个表上设置多个unique约束,而在一个表上只能设置一个PK。



首先你用“部分主键”是不对的,一个表只能有一个PK,你说的情况是候选键(candidate key),这样的情况出现在数据库逻辑设计实体对应关系M:N的情况下,而且是必须的,为了避免更少的冗余出现才这样做,而不是这样做会产生冗余。

冗余在数据库里有时也是必须的,毕竟不能严格遵循范式和扩展范式的要求,如果都这样做的话,效率反而更低。冗余的出现要有一定的目的和准则。

在安全里有一项技术叫做热备份,其实也是一个冗余技术了。中国的这次航天飞机在也用了冗余技术来保证飞机的安全。 [/B]


lodge兄的意思是unique和not null一起的字段,还是要分开比较,否则区别就太明显了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表