活动介绍

构建AF-客户端管理器应用程序的数据库

立即解锁
发布时间: 2025-08-19 01:52:23 阅读量: 10 订阅数: 16
PDF

Flex与Spring构建RIA企业级应用

### 构建AF - 客户端管理器应用程序的数据库 #### 1. 数据库设计概述 几乎任何应用程序都需要一种获取和显示数据的方式,富互联网应用程序(RIAs)更是如此。应用程序设计的首要阶段之一是定义数据库模式和业务对象。对于AF - 客户端管理器应用程序,我们已经定义了应用程序用于管理数据的对象,现在需要为这些数据定义并构建一个持久存储位置。 数据库设计的主要目标是构建一个可扩展且健壮的解决方案,使其不会成为系统的瓶颈。架构需要支持繁重的服务器工作负载,处理所需的用户群,并提供稳定的数据管理解决方案。性能和可靠性也是任何数据库的重要特性。 数据库解决方案的扩展在很大程度上取决于用户群的规模。对于AF - 客户端管理器应用程序,我们不需要支持200,000个用户,用户数量很大程度上取决于用户组织的规模。因此,我们不需要考虑跨多个服务器托管数据库,必要时甚至可以将数据库与Web服务器托管在同一台计算机上。随着时间的推移,数据库可能会变得非常大,所以我们将构建一个可以随数据扩展的数据库模式。 #### 2. 数据库术语 在深入了解数据库设计的细节之前,让我们回顾几个术语的定义: - **数据库**:数据库是一组相关数据的集合,可以从外部源进行持久化存储。数据库可以非常复杂,包含数百万行数据,也可以简单到只是安全数据集中的几个用户。 - **表**:表由列和行组成,类似于电子表格。列被赋予唯一的名称以定义数据元素。 - **键**:键是指向一行或多行数据的唯一指示器。主键是可以标识表中单行的唯一标识符。外键是表中可以标识另一个表中一行的键。主键到外键的连接是关系数据库的基础。 #### 3. 数据库设计技巧 采用可靠的方法构建表有助于减轻跨多个表交付数据的压力。以下是一些良好数据库设计的准则: - 去除表中的冗余数据。将常见对象(如地址和电话号码)分离出来。 - 列不应代表像invoice1、invoice2等这样的数据集,这是行的用途。 - 小心使用表的AUTO_INCREMENT属性。在我们的示例中,我们需要为objectIdentifier值创建一个唯一的生成方案,以便每个表的主键始终具有唯一的编号。 - 尽可能减小存储需求,以减少磁盘空间消耗。 - 识别频繁查询,以正确调整数据库。 - 创建表时要牢记命名约定(表名区分大小写,列名不区分大小写)。 - 首次安装数据库时,会有一个初始用户root。设置密码,然后重命名该用户。 - 在适当的情况下,让Tomcat或应用程序服务器控制数据库连接池。 - 通过仅允许操作系统上的特殊用户访问,锁定数据库安装目录,这样可以保护数据文件,防止管理员或其他用户意外损坏它们。 - 不要将媒体对象(如文件和电影)存储在数据库中,最好只存储指向文件系统上媒体的指针。 #### 4. MySQL数据库概述 在开始为表执行CREATE TABLE语句之前,你需要了解MySQL对于开发RIAs重要的功能。这里使用的是MySQL社区服务器,可从http://dev.mysql.com/downloads免费下载。 #### 5. MySQL中的表类型 在MySQL中创建表时,可以指定其类型(使用ENGINE = 指令)。如果不指定表类型,MySQL将根据默认表类型的配置为你选择。对于构建RIAs,有三种表类型值得关注: | 表类型 | 描述 | | ---- | ---- | | HEAP | 当在MySQL中创建临时表时使用。当表大小适合数据库服务器的物理内存且更新较少时也可使用。 | | MyISAM | 当磁盘空间和读取效率是高优先级时最适合。数据库速度主要受底层硬件(特别是随机访问内存(RAM)的数量)限制。MyISAM通常是MySQL的默认存储引擎。 | | InnoDB | 提供数据库事务、行级锁定、外键约束和崩溃恢复。如果应用程序需要事务、更高的数据库安全性或许多并发用户进行更改,可考虑将表设置为InnoDB类型。 | 对于AF - 客户端管理器应用程序,我们将所有表设置为InnoDB类型,以利用其提供的高级功能。 #### 6. MySQL中的数据类型 在任何数据库中构建表的一部分是为每列定义数据类型。选择列数据类型决定了可以存储的信息类型。以下是MySQL支持的数据类型总结: | 类型 | 数据类型 | 描述 | | ---- | ---- | ---- | | CHAR() | 文本 | 固定字符集,0 - 255 | | VARCHAR() | 文本 | 可变字符集,0 - 255 | | TINYTEXT | 文本 | 最大255个字符的字符串 | | TEXT | 文本 | 最大65,535个字符的字符串 | | BLOB | 文本 | 最大65,535个字符的字符串 | | MEDIUMTEXT | 文本 | 最大16,777,215个字符的字符串 | | MEDIUMBLOB | 文本 | 最大16,777,215个字符的字符串 | | LONGTEXT | 文本 | 最大4,294,967,295个字符的字符串 | | LONGBLOB | 文本 | 最大4,294,967,295个字符的字符串 | | TINYINT() | 数字 | 正常范围 -128到127,无符号范围0到255 | | SMALLINT() | 数字 | 正常范围 -32,768到32,767,无符号范围0到65,535 | | MEDIUMINT() | 数字 | 正常范围 -8,388,608到8,388,607,无符号范围0到16,777,215 | | INT() | 数字 | 正常范围 -2,147,483,648到2,147,483,647,无符号范围0到4,294,967,295 | | BIGINT() | 数字 | 正常范围 -9,223,372,036,854,775,808到9,223,372,036,854,775,807,无符号范围0到18,446,744,073,709,551,615 | | FLOAT | 数字 | 带小数点的小数字 | | DOUBLE(,) | 数字 | 带小数点的大数字 | | DECIMAL(,) | 数字 | 以固定小数点字符串形式存储的DOUBLE | | DATE | 日期 | 格式化日期,YYYY - MM - DD | | DATETIME | 日期 | 格式化日期和时间,YYYY - MM - DD HH:MM:SS | | TIMESTAMP | 日期 | 格式化日期和时间,YYYYMMDDHHMMSS | | TIME | 日期 | 格式化时间,HH:MM:SS | | ENUM() | 其他 | 具有定义值的枚举列 | | SET | 其他 | 每列可以有多个定义值 | #### 7. 层次结构存储 在许多情况下,需要保留层次结构以在用户界面中显示。Flex有树视图,我们将在AF - 客户端管理器应用程序中使用它来排列项目任务。为了使用Flex中的ArrayCollection实现这一点,我们需要保留标识父子关系的行指示器。 一个管理数据库中层次结构的好方法是在负责层次结构的表中保留父标识符。以下是一个跟踪编程语言层次结构的数据库表示例: | objectIdentifier | languageName | nodeID | | ---- | ---- | ---- | | 1 | All Languages | 0 | | 2 | Flex | 1 | | 3 | ActionScript | 2 | | 4 | MXML | 2 | | 5 | Spring | 1 | | 6 | ORM | 5 | | 7 | Hibernate | 6 | | 8 | iBATIS | 6 | 可以看到,programming_lang表通过nodeID定义了父子关系。nodeID只是父对象的objectIdentifier。从数据库获取此列表后,我们可以根据objectIdentifier到nodeID的顺序和关系将其上传到树结构中。为了使这正常工作,需要按nodeID对查询进行排序,以便在Flex客户端中高效加载数据,如下所示: ```sql SELECT * from programm ```
corwn 最低0.47元/天 解锁专栏
赠100次下载
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

