了解表的结构以及表在 Azure SQL 中的用途是开发良好的应用程序数据模型的关键。
在卡牌游戏联机参考应用程序中,许多不同类型的数据需要存储在数据库中,以便在此数字媒体中可以尽可能准确地表示实体卡牌。
在本单元中,你将了解 Azure SQL 中的数据库表的基础知识、它们的存储方式以及它们可以保存的数据类型。
关系数据库是一种将数据存储在行和列中的数据库,这些行和列组合在一起以创建称为表的结构,类似于将数据输入 Excel 电子表格。 可以通过唯一键值关联数据库中的表。例如,在订单表中引用产品表中的产品 ID。 还可在具有一对多关系或父子关系的层次结构中拥有相关的键值。 数据模型是关系数据库中的表及其相互连接或引用方式的表示形式。
表是关系数据库中的众多对象之一,但它是迄今为止最重要的对象。 如果没有表,我们将如何以及在哪里存储数据? 表类似于电子表格,由列和行组成。 如果可以只使用电子表格,为何还要使用数据库? 假设计算机上有成千上万的电子表格,其中一些包含数百万或数十亿行。 如何搜索这些文件? 这些文件如何在逻辑上和物理上存储和排序? 数据库让我们能够以结构化和有序的方法存储这些“电子表格”,以亚秒级的速度即时访问任何表中的任何记录。
与电子表格类似,表由行(水平元素)和列(垂直元素)组成。 可以将列视为表所存储或描述的属性。 可以将表中的行视为由这些列中的数据构成的记录。 当行和列相交时,它称为字段,就像电子表格中的单元格一样。 虽然可以在表中存储的记录数或行数受数据库有权访问的计算机存储量或磁盘空间量的限制,但列数限制为 1,024。 具有数百列的表很难维护,就像在杂物抽屉底找回形针一样艰难。 表是数据库中的永久结构,但在某些情况下可以使用临时表,本模块稍后将对此进行介绍。
在以行和列格式构建的这些表中,数据可以存储为数字、日期、文本、二进制对象甚至 JSON 文档。 除了表之间的关系外,还可以应用规则集来限制或增强表中可以存储的数据。
可以应用的一些规则包括:
- 能够限制行中的字段是否可以为 null 或需要值
- 如果未提供任何值,则分配默认值
- 定义和限制可接受的值
- 根据表中的其他列自动插入从计算值派生的数据
卡牌游戏信息应用程序将具有卡牌名、卡牌 ID 和卡牌颜色等字段,每张卡牌都是表中的一条记录。 使用此场景,可以看到表中的行和列如何保存下图中特定于其中一张游戏卡牌的信息。
Azure SQL 还具有内存优化表,这些表存储在数据库服务器的主内存中,其中行会直接读取和写入内存。 但是,如果存在重启或灾难恢复场景,磁盘上还有表的物理副本,用于确保持久性。 出于你在本模块中的目的,你不会使用内存优化表,但知道它们存在很重要。
如你所见,在实现任何代码之前做出关于表结构的明智决策可确保数据模型可靠、可扩展,并可随应用程序一起发展和演变。
定义表中的列时,不仅需要使用表独有的名称来标识它,还必须为其分配数据类型。 数据类型是列的属性,用于指定它可以保存的数据类型,例如数字、文本和日期。
将数据存储在数据库中时需要仔细查看要保存的数据类型。 是货币吗? 数字会有多大? 你需要存储小数吗? 应用程序是否需要数据库来存储图像? 一列需要容纳多少文本? 根据这些答案,你可以为每种场景使用特定的数据类型。
Azure SQL 中使用的一些常见数据类型包括:
- 字符:若要在数据库中存储字符或文本,Azure SQL 提供了“”和“”数据类型。 将“”用于固定大小文本数据,将“”用于可变大小文本数据。 如果使用 作为 的长度,则一行中每个字段最多允许 2 GB 的文本存储长度。 和 还支持在日语和中文等语言中看到的多字节字符。
- 小数:具有特定精度的数字使用“”数据类型。 此数据类型必须由两个变量定义。 首先,精度 (p) 或要存储的最大十进制数字总数。 其次是小数位数,即小数点右侧存储的小数位数。
- 整数:存储不需要携带小数值的精确数字时,可以使用“”类型。 大多数用例都使用“”数据类型,但对于特殊情况,还有其他整数类型。 对于较小值,可以使用 和 ;对于较大的数, 最好。 货币数据类型可用于存储货币。
- 位:“”数据类型只能包含 0 或 1,非常适合布尔值或 true/false 数据。
- 日期和时间:与数字数据类型类似,可以在数据库中以各种精度级别存储日期和时间。 “”数据类型以 YYYY-MM-DD 格式将数据存储在数据库中。 如果需要更高的准确性,可以使用“”数据类型,它以 YYYY-MM-DD hh:mm:ss[.nnnnnnn] 格式存储日期。 如果只需要时间,则可以使用“”数据类型,它使用 hh:mm:ss[.nnnnnnn] 格式。 如果要创建一个考虑到全球化的应用程序,则可以使用包含时区信息的“”数据类型。
- 二进制:如果需要存储图像或文件等数据,则可以使用“”和“”数据类型。 “”数据类型用于固定长度的二进制数据,而“”用于可变长度的二进制数据。
- 空间:Azure SQL 有两种空间数据类型:“”和“”。 “”类型表示欧几里得(平面)坐标系中的数据,而“”类型表示圆形地球坐标系中的数据。 使用这些类型将数据存储在数据库中后,可以使用 SQL 执行空间操作,例如最近的邻域查询(离我的位置最近的披萨店在哪里)或几何空间中的点位置(x、y 和 z 在图形上相交的位置)。
有了数据库数据类型的新知识,请回到卡牌游戏应用程序的数据模型。 可以看到,像 和 这样的列是数字类型,而 、、 是文本数据类型。 需要存储卡牌美术,因此使用 的最大大小让你可以将图像存储在表中。
在数据库所在的文件系统上,表存储在页面中。 这些页面是 8K 文件,以数据、文本/图像或索引页的形式出现。 与书籍或文章的索引一样,每页都以标题部分开头,该部分描述了页面中的内容。 此标头信息包含页码、页类型、页的可用空间以及拥有该页的对象的分配单元 ID。 盘区包含八个物理上连续的页,因此 Azure SQL 数据库每兆字节有 16 个盘区。 (每个盘区 64K * 16 个盘区 = 1,024K 或 1 MB)可以在页和盘区体系结构指南中阅读有关本主题的详细信息。
为什么表的存储方式很重要? 在设计数据模型并确定要使用的数据类型和数据类型大小时,需要记住,一页中的数据不能流经并继续进入另一页。 创建数据类型始终使用最大大小的列会导致性能问题,因为可能会为每一行创建页面。
到此这篇数据库初学者入门(数据库入门基础知识)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/80161.html