1,DOS 是哪个公司推出的

西雅图公司工程师Tim Paterson研制,微软公司推出
是微软的
SQL不是一个软件,而是一种语言,SQL(Structure Query Language)是结构化查询语言的缩写,是IBM公司在70年代开发的关系数据库原型System R的一部分。发展到现在,所有的关系数据库系统都支持它。

DOS 是哪个公司推出的

2,谁能介绍一下数据库

第一阶段是七十年代之前,这一阶段出现的技术是非关系型数据库管理系统。例如,1968年的层次系统SYSTEM2000等。在这一阶段,作为数据库管理系统前身的文件系统已经完善。 第二阶段是1970~1974年,在这一阶段出现了许多新技术。1970年出现了关系数据模型,实现了关系数据库语言和关系数据库管理系统的原型。但尚未形成关系系统。 第三阶段是1975~1979年,这一阶段的新技术有:分布式数据库管理系统。例如,1975年的RAP,CASSM等。 第四阶段是1980~1984年,这一阶段的新技术有两个动向:一是人工智能、数理逻辑与数据库相结合,出现了专家数据库系统、知识库系统等等。这类系统既能处理大量的数据,又具备推理递归等功能。它们是智能化系统。二是出现了多介质信息管理的问题。多介质信息是指除格式化数据表示的信息以外,还有其它许多形式的信息,如图形、图象、正文、声音等非格式化数据表示的信息。这类多介质信息的数据库管理系统成为数据库领域中研究的新方向。 第五阶段是1985年之后,在这一阶段,知识库系统、专家数据库系统、多介质数据库系统等已被广泛接受,成为当前热门的前沿课题。
详细介绍到 http://baike.baidu.com/view/1088.htm 简单说说什么叫做"数据库" 当人们从不同的角度来描述这一概念时就有不同的定义(当然是描述性的)。例如,称数据库是一个“记录保存系统”(该定义强调了数据库是若干记录的集合)。又如称数据库是“人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合”(该定义侧重于数据的组织)。更有甚者称数据库是“一个数据仓库”。当然,这种说法虽然形象,但并不严谨。 严格地说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。在经济管理的日常工作中,常常需要把某些相关的数据放进这样“仓库”,并根据管理的需要进行相应的处理。例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个"数据仓库"我们就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现财务、仓库、生产的自动化管理。 J.Martin给数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。

谁能介绍一下数据库

3,pymongo和mongoengine的区别

