PHP和MySQL Web开发外文翻译资料

 2023-03-15 04:03

PHP and MySQL.Web Development

关键词:PHP,Web Development

关系数据库概念

到目前为止,关系数据库是最常用的数据库类型。它们依赖于关系代数中深厚的理论基础。您不需要理解使用关系数据库的关系理论(这是一件好事),但需要理解一些基本的关系数据库概念。

表格:关系数据库由关系组成,通常称为表。一张表就是它听起来的样子——一张数据表。如果你用过电子表格,你就用过表格。查看图8.1中的示例表。它包含一家名为Book-O-Rama的书店顾客的姓名和地址。该表有一个名称(Customers);多个列,每个列对应于不同的数据片段;和对应于单个客户的行。

表中的每一列都有一个唯一的名称,并包含不同的数据。此外,每个列都有一个关联的数据类型。例如,在图8.1中的customers表中,您可以看到customerID是一个整数,其他三列是字符串。列有时称为字段或属性。

表中的每一行代表不同的客户。由于表格格式,每一行具有相同的属性。行也称为记录或元组。

每行由一组与列相对应的单独值组成。每个值必须具有由其列指定的数据类型。

关键值

您需要有一种识别每个特定客户的方法。命名通常不是一个很好的方法。如果你有一个共同的名字,你可能知道为什么。例如,从客户表中考虑JulieSmith。如果你打开电话簿,你可能会发现该姓名的列表太多而无法计数。你可以从几个方面区分朱莉。很可能,她是唯一住在她家的朱莉·史密斯。谈论“Julie Smith,25 Oak Street,Airport West”相当麻烦,听起来太像法律术语了。它还需要在表中使用多个列。

我们在本例中所做的,以及您可能在应用程序中所做的,是分配一个唯一的CustomerID。这正是导致您拥有一家独特银行的相同原则帐号或俱乐部会员号码。它使在数据库中存储您的详细信息变得更容易。可以保证人工分配的标识号是唯一的。很少有真正的信息,即使组合使用,也具有这种属性。

表中的标识列称为键或主键。一个键也可以由多列组成。例如,如果您选择将Julie称为“机场西橡树街25号的Julie Smith”,则该键将包含姓名、地址和城市栏,并且不能保证是唯一的。

数据库通常由多个表组成,并使用一个键作为从一个表到另一个表的引用

另一个图8.2显示了添加到数据库的第二个表。这个存储客户下的订单。orders表中的每一行表示单个客户下的单个订单。您知道客户是谁,因为您存储了她的客户ID。例如,您可以查看orderID为2的订单,并看到customerID为1的客户放置了它。如果您再查看customers表,您可以看到customerID 1指的是Julie Smith。

此关系的关系数据库术语是外键。customerID是Customers中的primarykey,但当它出现在另一个表(如orders)中时,它被称为Aforence key。

你可能想知道为什么我们选择了两张分开的桌子。为什么不把Julie的地址存储在orders表中?我们将在下一节更详细地探讨这个问题。

模式

数据库的一整套表设计称为数据库模式。它类似于数据库的ablueprint。模式应该显示表及其列、每个表的主键和任何外键。模式不包含任何数据,但您可能希望在模式中显示示例数据,以解释它的用途。模式可以像我们所做的那样以非正式的图表、实体关系图(本书中未涉及)或文本形式显示,例如:客户(客户ID、姓名、地址、城市);订单(订单ID、客户ID、金额、日期)

模式中带下划线的术语是带下划线关系中的主键。斜体术语是外键,它们在关系中显示为斜体。

关系

外键表示两个表中数据之间的关系。例如,从orders到customers的链接表示orders表中的一行与customers表中的一行之间的关系。

关系数据库中存在三种基本的关系。它们根据关系每一方的元素数量进行分类。关系可以是一对一、一对多或多对多。

一对一关系意味着在关系中使用每件事物中的一件。对于例如,如果您将地址与客户放在一个单独的表中,那么他们之间会有一对一的关系。您可以将外键从地址发送到客户,也可以通过其他方式(两者都不是必需的)。

在一对多关系中,一个表中的一行链接到另一个表中的多行。在本例中,一个客户可能下很多订单。在这些关系中,包含多行的表有一个外键指向一行的表。在这里,我们将CustomerID放入order表中以显示关系。

在多对多关系中,一个表中的多行链接到另一个表中的多行。例如,如果您有两个表、两本书和两位作者,您可能会发现其中一本书是由两位合著者撰写的,他们各自或可能与其他作者共同撰写了其他书籍。这种类型的关系通常会得到一个单独的表,因此您可能有Books、Authors和Booksu Authors。第三个表将仅包含其他表的键,作为成对的外键,以显示哪些作者涉及哪些书籍。

设计Web数据库

知道什么时候需要一个新表,以及键应该是什么,这可能是一种艺术。您可以阅读大量有关实体关系图和数据库的信息规范化,这超出了本书的范围。然而,在大多数情况下,您可以遵循一些基本的设计原则。让我们在Book-O-Rama的背景下考虑它们。

考虑一下您正在建模的真实世界对象

创建数据库时,通常要对现实世界中的项目和关系进行建模,并存储有关这些对象和关系的信息。