SW_孙维

开发技术专家
知名科技公司工程师,开发技术领域拥有丰富的工作经验和专业知识。曾负责设计和开发多个复杂的软件系统,涉及到大规模数据处理、分布式系统和高性能计算等方面。
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看

最新推荐

【高级图像识别技术】:PyTorch深度剖析,实现复杂分类

![【高级图像识别技术】:PyTorch深度剖析,实现复杂分类](https://www.pinecone.io/_next/image/?url=https%3A%2F%2Fsiteproxy.ruqli.workers.dev%3A443%2Fhttps%2Fcdn.sanity.io%2Fimages%2Fvr8gru94%2Fproduction%2Fa547acaadb482f996d00a7ecb9c4169c38c8d3e5-1000x563.png&w=2048&q=75) # 摘要 随着深度学习技术的快速发展,PyTorch已成为图像识别领域的热门框架之一。本文首先介绍了PyTorch的基本概念及其在图像识别中的应用基础,进而深入探讨了PyTorch的深度学习

未知源区域检测与子扩散过程可扩展性研究

### 未知源区域检测与子扩散过程可扩展性研究 #### 1. 未知源区域检测 在未知源区域检测中,有如下关键公式: \((\Lambda_{\omega}S)(t) = \sum_{m,n = 1}^{\infty} \int_{t}^{b} \int_{0}^{r} \frac{E_{\alpha,\alpha}(\lambda_{mn}(r - t)^{\alpha})}{(r - t)^{1 - \alpha}} \frac{E_{\alpha,\alpha}(\lambda_{mn}(r - \tau)^{\alpha})}{(r - \tau)^{1 - \alpha}} g(\

分布式应用消息监控系统详解

### 分布式应用消息监控系统详解 #### 1. 服务器端ASP页面:viewAllMessages.asp viewAllMessages.asp是服务器端的ASP页面,由客户端的tester.asp页面调用。该页面的主要功能是将消息池的当前状态以XML文档的形式显示出来。其代码如下: ```asp <?xml version="1.0" ?> <% If IsObject(Application("objMonitor")) Then Response.Write cstr(Application("objMonitor").xmlDoc.xml) Else Respo

分布式系统中的共识变体技术解析

### 分布式系统中的共识变体技术解析 在分布式系统里,确保数据的一致性和事务的正确执行是至关重要的。本文将深入探讨非阻塞原子提交(Nonblocking Atomic Commit,NBAC)、组成员管理(Group Membership)以及视图同步通信(View - Synchronous Communication)这几种共识变体技术,详细介绍它们的原理、算法和特性。 #### 1. 非阻塞原子提交(NBAC) 非阻塞原子提交抽象用于可靠地解决事务结果的一致性问题。每个代表数据管理器的进程需要就事务的结果达成一致,结果要么是提交(COMMIT)事务,要么是中止(ABORT)事务。

以客户为导向的离岸团队项目管理与敏捷转型

### 以客户为导向的离岸团队项目管理与敏捷转型 在项目开发过程中,离岸团队与客户团队的有效协作至关重要。从项目启动到进行,再到后期收尾,每个阶段都有其独特的挑战和应对策略。同时,帮助客户团队向敏捷开发转型也是许多项目中的重要任务。 #### 1. 项目启动阶段 在开发的早期阶段,离岸团队应与客户团队密切合作,制定一些指导规则,以促进各方未来的合作。此外,离岸团队还应与客户建立良好的关系,赢得他们的信任。这是一个奠定基础、确定方向和明确责任的过程。 - **确定需求范围**:这是项目启动阶段的首要任务。业务分析师必须与客户的业务人员保持密切沟通。在早期,应分解产品功能,将每个功能点逐层分

【PJSIP高效调试技巧】:用Qt Creator诊断网络电话问题的终极指南

![【PJSIP高效调试技巧】:用Qt Creator诊断网络电话问题的终极指南](https://www.contus.com/blog/wp-content/uploads/2021/12/SIP-Protocol-1024x577.png) # 摘要 PJSIP 是一个用于网络电话和VoIP的开源库,它提供了一个全面的SIP协议的实现。本文首先介绍了PJSIP与网络电话的基础知识,并阐述了调试前所需的理论准备,包括PJSIP架构、网络电话故障类型及调试环境搭建。随后,文章深入探讨了在Qt Creator中进行PJSIP调试的实践,涵盖日志分析、调试工具使用以及调试技巧和故障排除。此外,

嵌入式平台架构与安全:物联网时代的探索

# 嵌入式平台架构与安全:物联网时代的探索 ## 1. 物联网的魅力与挑战 物联网(IoT)的出现,让我们的生活发生了翻天覆地的变化。借助包含所有物联网数据的云平台,我们在驾车途中就能连接家中的冰箱,随心所欲地查看和设置温度。在这个过程中,嵌入式设备以及它们通过互联网云的连接方式发挥着不同的作用。 ### 1.1 物联网架构的基本特征 - **设备的自主功能**:物联网中的设备(事物)具备自主功能,这与我们之前描述的嵌入式系统特性相同。即使不在物联网环境中,这些设备也能正常运行。 - **连接性**:设备在遵循隐私和安全规范的前提下,与同类设备进行通信并共享适当的数据。 - **分析与决策

C#并发编程:加速变色球游戏数据处理的秘诀

![并发编程](https://img-blog.csdnimg.cn/1508e1234f984fbca8c6220e8f4bd37b.png) # 摘要 本文旨在深入探讨C#并发编程的各个方面,从基础到高级技术,包括线程管理、同步机制、并发集合、原子操作以及异步编程模式等。首先介绍了C#并发编程的基础知识和线程管理的基本概念,然后重点探讨了同步原语和锁机制,例如Monitor类和Mutex与Semaphore的使用。接着,详细分析了并发集合与原子操作,以及它们在并发环境下的线程安全问题和CAS机制的应用。通过变色球游戏案例,本文展示了并发编程在实际游戏数据处理中的应用和优化策略,并讨论了

多项式相关定理的推广与算法研究

### 多项式相关定理的推广与算法研究 #### 1. 定理中 $P_j$ 顺序的优化 在相关定理里,$P_j$ 的顺序是任意的。为了使得到的边界最小,需要找出最优顺序。这个最优顺序是按照 $\sum_{i} \mu_i\alpha_{ij}$ 的值对 $P_j$ 进行排序。 设 $s_j = \sum_{i=1}^{m} \mu_i\alpha_{ij} + \sum_{i=1}^{m} (d_i - \mu_i) \left(\frac{k + 1 - j}{2}\right)$ ,定理表明 $\mu f(\xi) \leq \max_j(s_j)$ 。其中,$\sum_{i}(d_i

深度学习 vs 传统机器学习:在滑坡预测中的对比分析

![基于 python 的滑坡地质灾害危险性预测毕业设计机器学习数据分析决策树【源代码+演示视频+数据集】](https://opengraph.githubassets.com/f6155d445d6ffe6cd127396ce65d575dc6c5cf82b0d04da2a835653a6cec1ff4/setulparmar/Landslide-Detection-and-Prediction) 参考资源链接:[Python实现滑坡灾害预测:机器学习数据分析与决策树建模](https://wenku.csdn.net/doc/3bm4x6ivu6?spm=1055.2635.3001.