Tornado 中 PyMongo Motor MongoEngine 的性能测试最近在使用 Tornado 开发 API,数据库选择了 MongoDB,因为想使用 Geo 搜索的特性。Python 可供选择的 MongoDB Drivers 可以在官网查找。在这些 Drivers 中,GitHub 上 Star 数最多的有 3 个:PyMongoMotor (适用于 Tornado 的异步 driver)MongoEngine (ORM-like Layers)Motor 和 MongoEngine 都是基于 PyMongo,Motor 的最新版是基于 PyMongo 2.8,Motor 的优势就在于异步,而 PyMongo 在 2.2 以后的版本,就开始支持 gevent。MongoEngine 借鉴了 Django 的 ORM,提供了一个 ORM-like layer,官方称作 Document-Object Mapper,可以像使用 Django 的 ORM 一样,简单的操作和处理数据。面对这么多选择,就想探究这些选择都有哪些特点,性能如何,所以有了这篇文章。你可以在这里找到所有的测试代码和测试数据从测试的结果来看,Motor 的性能确实很好,gevent 几乎没有性能提升,PyMongo 2.8 的性能很差,MongoEngine 是在 PyMongo 的基础上有封装了一层,但是两者性能相差不大。Tornado 的单线程的,同步的数据库 Driver 会将 Tornado 阻塞住,导致无法处理其他的请求。最后给出一组数据,百分比请求的最大响应时间。下面这张图,左边坐标的单位是毫秒。例如 Motor 有 50% 的请求是在 376 毫秒内完成的。PyMongo 2.8,PyMongo 2.8 + gevent,MongoEngine + PyMongo 2.8 三条线重叠在了一起,它们之间的性能相当。
mongodb是一个面向文档的数据库,目前由10gen开发并维护,它的功能丰富,齐全,完全可以替代mysql。在使用mongodb做产品原型的过程中,我们总结了monogdb的一些亮点:使用json风格语法,易于掌握和理解:mongodb使用json的变种bson作为内部存储的格式和语法。针对mongodb的操作都使用json风格语法,客户端提交或接收的数据都使用json形式来展现。相对于sql来说,更加直观,容易理解和掌握。schema-less,支持嵌入子文档:mongodb是一个schema-free的文档数据库。一个数据库可以有多个collection,每个collection是documents的集合。collection和document和传统数据库的table和row并不对等。无需事先定义collection,随时可以创建。collection中可以包含具有不同schema的文档记录。这意味着,你上一条记录中的文档有3个属性,而下一条记录的文档可以有10个属性,属性的类型既可以是基本的数据类型(如数字、字符串、日期等),也可以是数组或者散列,甚至还可以是一个子文档(embeddocument)。这样,可以实现逆规范化(denormalizing)的数据模型,提高查询的速度。图1mongodb是一个schema-free的文档数据库图2是一个例子,作品和评论可以设计为一个collection,评论作为子文档内嵌在art的comments属性中,评论的回复则作为comment子文档的子文档内嵌于replies属性。按照这种设计模式,只需要按照作品id检索一次,即可获得所有相关的信息了。在mongodb中,不强调一定对数据进行normalize,很多场合都建议de-normalize,开发人员可以扔掉传统关系数据库各种范式的限制,不需要把所有的实体都映射为一个collection,只需定义最顶级的class。mongodb的文档模型可以让我们很轻松就能将自己的object映射到collection中实现存储。图2mongodb支持嵌入子文档简单易用的查询方式:mongodb中的查询让人很舒适,没有sql难记的语法,直接使用json,相当的直观。对不同的开发语言,你可以使用它最基本的数组或散列格式进行查询。配合附加的operator,mongodb支持范围查询,正则表达式查询,对子文档内属性的查询,可以取代原来大多数任务的sql查询。crud更加简单,支持in-placeupdate:只要定义一个数组,然后传递给mongodb的insert/update方法就可自动插入或更新;对于更新模式,mongodb支持一个upsert选项,即:“如果记录存在那么更新,否则插入”。mongodb的update方法还支持modifier,通过modifier可实现在服务端即时更新,省去客户端和服务端的通讯。这些modifer可以让mongodb具有和redis、memcached等kv类似的功能:较之mysql,monodb更加简单快速。

pymongo和mongoengine的区别

4,超市数据库维护工作有哪些