通常,您建模的每一类真实对象都需要自己的表。想想看:你想存储关于所有客户的相同信息。如果一组数据具有相同的“形状”,则可以轻松创建与该数据对应的表。

在Book-O-Rama示例中,您希望存储有关客户、您销售的书籍以及订单详细信息的信息。客户都有名字和地址。每个订单都有日期、总金额和一套订购的书籍。每本书都有国际标准书号(ISBN)、作者、书名和价格。

目前,您无法从模型中分辨每个订单中订购了哪些书籍。我们将很快处理这种情况。

避免存储冗余数据

早些时候,我们问了一个问题:“为什么不将朱莉·史密斯的地址存储在订单表中?”“如果朱莉多次从Book-O-Rama订购,你希望她会这样做,那么你最终会多次存储她的数据。您可能会得到一个orders表,如图8.4所示。

这种设计产生了两个基本问题:

这是浪费空间。如果你只需要存储一次朱莉的细节,为什么要存储三次呢?

它可能会导致更新异常,也就是说,在这种情况下,您更改了数据库并最终得到了不一致的数据。数据的完整性受到侵犯,您不再知道哪些数据是正确的,哪些是不正确的。这种情况通常会导致信息丢失。

需要避免三种更新异常:修改、插入和删除异常。

如果朱莉在待办订单期间搬进了新房子,你需要在三个地方而不是一个地方更新她的地址,工作量是原来的三倍。你可能很容易忽略这个事实,只在一个地方更改她的地址,导致数据库中的数据不一致(这是一件非常糟糕的事情)。这些问题称为修改异常,因为它们发生在您试图修改数据库时。

使用这种设计,每次下单时都需要插入Julie的详细信息,因此每次都必须确保她的详细信息与表中现有的行一致。如果你不检查,你可能会得到关于朱莉的两行相互矛盾的信息。例如,一行可能表示朱莉住在机场西,另一行可能表示她住在机场西。这种情况称为插入异常,因为它发生在插入数据时。

第三种异常称为删除异常,因为从数据库中删除行时会发生(意外、意外)。例如,假设订单发出后,您将其从数据库中删除。Julie当前的所有订单都已完成后,这些订单都将从订单表中删除。这意味着你不再有朱莉的女萨德尔的记录。你不能给她任何特价,下次她想从Book-O-Rama订购东西时,你必须重新了解她的详细信息。

通常,您应该设计数据库,以便不会出现这些异常。

使用原始列值

使用原始列值意味着在每行的每个属性中,只存储一个元素。例如,您需要知道每个订单由哪些书籍组成。你可以用几种方法来做。

一种解决方案是在orders表中添加一列,列出所有已订购的书籍,如图8.5所示。

出于几个原因,这个解决方案不是一个好主意。您真正做的是将一个完整的表格嵌套在一列中—一个将订单与书籍关联的表格。以这种方式设置专栏时,回答诸如“为专业开发人员订购了多少份Java 2”之类的问题就变得更加困难了系统不能再仅仅计算匹配字段。相反,它必须解析每个属性值,以查看其中是否包含匹配项。

因为您实际上是在表中创建一个表,所以您实际上应该创建一个新表。此新表称为order_Items,如图8.6所示。

此表提供订单和图书表之间的链接。当两个对象之间存在多对多关系时,这种类型的表很常见;在这种情况下,一个订单可能由许多书组成,并且每本书可以由许多人订购。

当您需要解决一个真正需要非原子列值的问题时,您应该考虑使用为该类型数据设计的数据库,而不是关系数据库。这些数据库是非关系数据库,通常称为NoSQL数据库或数据存储。(本书不包括NoSQL数据存储。)

选择合适的键

确保您选择的键是唯一的。在本例中,我们为客户(CustomerID)和订单(orderID)创建了一个特殊的密钥,因为这些真实世界的对象可能不会自然地拥有一个可以保证唯一的标识符。您不需要为书籍创建唯一标识符;这已经以ISBN的形式完成了。对于order_项目,如果需要,可以添加一个额外的键,但只要订单中同一本书的多个副本被创建为一行,OrderId和IsBN这两个属性的组合是唯一的。因此,表order_items有一个Quantity列。

想想你想问数据库什么

继续上一节,思考您希望数据库回答哪些问题。(例如,Book-O-Rama的畅销书是什么?)确保数据库包含所需的所有数据,并且表之间存在适当的链接以回答您的问题。

外文原文资料信息

[1] 外文原文作者:L.Welling,L.Thomson

[2] 外文原文所在书名或论文题目:PHP and MySQL.Web Development

[3] 外文原文来源:ResearchGate

二、外文原文资料:

Relational Database Concepts

Relational databases are, by far, the most commonly used type of database. They depend on asound theoretical basis in relational algebra. You dont need to understand relational theory touse a relational database (which is a good thing), but you do need to understand some basicrelational database concepts.

Tables

Relational databases are made up of relations, more commonly called tables.A table is exactlywhat it sounds like—a table of data. lf youve used an electronic spreadshe

剩余内容已隐藏,支付完成后下载完整资料


英语原文共 687 页,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[595985],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。