《数据建模资产管理数据库设计报告.doc》由会员分享,可在线阅读,更多相关《数据建模资产管理数据库设计报告.doc(25页珍藏版)》请在三一办公上搜索。
1、资产管理数据库设计报告班级:xxxxxxx姓名:xxx学号:xxxxxxxx数据库设计资产管理31逻辑数据库设计31.1 资产管理31.2使用逻辑数据库设计方法52物理数据库设计131.1设计基本表132.2 设计派生数据的表示212.3 设计派生数据的表示212.4 分析事务222.5 选择文件组织方式222.6 选择索引222.7 设计用户视图232.8 设计访问规则23数据库设计资产管理1 逻辑数据库设计1.1 资产管理目前能够从事资产管理业务的公司除了证券公司、基金公司、信托公司以外还有第三方理财公司,从某种意义上来说,第三方理财公司在资产管理市场上的拓展和定位有些类似于现如今的私募基
2、金,将专家理财和灵活的合作条款捆绑嫁接作为打开资产管理市场的突破口。像诺亚财富,利得财富都是这样的第三方理财公司。1.1.1 数据需求1.员工员工中每个成员的详细信息包括员工号、姓名、地址(街区、城市、州、邮编)、工作电话号码、家庭电话号码、传真号、职位、性别、薪水、入职日期。在整个业务中,员工号是唯一的。员工包括经理、主管、秘书、普通员工。2.资产表资产表详细信息表包括资产编号、资产描述、资产序列号、到手日期、进货价格、当前价格、注册日期、下一次维护时间、员工编号、资产种类编号、状态编号。其中资产编号和资产序列号是(唯一的)主键,员工编号、资产种类编号、状态编号都是外键与员工表、资产种类表、
3、状态表进行外键关联。3.资产种类表资产种类表详细信息包括资产种类编号、资产种类描述。其中资产种类编号是(唯一的)主键。4.维护表维护表详细信息表包括维护编号、维护日期、维护时的描述、维护费用、资产编号、员工编号、代理编号。其中维护编号是(唯一的)主键,资产编号、员工编号、代理编号都是外键与资产表、员工表、代理表进行外键关联。5.服务代理表服务代理表详细信息包括代理编号、代理名字、代理街、代理城市、代理情形、代理邮编、代理电话号、代理传真号、代理邮箱地址、代理网站地址、联系人姓名、联系人电话号、联系人传真号、联系人邮箱地址。其中代理编号是(唯一的)主键。其中代理名字、代理电话号、代理传真都是唯一
4、的,是代理表的替换键,替换键可以是数据表内不作为主键的其他任何列,只要该键对该数据表唯一即可。换句话说,在唯一列内不允许出现数据重复的现象。6资产状态表资产状态表详细信息包括状态编号、状态描述。其中状态编号为(唯一的)主键。7.估价表估价表的详细信息包括估价编号、估价日期、评估价格、产品编号、员工编号。其中估价编号是(唯一的)主键,资产编号和员工编号是外键与资产表和员工表进行外键关联1.1.2 事务需求1.数据库应该支持下述事务(a) 创建和维护记录关于资产种类、资产状态和资产的详细信息。(b) 创建和维护记录代理的详细信息和记录。(c) 创建和维护维护过程详细信息以及维护详细花费的记录。(d
5、) 创建和维护估价的详细信息和该产品的现有价值。(e) 创建和维护员工的详细信息。2.数据应该能够支持下述查询事务(a) 以表单形式列出资产的名字、资产的进货价格、每个资产的编号,按资产当前价格进行排序。(b) 以表单形式列出员工的姓名、电话号,以及他们的家庭住址的详细信息。(c) 列出对某一给定的资产进行评估的详细信息。(d) 可以列出某个员工管理多少资产的详细信息。(e) 以报表形式列出到某一资产的所有详细信息。1.2使用逻辑数据库设计方法1.2.1 步骤1.1: 标识实体逻辑数据库设计的第一个步骤是标识在数据库中必须表述的主实体。有上面的描述,可以标识如下实体:Employee(员工)A
6、sset(资产)AssetCategory(资产种类)Maintenance Staff(维护工)ServiceAgent(服务代理)(资产状态)Valuation Staff(估价人员)将实体存档实体名描述别名事件Employee公司员工员工Asset公司拥有的财产(如打印机、汽车、桌子、椅子等)财富每个资产分配各一个员工AssetCategory资产分类财富类别辨别资产之间的不同Maintenance Staff维护工 修理工负责维修公司所拥有的资产ServiceAgent帮助维护资源的公司维护公司公司有一个或者多个服务代理Status资产的状态 状态表示公司所拥有的资产状态Valuati
7、on Staff评估资产当前价值 估价评估资产当前价格1.2.2 步骤1.2:标识关系标识完实体后,下一步就是标识存在于这些实体间的所有关系。对于资产管理的实体关系,如图所示。实体关系实体EmployeeAssignedAssetAssetMaintainedByValuedByMaintenanceValuationAssetCategorycontainsAssetMaintenance StaffCarriesOutMaintenanceServiceAgentPerformsValuationStatusforAssetValuation StaffforAsset图11. 确定关系的
8、多样性约束标识完要创建的关系后,现在应该确定每个关系的多样性约束。实体多样性关系实体多样性Employee1.11.11.1LeaderHasAssignedEmployeeMaintenanceAsset1.*1.*0.*Asset1.11.1ContainContainMaintenanceValuation1.*1.*AssetCategory1.1ContainAsset1.*Maintenance Staff0.1CarriesOut Maintenance0.*ServiceAgent0.1PerformsMaintenance0.*Status1.1ForAsset1.*Valu
9、ation Staff1.1ForAsset1.*图22. 使用实体-关系(ER)建模在数据库设计阶段,将创建几个代表资产管理的ER模型。其中员工有自身的一对多的关系,属于公司员工,与资产、估价、维护进行外键关联。其中资产具有资产种类、资产状态。其中维护具有代理员工。故有如下ER图。图31.2.3 步骤1.3:标识实体或关系的有关属性下一个步骤是标识与已经标识的实体或关系有关的属性。对于资产管理而言,应该标识如图所示的与实体有关的属性。实体属性EmployeeemployeeNo、name、position、salaryServiceAgentagentNo、agentName、agentSt
10、reet、agentCity、agentState、agentZipCode、agentTelNo、agentFaxNo、agentEmailAddress、agentWebAddress、contactName、contactTelNo、contactFaxNo、contactEmailAddressAssetCategoryassetCategoryNo、assetCategoryDescriptionStatusstatusNo,statuDescriptionAssetassetNo、assetDescription、serialNo、dataAcquired、purchasePric
11、e、currentValue、dateSold、nextMaintenanceDate、employeeNo、assetCategoryNo、statusNoMaintenancemaintenanceNo、maintenanceDate、maintenanceDescription、maintenanceCost、assetNo、employeeNo、agentNoValuationvaluationNo、valuationDate、valuationPrice、assetNo、employeeNo图41.2.4 步骤1.4:确定属性域1. 资产编号的属性域是一个number类型的数字2.
12、资产描述的属性域是一个最多为200位字符的varchar2类型的字符串3. 资产序列号的属性域是一个最多为50位字符的varchar2类型的字符串4. 资产种类编号的属性域是一个number类型的数字5. 资产种类描述的属性域是不字长的定长字符串6. 资产状态编号的属性域是一个number类型的数字7. 资产状态描述的属性域是一个最多为200位字符的varchar2类型的字符串8. 代理编号的属性域是一个number类型的数字9. 代理姓名的属性域是一个最多为50位字符的varchar2类型的字符串10. 代理所在地区的属性域是一个最多为50位字符的varchar2类型的字符串11. 代理处理
13、情形的属性域是一个最多为200位字符的varchar2类型的字符串12. 代理电话的属性域是一个11位字符的定长varchar2类型的字符串13. 代理传真号的属性域是一个12位字符长的定长varchar2类型的字符串14. 代理E-mail地址是以注册网站域名.com结尾的50位字符的varchar2类型的字符串15. 代理网址的属性域是一个以http:/www.开头的 最多为50位字符的varchar2类型的字符串16. 联系人电话的属性域是一个11位字符的定长varchar2类型的字符串17. 联系人传真号的属性域是一个12位字符长的定长varchar2类型的字符串18. 联系人E-ma
14、il地址是以注册网站域名.com结尾的50位字符的varchar2类型的字符串19. 员工编号的属性域是一个number类型的数字20. 员工名字的属性域是一个最多为50位字符的varchar2类型的字符串1.2.5 步骤1.5:确定候选键、主键和备用键属性这个步骤主要是为实体标识候选键,然后选择其中之一作为主键。在标识主键的过程中,要特别注意实体是强实体还是弱实体。其中的Asset离开了AssetCategory将不存在,故AssetCategory依赖Asset为弱实体;Employee离开 Asset还是存在的实体,故Employee不依赖于Asset为强实体;Maintenance为强
15、实体。但是AssetCategory、Valuation都是依赖于Asset而存在的,故三者均为弱实体。在标识候选键时,应该注意到各个实体的主键及环境的考虑。如图所示。1.2.6 步骤1.6:特化和泛化实体1.2.7 步骤1.7:检查模型的数据冗余1. 重新检查一对一关系。其中资产实体中的信息已经包含在资产信息表中,故资产实体的存在是多余的。应该删掉资产实体。2. 删除冗余关系。1.2.8 步骤1.8:检查模型是否支持用户事务在这个步骤中,检查已经创建的局部逻辑数据模型是否支持用户所需的事务。检查包括:1.数据模型中是否存在必要的属性。2.如果属性要从多个实体中得到,则两个实体间是否有通路;换
16、而言之,在两个实体间要有已经标识了的关系。如图所示:1.2.9 步骤2.1:创建表在这个步骤中,从逻辑数据模型创建表达用户视图中所描述的实体和关系的表,这时,要为关系数据库使用数据库设计语言(DDL)。将从逻辑数据模型创建表的全部结构都存档。Employee(employeeNo、name、position、salary、branchNo)Primary Key employeeNoAssetCategory(assetCategoryNo、assetCategoryDescription)Primary Key assetCategoryNoStatus(statusNo,statuDesc
17、ription)Primary Key statusNoValuation(valuationNo、valuationDate、valuationPrice、assetNo、employeeNo)Primary Key valuationNoForeign Key assetNo references Asset(assetNo)Foreign Key employeeNo references Employee(employeeNo)ServiceAgent(agentNo、agentName、agentStreet、agentCity、agentState、agentZipCode、age
18、ntTelNo、agentFaxNo、agentEmailAddress、agentWebAddress、contactName、contactTelNo、contactFaxNo、contactEmailAddress)Primary Key agentNoAlternate Key agentNameAlternate Key agenTelNoAlternate Key agentFaxNoAsset(assetNo、assetDescription、serialNo、dataAcquired、purchasePrice、currentValue、dateSold、nextMainten
19、anceDate、employeeNo、assetCategoryNo、statusNo)Primary Key assetNoAlternate Key serialNoForeign Key employeeNo references Employee(employeeNo)Foreign Key assetCategoryNo references AssetCategory(assetCategoryNo)Foreign Key statusNo references Status(statusNo)1.3.0 步骤2.2:用规范化方法检查表结构在这个步骤中,要确保上一步所建的表至少要
20、满足第三范式(3NF)。如果满足不了第三范式,则可能是逻辑数据模型中的某些部分是错误的,或者是从模型产生表的时候产生了错误。1.3.1 步骤2.3:检查模型是否支持用户事务这个步骤与步骤1.8类似,在这个步骤中,除了要检查从实体到表的映射关系并且要确定外键之外,在这个情景下,还可以再次检查从实体到表的映射是否正确地完成,以及所创建的表是否支持标识的用户事务。1.3.2 步骤2.4:检查业务规则业务规则是为了防止数据库不一致而强加的约束。六种完整性约束中,有四种在上一步已经标识了,并且存档在数据字典中。这四种是:需要的数据、属性域的约束、实体完整性和多样性。剩下两种为:参照完整性和其他业务规则。
21、1.参照完整性考虑两点:(1)标识外键是否可以为空(NULL)。通常,如果关系中子表部分是强制的,那么就不允许为空。如果子表部分是可选的,那么就允许为空。(2)标识现有约束条件,表明外键的插入、更新或者产出情况。通常,要为每个外键明确说明两个动作:一个是ON UPDATE动作,另一个是ON DELETE动作,用于表明当在父表中更新或删除一条记录时,如何保证参照完整性。如图所示:MaintenancenceForeign Key assetNo references Asset(assetNo) ON UPDATE CASCADE ON DELETE NO ACTIONForeign Key e
22、mployeeNo references Employee(employeeNo) ON UPDATE CASCADE ON DELETE NO ACTIONForeign Key agentNo references ServiceAgent(agentNo) ON UPDATE CASCADE ON DELETE NO ACTIONAssetForeign Key employeeNo references Employee(employeeNo) ON UPDATE CASCADE ON DELETE NO ACTIONForeign Key assetCategoryNo refere
23、nces AssetCategory(assetCategoryNo) ON UPDATE CASCADE ON DELETE NO ACTIONForeign Key statusNo references Status(statusNo) ON UPDATE CASCADE ON DELETE NO ACTIONValuationForeign Key assetNo references Asset(assetNo) ON UPDATE CASCADE ON DELETE NO ACTIONForeign Key employeeNo references Employee(employ
24、eeNo) ON UPDATE CASCADE ON DELETE NO ACTION2物理数据库设计1.1设计基本表1.1.1 在oracle 10g 中创建基本表 用户为sjjm密码为sjjm使用create table 语句,因此可以这样定义:主键,使用PRIMARY KEY子句。备用键,使用UNIQUE关键字。默认值,使用DEFAULT子句。非空列,使用NOT NULL关键字。外键,使用FOREIGN KEY子句。其他列或表约束,使用CHECK和CONSTRAINT子句。Employee:CREATE TABLE EMPLOYEE (EMPLOYEENO NUMBER, NAME VA
25、RCHAR2(50), POSITION VARCHAR2(50), SALARY VARCHAR2(50), CONSTRAINT PK_EMPLOYEE PRIMARY KEY (EMPLOYEENO) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE SYS
26、TEM ENABLE )在plsql中使用create table 语句在oracle中建立Employee空表的截图Asset:CREATE TABLE ASSET (ASSETNO NUMBER, ASSETDESCRIPTION VARCHAR2(200), SERIALNO VARCHAR2(50), DATEACQUIRED DATE, PURCHASEPRICE VARCHAR2(50), CURRENTVALUE VARCHAR2(50), DATESOLD DATE, NEXTMAINTENANCEDATE DATE, EMPLOYEENO NUMBER, ASSETCATEG
27、ORYNO NUMBER, STATUSNO NUMBER, CONSTRAINT PK_ASSET PRIMARY KEY (ASSETNO) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE SYSTEM ENABLE, CONSTRAINT SERIALNO
28、 UNIQUE (SERIALNO) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE SYSTEM ENABLE, CONSTRAINT FK_EMPLOYEE FOREIGN KEY (EMPLOYEENO) REFERENCES EMPLOYEE (EMPL
29、OYEENO) ENABLE, CONSTRAINT FK_ASSETCATEGORY FOREIGN KEY (ASSETCATEGORYNO) REFERENCES ASSETCATEGORY (ASSETCATEGORYNO) ENABLE, CONSTRAINT FK_STATUS FOREIGN KEY (STATUSNO) REFERENCES STATUS (STATUSNO) ENABLE )在plsql中使用create table 语句在oracle中建立Asset空表的截图AssetCategory:CREATE TABLE ASSETCATEGORY (ASSETCAT
30、EGORYNO NUMBER, ASSETCATEGORYDESCRIPTION VARCHAR2(200), CONSTRAINT PK_ASSETCATEGORY PRIMARY KEY (ASSETCATEGORYNO) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABL
31、ESPACE SYSTEM ENABLE )在plsql中使用create table 语句在oracle中建立AssetCategory空表的截图Maintenance:CREATE TABLE MAINTENANCE (MAINTENANCENO NUMBER, MAINTENANCEDATE DATE, MAINTENANCEDESCRIPTION VARCHAR2(200), MAINTENANCECOST VARCHAR2(50), ASSETNO NUMBER, EMPLOYEENO NUMBER, AGENTNO NUMBER, CONSTRAINT PK_MAINTENANCE
32、 PRIMARY KEY (MAINTENANCENO) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE SYSTEM ENABLE, CONSTRAINT FK_EMPLOYEEM FOREIGN KEY (EMPLOYEENO) REFERENCES EMP
33、LOYEE (EMPLOYEENO) ENABLE, CONSTRAINT FK_ASSETM FOREIGN KEY (ASSETNO) REFERENCES ASSET (ASSETNO) ENABLE, CONSTRAINT FK_SERVICEAGENTM FOREIGN KEY (AGENTNO) REFERENCES SERVICEAGENT (AGENTNO) ENABLE )在plsql中使用create table 语句在oracle中建立Maintenance空表的截图ServiceAgent:CREATE TABLE SERVICEAGENT (AGENTNO NUMBE
34、R, AGENTNAME VARCHAR2(50), AGENTSTREET VARCHAR2(50), AGENTCITY VARCHAR2(50), AGENTSTATE VARCHAR2(200), AGENTZIPCODE VARCHAR2(50), AGENTTELNO VARCHAR2(11), AGENTFAXNO VARCHAR2(12), AGENTEMAILADDRESS VARCHAR2(50), AGENTWEBADDRESS VARCHAR2(50), CONTACTNAME VARCHAR2(50), CONTACTTELNO VARCHAR2(11), CONTA
35、CTFAXNO VARCHAR2(12), CONTACTEMAILADDRESS VARCHAR2(50), CONSTRAINT PK_SERIVICEAGENT PRIMARY KEY (AGENTNO) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE S
36、YSTEM ENABLE, CONSTRAINT AGENTNAME UNIQUE (AGENTNAME) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE SYSTEM ENABLE, CONSTRAINT AGENTTELNO UNIQUE (AGENTTEL
37、NO) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE SYSTEM ENABLE, CONSTRAINT AGENTFAXNO UNIQUE (AGENTFAXNO) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
38、 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE SYSTEM ENABLE )在plsql中使用create table 语句在oracle中建立ServiceAgent空表的截图Status:CREATE TABLE STATUS (STATUSNO NUMBER, STATUSDESCRIPTION VARCHAR2(200), CONSTRAIN
39、T PK_STATUS PRIMARY KEY (STATUSNO) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE SYSTEM ENABLE )在plsql中使用create table 语句在oracle中建立Status空表的截图Valuation:CR
40、EATE TABLE VALUATION (VALUATIONNO NUMBER, VALUATIONDATE DATE, VALUATIONPRICE VARCHAR2(50), ASSETNO NUMBER, EMPLOYEENO NUMBER, CONSTRAINT PK_VALUATION PRIMARY KEY (VALUATIONNO) USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCR
41、EASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE SYSTEM ENABLE, CONSTRAINT FK_ASSETV FOREIGN KEY (ASSETNO) REFERENCES ASSET (ASSETNO) ENABLE, CONSTRAINT FK_EMPLOYEEV FOREIGN KEY (EMPLOYEENO) REFERENCES EMPLOYEE (EMPLOYEENO) ENABLE )在plsql中使用create table 语句在oracle中建立Valuation空表的截图
42、2.2 设计派生数据的表示如果一个列的值可以从其他列得到,则此列就称为派生列或计算列。例如,下述列都是派生列:财产进行维护所花费的总费用。财产进行维护的总次数。从物理数据库设计的角度看,将派生列存储在数据库中还是每当需要时再进行计算,需要进行一下权衡。主要从以下两点考虑:存储派生数据的代价以及维护它与派生它数据的一致性的代价。每次计算它需要的代价。根据性能约束来选择一种代价低的方式。对于上面的两个派生列中的第一个来说,应该在Asset表中存储附加的列来标识每个财产目前为止进行维护的总费用。Maintenance表和Asset表有新的派生列。2.3 设计派生数据的表示2.4 分析事务创建了基本表
43、、完整性约束和业务规则后,下一步就是分析事务为每个基本表确定合适的文件组织方式和索引。在逻辑数据库设计方法中标识了事务,为了集中在可能会出现问题的区域,使用如下方法:1将所有的事务路径映射到表添加外键关联,设置备用键2确定最常被访问的表最长被访问的表示Asset表、Maintenance表、Valuation表3分析涉及到这些表的事务可以列出资产的详细信息、维护信息、资产类别、资产状态等的报表2.5 选择文件组织方式物理数据库设计的主要目标之一就是以有效方式存储数据。例如,如果想按照姓名以字母顺序检索员工记录,则用员工姓名对文件排序就是很好的文件组织方式。但是,如果想要检索所有所有男性员工,则
44、按照员工姓名排序的文件就不是好的文件组织方式。一些文件组织方式对成批处理数据进入数据库是很有效率的。因此,如果目标DBMS允许,这步的目标是为每个表选择最佳的文件组织方式。在许多方面,可能发现关系DBMS基本不允许选择文件组织方式,尽管有些DBMS允许创建索引。2.6 选择索引为表选择正确的文件组织方式的一种方法是保持记录的无序性并且创建所需数目的二级索引。另一种方法是通过指定主键或聚簇索引使表中记录为有序的。这种情况下,应该选择如下列来排序后者聚簇索引记录。经常用于连接操作的列,因为这样使连接更有效率。在表中经常按某列的顺序访问记录的列。如果选择排序的列是表的键,那么该索引就是主索引;如果排序的列不是键,那么该索引就是聚簇索引。记住每个文件只能有一个主索引或者是一个聚簇索引,而不能两者兼有。2.7 设计用户视图create or replaceforce | noforce view user. vi