由于本系统设计针对该超市的具体情况,因此用户需求的目的是通过该企业的需求调查,从中总结出企业对管理信息系统的需求,然后根据这些需求设计出系统的方案。需求收集和分析是数据库设计的第一阶段。需求分析定义了软件产品的各种用户需求如功能、性能等,需求分析是否透彻、完整、正确是软件项目成败的关键。这一阶段收集到的基础数据是下一步设计概念结构的基础。从数据库设计的角度考虑,需求分析阶段的目标是:对现实世界要处理的对象(组织、部门、企业等)进行详细调查,在了解原系统的概况,确定新系统功的过程中,收集支持系统目标的基础数据及其处理,最重要的就是建立用户数据模型。无论是采取哪种开发策略,都需要访问用户、记录需求,并根据这些需求建立数据模型的原型,这样的模型标识了需要在数据库中存储的内容和它们的结构及相互关系。进行数据建模要求既要有一定的行业知识,又要精通建模的方法和技巧[4]。需求分析阶段的任务是:(1)了解组织机构情况,调查这个组织由哪些部门组成。各部的职责是什么,为分析信息流程准备。(2)了解各部门的业务活动情况。调查各部门输入和使用什么数据,如何加工处理这些数据,输出什么信息,输出到什么部门,输出结果的格式是什么。(3)确定新系统的边界。确定哪些功能由计算机完成或将来准让计算机完成,哪些活动由人工完成。由计算机完成的功能就是系统应该实现的功能。2.3.2 系统功能我们把收集到的数据整理组合在总控模块、基本资料模块、销售管理模块、进货管理模块四个主要的功能模块。每个功能模块的功能是:总控模块包括操作员管理、权限管理、系统数据管理、系统设置管理等。它为整个系统提供安全保障。基本资料模块有客户资料包括客户资料的管理和存储,员工资料包括员工资料录入和维护,商品资料包括商品资料的存储和编辑,供应商资料的存储和编辑。销售管理模块包括货单的录入和维护;对销售情况进行统计;对商品的零售和批发进行管理和付款的计算机操作等进货管理模块包括进货资料录入和维护;采购订单的录入和维护和付款的计算机的操作等
一、备份系统数据SYBASE 系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。SQL Server 提供了两种不同类型的恢复机制:一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退;另一类是人工完成的恢复,这是通过 DUMP 和 LOAD 命令来执行人工备份和恢复工作。因此定期备份事务日志和数据库是一项十分重要的日常维护工作。1、备份数据库每一个数据库都应在创建之后卸出,从而提供一个装入基点。在此之后按排定的时间周期表卸出。比如每周五卸出数据库。对一般数据库系统卸出数据库周期建议为每周一次。除了按计划周期卸出数据库之外,还需在每次运行没有日志的操作后卸出数据库。例如:·每次强制地运行了 DUMP TRAN WITH NO_LOG (因为数据库的磁盘空溢出);·每次用 sp_dboption 允许 select into/bulkcopy 做快速拷贝,或用 SELECT INTO 命令创建一个永久性的表,或使用了 WRITETEXT 命令。卸出数据库的命令为:DUMP DATABASE database_nameTO dump_devicedatabase_name 是要卸出的数据库名称,dump_device 是卸出设备的名称。用系统过程 sp_helpdevice 可以获得设备的信息。下面一条命令用来卸出数据库 my_db :DUMP DATABASE my_dbTO db_bk_dev2、备份事务日志如果事务日志与数据库放在同一个设备上,则事务日志不应与数据库分开备份。master 数据库和小于 4M 的用户数据库就是这种情况。一般数据库系统的数据库和日志分别放在不同的设备上,因此,可以用 DUMP TRAN 命令单独备份日志。备份事务日志的周期直接影响数据的恢复程度,因此建议每天备份。备份事务日志的命令格式为:DUMP TRANsaction database_name[TO dump_device][WITH TRUNCATE_ONLY|WITH NO_LOG|WITH NO_TRUNCATE]其中 database_name 是要备份事务的数据库名称,dump_device 是备份设备名称,仅当包含了 WITH TRUNCATE_ONLY 或 WITH NO_LOG 子句时,才可以备份到设备。注意:如果总是用 DUMP DATEBASE (备份数据库及其日志),而不用 DUMP TRAN ,事务日志将不会刷新,而变得非常庞大。对于 master 数据库和小型数据库每次运行 DUMP DATEBASE 之后应当运行 DUMP TRANsaction 命令刷新日志 。下面一条命令备份数据库 db160 的事务日志到备份设备上:DUMP TRANsaction db160TO db_log_bk_devWITH TRUNCATE_ONLY3、备份数据库及其日志间的相互作用在至少卸出一次数据库前,卸出事务日志是毫无意义的。下图显示了备份数据库及其日志间的关系如果在星期二下午5:01出现非硬件故障,需要做的所有工作是装入磁带5(参见下一节:数据恢复),由于磁带5是下午5:00刚备份的,因此只有备份和装入之间的一分钟内的数据损失。但是,如果在星期二下午4:49失效会怎么样呢?在这种情况下,要装入磁带1(在星期五下午5:00的卸出)。然后,依次装入磁带2,3以及4。这样,系统将恢复到星期二上午10:00点的状态,星期二的大部分工作丢失了。此例显示了经常卸出事务的重要性。

5,数据库设计技巧是什么

