数据库视图的确定、定义与应用
在数据库设计中,视图是一项非常重要的工具,它可以为用户提供特定的数据访问方式,同时还能对数据进行过滤和计算。下面我们将详细介绍视图的相关知识,包括确定视图需求、定义视图、使用计算字段、施加过滤条件以及记录视图信息等方面。
1. 视图的重要性及初步确定
视图在数据库中具有重要作用,它可以让用户仅访问指定的字段,并为相关表中的字段提供合适的值范围。在数据库设计过程中,我们需要确定一系列基本的视图。
与组织的用户和管理层合作是确定视图需求的重要步骤。在与他们首次会面之前,我们需要回顾整个设计过程中所做的笔记,尤其关注报告相关的内容,因为大多数组织都会花费大量时间生成和阅读报告。同时,还应复习在分析过程中收集的报告样本。
在与用户和管理层的会议中,可以从以下几个方面来确定视图需求:
-
回顾笔记
:讨论特定话题可能会激发对新视图或必要视图的想法。例如,在讨论任务目标时,可能会意识到需要某个视图。
-
审查样本
:查看设计过程早期收集的数据输入、报告和演示样本,特别是摘要式报告,可能会揭示对某些类型视图的需求。
-
检查表格和主题
:根据特定主题,团队成员可能会提出对视图的需求。比如提到“员工”主题时,可能会有人提出需要一个出于保密原因限制某些员工数据的视图。
-
分析表格关系
:很可能会发现许多需要为表格关系创建的多表视图,其中一些视图会与报告样本中确定的视图相吻合。
-
研究业务规则
:可以使用验证视图来强制执行对特定字段值范围施加约束的规则。
2. 定义视图
确定了视图需求后,接下来就是定义视图。这需要使用合适的表格和字段,并参考关系图来确定视图结构所需的表格和字段。确定好后,将视图定义记录在视图图中。
例如,对于一个名为“CUSTOMER CALL LIST”的视图,我们通过回顾设计过程中的笔记,发现它代表了关于客户及其订单的信息,并且可以从订单数据中确定客户的最后购买日期。通过查看“CUSTOMERS”和“ORDERS”表的关系图,确定需要使用“CUSTOMERS”表中的“CUSTFIRST NAME”、“CUSTLAST NAME”、“CUSTPHONE NUMBER”和“CUSTCITY”字段,以及“ORDERS”表中的“ORDER DATE”字段来构建该视图。
以下是“CUSTOMERS”和“ORDERS”表的关系图:
erDiagram
CUSTOMERS {
PK Customer ID
CustFirst Name
CustLast Name
CustStreet Address
CustState
CustZipcode
CustPhone Number
Status
CustCity
}
ORDERS {
PK Order Number
Employee ID
FK Customer ID
Ship Date
Order Date
}
CUSTOMERS ||--o{ ORDERS : "1 to N"
定义视图时,将这些字段分配给视图并记录在视图图中。完成后,视图图应如下所示:
erDiagram
CUSTOMERS {
PK Customer ID
CustFirst Name
CustLast Name
CustStreet Address
CustState
CustZipcode
CustPhone Number
Status
CustCity
}
ORDERS {
PK Order Number
Employee ID
FK Customer ID
Ship Date
Order Date
}
CUSTOMER_CALL_LIST {
CustFirst Name
CustLast Name
CustCity
CustPhone Number
Order Date
}
CUSTOMERS ||--o{ ORDERS : "1 to N"
CUSTOMERS ||--o{ CUSTOMER_CALL_LIST : "1 to N"
ORDERS ||--o{ CUSTOMER_CALL_LIST : "1 to N"
3. 使用计算字段
视图的一个有用特性是可以包含计算字段。计算字段可以显示连接、表达式或聚合函数的结果,这使得视图更加灵活。
对于“CUSTOMER CALL LIST”视图,为了显示每个客户的最后购买日期,需要添加一个计算字段“LAST PURCHASE DATE”,使用“Max(Order Date)”表达式从“ORDER DATE”字段中检索正确的日期。同时,为了显示完整的客户姓名,可以创建一个计算字段“CUSTOMER NAME”,使用“CustLast Name & “, “ & CustFirst Name”表达式将客户的名字和姓氏连接起来。
修改后的视图图如下所示:
erDiagram
CUSTOMERS {
PK Customer ID
CustFirst Name
CustLast Name
CustStreet Address
CustState
CustZipcode
CustPhone Number
Status
CustCity
}
ORDERS {
PK Order Number
Employee ID
FK Customer ID
Ship Date
Order Date
}
CUSTOMER_CALL_LIST {
CustCity
Customer Phone Number
Customer Name
Last Purchase Date
}
CUSTOMERS ||--o{ ORDERS : "1 to N"
CUSTOMERS ||--o{ CUSTOMER_CALL_LIST : "1 to N"
ORDERS ||--o{ CUSTOMER_CALL_LIST : "1 to N"
在定义新视图时,可以参考之前设计过程中创建的计算字段列表,若发现合适的计算字段,可按照上述示例进行创建。如果创建了列表中没有的计算字段,要记得将其添加到列表中,以保持列表的更新和有序。
4. 施加过滤条件
视图的另一个有用特性是可以对一个或多个字段施加条件来过滤显示的记录。例如,对于“CUSTOMER CALL LIST”视图,如果包含“CUSTSTATE”字段,并且希望只显示华盛顿州的客户记录,可以在“CUSTSTATE”字段上设置条件“CustState = “WA””。如果还想进一步过滤,只显示特定城市的客户记录,可以添加条件“CustCity In (“Bellevue,” “Olympia,” “Redmond,” “Seattle,” “Spokane,” “Tacoma”)”。
需要注意的是,在视图中使用条件时,必须确保条件所测试的字段包含在视图结构中,否则无法施加条件。而且,由于无法在视图图上显示过滤条件,所以需要将其记录在视图规格表中。
5. 使用视图规格表记录视图
每个视图图都需要附带一个视图规格表,用于记录视图的特性。视图规格表包含以下内容:
|项目|说明|
| ---- | ---- |
|名称|视图的名称,需根据创建表名的准则进行测试,但视图名称可以隐式或显式地标识多个主题。|
|类型|指示是定义数据视图、聚合视图还是验证视图。|
|基表|指定视图的基表名称,虽然视图图中会显示这些表,但在此列出是为了方便。|
|计算字段表达式|记录视图中包含的计算字段的表达式,计算字段名称遵循创建字段名称的准则,但有两个例外:可以在名称中隐式或显式地标识多个特性,并且可以使用名称的复数形式。|
|过滤器|记录视图用于过滤显示记录的条件,包括被测试的字段和测试表达式。|
以下是“CUSTOMER CALL LIST”视图的视图规格表示例:
|描述|此视图提供信息,使我们能够对华盛顿州的客户进行跟进电话,并显示客户的最后购买日期。|
| ---- | ---- |
|名称|Customer Call List|
|类型|数据视图|
|基表|CUSTOMERS, ORDERS|
|计算字段表达式|CUSTOMER NAME: CustLast Name & “, “ & CustFirst Name
LAST PURCHASE DATE: Max(ORDER DATE)|
|过滤器|CUST STATE: =“WA”
CUST CITY: In (“Bellevue,” “Olympia,” “Redmond,” “Seattle,” “Spokane,” “Tacoma”)|
6. 案例研究
在实际项目中,我们与Mike及其团队合作确定数据库的视图需求。会议议程包括回顾设计过程中的笔记、审查各种样本、检查数据库表所代表的主题、分析表关系以及研究业务规则。
在会议过程中,确定了几个需要定义的视图,包括“PREFERRED CUSTOMERS”视图和“VENDOR PRODUCT COUNT”视图。
- PREFERRED CUSTOMERS视图 :基于“CUSTOMERS”表,使用“CUSTOMERID”、“CUSTFIRST NAME”、“CUSTLAST NAME”、“CUSTHOME PHONE”和“STATUS”字段构建视图结构。为了将客户的名字和姓氏一起显示,创建了一个计算字段“CUSTOMER NAME”,使用“CUSTFIRST NAME & “ ” & CUSTLAST NAME”表达式。同时,使用“Status = “Preferred””条件过滤视图数据。
- VENDOR PRODUCT COUNT视图 :以“VENDORS”和“PRODUCTS”表为基表,使用“VENDORS”表中的“VENDORNAME”字段显示供应商名称。创建了一个计算字段“PRODUCT COUNT”,使用“Count(ProdName)”表达式显示每个供应商提供的产品总数。
通过以上步骤,我们可以全面地确定、定义和记录数据库中的视图,为用户提供更便捷的数据访问和分析方式。在实际应用中,还需要对视图文档进行审查,确保视图定义正确、计算字段合适、过滤条件有效,并且每个视图都有完整的视图图和视图规格表。这样,在最终将数据库部署到关系数据库管理系统(RDBMS)时,这些视图将发挥重要作用。
数据库视图的确定、定义与应用(续)
7. 审查视图文档
完成视图的定义和文档记录后,需要对所有视图进行再次审查,以确保每个视图所提供信息的质量值得付出的努力。审查时可从以下几个方面进行考虑:
-
视图定义的正确性
:思考视图应提供的信息,确定是否为所需信息建立了正确类型的视图,是否使用了合适的基表来定义视图,以及视图结构中是否包含了所有必要的字段。
-
计算字段的适用性
:检查计算字段是否提供了相关且有意义的信息,是否有助于增强视图显示数据的方式。
-
过滤条件的有效性
:首先判断该视图是否需要过滤条件,如果需要,要明确希望视图显示哪些记录,并确认过滤条件是否能正确工作。
-
文档的完整性
:确保每个视图都有视图图和视图规格表,这些文档在将数据库部署到RDBMS时将非常有用。
8. 视图审查的具体操作流程
为了更清晰地展示视图审查的过程,我们可以使用以下流程图:
graph LR
A[开始审查视图] --> B{视图定义是否正确?}
B -- 是 --> C{计算字段是否适用?}
B -- 否 --> D[修正视图定义]
D --> B
C -- 是 --> E{过滤条件是否有效?}
C -- 否 --> F[调整计算字段]
F --> C
E -- 是 --> G{文档是否完整?}
E -- 否 --> H[修改过滤条件]
H --> E
G -- 是 --> I[审查完成]
G -- 否 --> J[补充文档]
J --> G
9. 视图在实际项目中的应用总结
在与Mike及其团队的项目中,我们通过一系列步骤确定并定义了多个视图,如“PREFERRED CUSTOMERS”视图和“VENDOR PRODUCT COUNT”视图。这些视图的创建过程可以总结为以下步骤:
1.
确定视图需求
:与用户和管理层合作,通过回顾笔记、审查样本、检查表格和主题、分析表格关系以及研究业务规则来确定视图需求。
2.
定义视图结构
:根据需求,选择合适的基表和字段,参考关系图来构建视图结构,并将其记录在视图图中。
3.
添加计算字段
:根据视图的具体需求,添加计算字段以显示连接、表达式或聚合函数的结果,增强视图的灵活性和实用性。
4.
施加过滤条件
:对视图中的字段施加条件,过滤显示的记录,以满足特定的业务需求。
5.
记录视图信息
:使用视图规格表记录视图的名称、类型、基表、计算字段表达式和过滤条件等信息。
6.
审查视图文档
:对视图文档进行审查,确保视图定义正确、计算字段合适、过滤条件有效,并且文档完整。
10. 不同类型视图的特点和应用场景
为了更好地理解不同类型视图的作用,我们可以通过以下表格进行对比:
|视图类型|特点|应用场景|
| ---- | ---- | ---- |
|数据视图|提供特定的数据子集,方便用户访问和查看数据|例如“CUSTOMER CALL LIST”视图,为用户提供客户的联系信息和最后购买日期|
|聚合视图|对数据进行汇总和统计,提供统计信息|如“VENDOR PRODUCT COUNT”视图,显示每个供应商提供的产品总数|
|验证视图|用于强制执行对特定字段值范围施加约束的规则|在某些业务规则中,确保数据的有效性|
11. 视图使用的注意事项
在使用视图时,还需要注意以下几点:
-
字段的包含
:在视图中使用条件或计算字段时,必须确保相关字段包含在视图结构中,否则无法实现相应的功能。
-
表达式的调整
:在填写视图规格表的计算字段表达式和过滤条件时,使用熟悉的表达式,在将数据库部署到RDBMS时,根据需要进行调整。
-
名称的规范
:视图名称和计算字段名称应遵循一定的命名准则,虽然有一些特殊情况允许一定的灵活性,但尽量保持名称的简洁和清晰。
12. 总结与展望
通过本文的介绍,我们了解了数据库视图的确定、定义、使用和审查的全过程。视图作为数据库设计中的重要工具,可以为用户提供更便捷的数据访问和分析方式。在实际项目中,我们可以根据业务需求创建不同类型的视图,并通过合理的设计和审查,确保视图的质量和有效性。
未来,随着数据库技术的不断发展,视图的功能可能会进一步增强,例如支持更复杂的计算和分析。同时,在大数据和云计算环境下,视图的应用场景也将更加广泛。我们需要不断学习和掌握新的技术,以更好地利用视图来满足各种业务需求。
总之,正确使用视图可以提高数据库的性能和可用性,为企业的决策提供有力支持。希望本文能帮助读者更好地理解和应用数据库视图。
数据库视图的确定、定义与应用详解
超级会员免费看
1152

被折叠的 条评论
为什么被折叠?



