数据库的问题

2024-05-09

1. 数据库的问题

这需要理清几个概念: 
1)候选键: 关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码。
2)主键:当有多个候选码时,可以选定一个作为主码,选定的候选码称主键
3)外键: 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键。
举个例子: 
有两个关系: 
student(s#,sname,d#),即学生这个关系有三个属性:学号,姓名,所在系别
dep(d#,dname),即院系有两个属性:系号、系名
则s#、d#是主键,也是各自所在关系的唯一候选键,d#是student的外键。
参考资料:数据库——原理、编程与性能

数据库的问题

2. 数据库问题 。

数据库问题 。
EDB和ODBC的区别

1.odbc,oledb,ado,adox的关系: 
odbc:曾经的数据库通信标准 
oledb: 在一切对像化的趋势下,ms打算用它取代odbc. 
oledb分两种:直接的oledb和面向odbc的oledb,后者架构在odbc上,这 
样没有自己的oledb提供者的数据库也可以使用oledb的特点了。 
ado:其实只是一个应用程序层次的界面,它用oledb来与数据库通信。 
adox:对ado的安全性,维护性(如:创建一个数据库)进行了扩展。 

2.用odbc连接数据库: 
odbc中提供三种dsn,它们的区别很简单:用户dsn只能用于本用户。系统dsn和文件dsn的区别只在于连接信息的存放位置不同:系统dsn存放在odbc储存区里,而文件dsn则放在一个文本文件中。 
它们的创建方法就不说了。 
在asp中使用它们时,写法如下: 
A.sql server: 
用系统dsn: connstr="DSN=dsnname; UID=xx; PWD=xxx;DATABASE=dbname" 
用文件dsn: connstr="FILEDSN=xx;UID=xx; PWD=xxx;DATABASE=dbname" 
还可以用连接字符串(从而不用再建立dsn): 
connstr="DRIVER={SQL SERVER};SERVER=servername;UID=xx;PWD=xxx" 
B.access: 
用系统dsn: connstr="DSN=dsnname" 
(或者为:connstr="DSN=dsnname;UID=xx;PWD=xxx") 
用文件dsn: connstr="FILEDSN=xx" 
还可以用连接字符串(从而不用再建立dsn): 
connstr="DRIVER={Microsoft Access Driver};DBQ=d:\abc\abc.mdb" 

3.用oledb连接数据库: 
A.sql server: 
connstr="PROVIDER=SQLOLEDB; 
DATA SOURCE=servername;UID=xx;PWD=xxx;DATABASE=dbname" 
B.access: 
connstr="PROVICER=MICROSOFT.JET.OLEDB.4.0; 
DATA SOURCE=c:\abc\abc.mdb" 

4.使用UDL文件: 
UDL文件是用来存放数据库连接信息的一个文本文件,有点像文件DSN,不过UDL是针对OLEDB(直接的和面向ODBC的)的。 
UDL的创建方法: 
右击桌面或资源管理器-》新建-》microsoft数据连接 
其中的设置工作应该比较清楚了。 
UDL的用法: 
connstr="file name=e:\abc\abc.udl"

3. 数据库的问题

数据当然是以文件的形式存储在硬盘上的,关键问题是怎么存,怎么取,这是数据库的核心技术。
以oracle为例,在每个DB实例下,所有的数据都是存在几个文件里的。其中包括log文件,用来记录数据库行为,监视数据库操作,提供redo和undo操作所需要的记录;dbf文件中记录了各个Tablespace空间下的数据,系统数据和用户数据就在其中,对数据建立的索引等也存在其中。在添加删除或修改数据的时候,只是修改相应的dbf文件中的某个数据块,而不是建立新的文件。高级数据库的存储问题非常复杂,因为涉及到读写性能和数据操作策略的影响(steal,no steal, force, no force)。
有兴趣的话,你可以参考oracle的官方文档说明,或者看看这个链接,讲的非常全面了:
www.cnblogs.com/fnng/archive/2012/09/17/2689716.html

数据库的问题

4. 关于数据库的问题

数据库并不是直接存储文件的。

数据库依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。

数据库你可以想象为一大堆数据表的集合,数据就存放在每个表中

图片,文件等也能存放在数据库的表中,不过需要转换成二进制编码以数据的格式存放,需要取出时再通过程序进行转换成为原来的格式


视频就不行了

5. 关于数据库的问题

一个数据库可以同时服务于两个软件,要使原有的数据库文件与新下载的软件连接起来,需要配置好数据库接口

关于数据库的问题

6. 关于数据库的问题

ACCESS是微软自带存放数据信息的介质,你用他来存放那么多数据量,还进行搜索功能,那简直慢得不得了。还是换个数据库吧,做起优化来还比较不错,如果还是要优化ACCESS的话,下面可以提供几种方法:

第一种:压缩

  要保证经常性的压缩你的程序代码。当你在开发和使用Microsoft Access数据库时,你要经常性地增加和删除数据、代码等等。现在的问题是Microsoft Access并不能有效地释放已分配的但被删除的对象空间,这将意味着即使你删除了一个对象,而这个对象仍然在你的数据库中占据空间。压缩数据库将迫使Microsoft Access真正删除这些对象并回收其占据的空间,从而使得你的数据库尽量小但却更有效。我曾把逐字逐句查询的平均时间减少了30%??50%,而做到这一点仅仅是通过去压缩那些由于经常使用又缺乏压缩而变得过度膨胀的数据库程序,因此,在运行程序的过程中,不要忽视压缩过程的重要性。正如你要定期清除硬盘数据碎片一样,你和你的用户也应当定期压缩数据库来保证它始终最有效地运行。

第二种优化只用代码和查询SQL
    你可能希望通过宏操作来搭建一个应用程序的模型,一旦你开始优化你的程序的最终性能,一定要把所有的宏重新写成代码。这主要是因为Microsoft Access代码要比宏运行得快的多。但遗憾的是有三个宏操作你不能将他们改写成代码,这三个宏是Autokeys、Autoexec和Addmenu操作,这三个宏在Microsoft Access中没有相应的等价类,因此你只能被迫使用他们。不过,你可以克服Autoexec的限制,只需要定义Autoexec为调用你的Access Basic Autoexec函数。

第三种优化数据类型声明
    当你在你的代码中声明数据类型时,你应该试着尽可能精确。因为若是一个变量的类型(如果没有特别声明,缺省为可变类型)非常灵活自由的话,那么这种类型同时也将是最浪费内存的一种类型。这样一来,如果你知道check Balance这个变量不需要超过4位小数精度的话,那么就把它定义成确定类型而不是可变类型。对你的过程函数的定义同样也可以如此操作(比如说,把函数PostCredit()声明为整形,而不是Function PostCredit())。请注意这样一个事实,如果你估计一个变量将会被处理成一个空值,那么你需要去把它定义成一个可变类型而不是一个确定的严格的数据类型,否则你会得到一个错误信息。同样地,要注意整形除法和浮点除法之间的差别。
    你可以参考一下

7. 关于数据库的问题.?

数据库中索引的优缺点
为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。 

也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?这种想法固然有其合理性,然而也有其片面性。虽然,索引有许多优点,但是,为表中的每一个列都增加索引,是非常不明智的。这是因为,增加索引也有许多不利的一个方面。第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 

索引是建立在数据库表中的某些列的上面。因此,在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列上创建索引,例如:在经常需要搜索的列上,可以加快搜索的速度;在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;在经常使用在where子句中的列上面创建索引,加快条件的判断速度。 

同样,对于有些列不应该创建索引。一般来说,不应该创建索引的的这些列具有下列特点:第一,对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。第二,对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。第三,对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。

关于数据库的问题.?

8. 关于数据库的几个问题

1.C
2.A
3.A
4.错误
5.错误
6.正确
7.
外模式
-模式,模式-内模式
8.
数据结构化
,(
数据共享
性高、
冗余度
低、易扩充)
9.
关系模型
,
面向对象模型
12.数据的安全性保护,数据的完整性保护
15.
实体完整性
,
参照完整性
16.外模式,模式
最新文章
热门文章
推荐阅读