数据库设计包括应用与设计,重在设计。而数据库技术仅是应用,重在应用。就难度而言,其实三级并不比二级难多少。
(需求分析阶段)1) 理解客户需求,询问用户如何看待未来需求变化。让客户解释其需求,而且随着开发的继续,还要经常询问客户保证其需求仍然在开发的目的之中。2) 了解企业业务可以在以后的开发阶段节约大量的时间。3) 重视输入输出。在定义数据库表和字段需求(输入)时,首先应检查现有的或者已经设计出的报表、查询和视图(输出)以决定为了支持这些输出哪些是必要的表和字段。举例:假如客户需要一个报表按照邮政编码排序、分段和求和,你要保证其中包括了单独的邮政编码字段而不要把邮政编码糅进地址字段里。4) 创建数据字典和er 图表er 图表和数据字典可以让任何了解数据库的人都明确如何从数据库中获得数据。er图对表明表之间关系很有用,而数据字典则说明了每个字段的用途以及任何可能存在的别名。对sql表达式的文档化来说这是完全必要的。5) 定义标准的对象命名规范数据库各种对象的命名必须规范。 (数据库逻辑设计)表设计原则1) 标准化和规范化数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但third normal form(3nf)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守3nf 标准的数据库的表设计原则是:“one fact in one place”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。举例:某个存放客户及其有关定单的3nf数据库就可能有两个表:customer 和order。order 表不包含定单关联客户的任何信息,但表内会存放一个键值,该键指向customer 表里包含该客户信息的那一行。事实上,为了效率的缘故,对表不进行标准化有时也是必要的。2) 数据驱动采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。举例,假如用户界面要访问外部数据源(文件、xml 文档、其他数据库等),不妨把相应的连接和路径信息存储在用户界面支持表里。还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。角色权限管理也可以通过数据驱动来完成。事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。3) 考虑各种变化在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。举例,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。所以,在建立系统存储客户信息时,在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。4) 每个表中都应该添加的3 个有用的字段drecordcreationdate,在vb 下默认是now(),而在sql server  · 下默认为getdate()srecordcreator,在sql server 下默认为not null default  · usernrecordversion,记录的版本标记;有助于准确说明记录中出现null 数据或者丢失数据的原因  ·5) 对地址和电话采用多个字段描述街道地址就短短一行记录是不够的。 address_line1、address_line2 和address_line3 可以提供更大的灵活性。还有,电话号码和邮件地址最好拥有自己的数据表,其间具有自身的类型和标记类别。6) 使用角色实体定义属于某类别的列在需要对属于特定类别或者具有特定角色的事物做定义时,可以用角色实体来创建特定的时间关联关系,从而可以实现自我文档化。举例:用person 实体和person_type 实体来描述人员。比方说,当john smith, engineer 提升为john smith, director 乃至最后爬到john smith, cio 的高位,而所有你要做的不过是改变两个表person 和person_type 之间关系的键值,同时增加一个日期/时间字段来知道变化是何时发生的。这样,你的person_type 表就包含了所有person 的可能类型,比如associate、engineer、director、cio 或者ceo 等。还有个替代办法就是改变person 记录来反映新头衔的变化,不过这样一来在时间上无法跟踪个人所处位置的具体时间。7) 选择数字类型和文本类型尽量充足在sql 中使用smallint 和tinyint 类型要特别小心。比如,假如想看看月销售总额,总额字段类型是smallint,那么,如果总额超过了$32,767 就不能进行计算操作了。而id 类型的文本字段,比如客户id 或定单号等等都应该设置得比一般想象更大。假设客户id 为10 位数长。那你应该把数据库表字段的长度设为12 或者13 个字符长。但这额外占据的空间却无需将来重构整个数据库就可以实现数据库规模的增长了。8) 增加删除标记字段在表中包含一个“删除标记”字段,这样就可以把行标记为删除。在关系数据库里不要单独删除某一行;最好采用清除数据程序而且要仔细维护索引整体性。 (数据库逻辑设计)键选择原则:1) 键设计4 原则为关联字段创建外键。所有的键都必须唯一。避免使用复合键。外键总是关联唯一的键字段。2) 使用系统生成的主键设计数据库的时候采用系统生成的键作为主键,那么实际控制了数据库的索引完整性。这样,数据库和非人工机制就有效地控制了对存储数据中每一行的访问。采用系统生成键作为主键还有一个优点:当拥有一致的键结构时,(不让主键具有可更新性)在确定采用什么字段作为表的键的时候,可一定要小心用户将要编辑的字段。通常的情况下不要选择用户可编辑的字段作为键。4) 可选键有时可做主键把可选键进一步用做主键,可以拥有建立强大索引的能力。索引使用原则:索引是从数据库中获取数据的最高效方式之一。95%的数据库性能问题都可以采用索引技术得到解决。1) 逻辑主键使用唯一的成组索引,对系统键(作为存储过程)采用唯一的非成组索引,对任何外键列采用非成组索引。考虑数据库的空间有多大,表如何进行访问,还有这些访问是否主要用作读写。2) 大多数数据库都索引自动创建的主键字段,但是可别忘了索引外键,它们也是经常使用的键,比如运行查询显示主表和所有关联表的某条记录就用得上。3) 不要索引memo/note 字段,不要索引大型字段(有很多字符),这样作会让索引占用太多的存储空间。4) 不要索引常用的小型表不要为小型数据表设置任何键,假如它们经常有插入和删除操作就更别这样作了。对这些插入和删除操作的索引维护可能比扫描表空间消耗更多的时间。 (数据库逻辑设计)1) 完整性实现机制:实体完整性:主键参照完整性:父表中删除数据:级联删除;受限删除;置空值父表中插入数据:受限插入;递归插入父表中更新数据:级联更新;受限更新;置空值dbms对参照完整性可以有两种方法实现:外键实现机制(约束规则)和触发器实现机制用户定义完整性:not null;check;触发器2) 用约束而非商务规则强制数据完整性采用数据库系统实现数据的完整性。这不但包括通过标准化实现的完整性而且还包括数据的功能性。在写数据的时候还可以增加触发器来保证数据的正确性。不要依赖于商务层保证数据完整性;它不能保证表之间(外键)的完整性所以不能强加于其他完整性规则之上。3) 强制指示完整性在有害数据进入数据库之前将其剔除。激活数据库系统的指示完整性特性。这样可以保持数据的清洁而能迫使开发人员投入更多的时间处理错误条件。4) 使用查找控制数据完整性控制数据完整性的最佳方式就是限制用户的选择。只要有可能都应该提供给用户一个清晰的价值列表供其选择。这样将减少键入代码的错误和误解同时提供数据的一致性。某些公共数据特别适合查找:国家代码、状态代码等。5) 采用视图为了在数据库和应用程序代码之间提供另一层抽象,可以为应用程序建立专门的视图而不必非要应用程序直接访问数据表。这样做还等于在处理数据库变更时给你提供了更多的自由。 1) 避免使用触发器触发器的功能通常可以用其他方式实现。在调试程序时触发器可能成为干扰。假如你确实需要采用触发器,你最好集中对它文档化。2) 使用常用英语(或者其他任何语言)而不要使用编码在创建下拉菜单、列表、报表时最好按照英语名排序。假如需要编码,可以在编码旁附上用户知道的英语。3) 保存常用信息让一个表专门存放一般数据库信息非常有用。在这个表里存放数据库当前版本、检查/修复(对 access)、关联设计文档的名称、客户等信息。这样可以实现一种简单机制跟踪数据库,当客户抱怨他们的数据库没有达到希望的要求而与你联系时,这样做对非客户机/服务器环境特别有用。4) 包含版本机制在数据库中引入版本控制机制来确定使用中的数据库的版本。时间一长,用户的需求总是会改变的。最终可能会要求修改数据库结构。把版本信息直接存放到数据库中更为方便。5) 编制文档采用给表、列、触发器等加注释的数据库工具。对开发、支持和跟踪修改非常有用。对数据库文档化,或者在数据库自身的内部或者单独建立文档。这样,当过了一年多时间后再回过头来做第2 个版本,犯错的机会将大大减少。6) 测试、测试、反复测试建立或者修订数据库之后,必须用用户新输入的数据测试数据字段。最重要的是,让用户进行测试并且同用户一道保证选择的数据类型满足商业要求。测试需要在把新数据库投入实际服务之前完成。7) 检查设计在开发期间检查数据库设计的常用技术是通过其所支持的应用程序原型检查数据库。换句话说,针对每一种最终表达数据的原型应用,保证你检查了数据模型并且查看如何取出数据。

文章TAG:关系  关系数据库  数据  数据库  关系数据库原型有哪些  是哪个公司推出的  
下一篇