数据库的构建和设计,数据表单之间的关系设计教程
在构建应用程序的后端时,您需要考虑前端如何与后端进行通信。但是,更重要的是数据库的构建和设计。数据表单之间的关系将导致数据库架构的构建。
一个数据库架构是一个抽象的设计,代表你的数据在数据库中存储。它描述了数据的组织以及给定数据库中表之间的关系。开发人员预先计划数据库架构,以便他们知道需要哪些组件以及它们将如何相互连接。
在本指南中,我们将学习什么是数据库架构以及为什么使用它们。我们将介绍一些常见的示例,以便您可以学习如何自行配置数据库模式。
今天,我们将回顾:
- 什么是数据库架构?
- 数据库模式类型
- NoSQL示例
- SQL Server示例
- PostgreSQL范例
- 接下来要学什么
学习数据库的基本概念
了解如何使用通用技术,数据建模和SQL从头开始构建数据库。
软件工程师的数据库设计基础

数据库模式的大小和复杂性取决于项目的大小。数据库模式的外观样式使程序员可以在进入代码之前正确地构建数据库及其关系。规划数据库设计的过程称为数据建模。
模式对于设计数据库管理系统(DBMS)或关系数据库管理系统(RDBMS)非常重要。DBMS是一种软件,该软件遵循ACID概念以安全的方式存储和检索用户数据。
在许多公司中,数据库设计和DBMS职责通常由数据库管理员(DBA)承担。DBA负责确保数据分析师和数据库用户可以轻松访问信息。他们与管理团队一起计划和安全地管理组织的数据库。
注意:某些流行的DBMS系统包括MySQL,Oracle,PostgreSQL,Microsoft Access,MariaBB和dBASE等。
数据库模式类型
有两种主要的数据库模式类型定义模式的不同部分:逻辑和物理。
逻辑数据库模式表示如何根据表组织数据。它还说明了表中的属性如何链接在一起。不同的模式使用不同的语法来定义逻辑体系结构和约束。
注意:完整性约束是DBMS的一组规则,可维护数据插入和更新的质量。
为了创建逻辑数据库架构,我们使用工具来说明您数据组件之间的关系。这称为实体关系建模(ER Modeling)。它指定实体类型之间的关系。
下面的模式图是一个非常简单的ER模型,显示了基本商务应用程序中的逻辑流程。它向购买产品的客户解释了产品。
上方三个圆圈中的ID表示对象的主键。这是唯一标识文档或表格中条目的ID。图中的FK是外键。这就是将关系从一个表链接到另一个表的原因。
- 主键:在表中标识一条记录
- 外键:另一个表的主键
可以通过各种方式创建实体关系模型,并且存在在线工具来帮助构建图表,表格,甚至SQL来从现有ER模型创建数据库。这将有助于构建数据库模式的物理表示。
物理
物理数据库模式表示如何在磁盘存储上存储数据。换句话说,它将是用于创建数据库结构的实际代码。例如,在带有猫鼬的MongoDB中,这将采用猫鼬模型的形式。在MySQL中,您将使用SQL来构建带有表的数据库。
与逻辑架构相比,它包括数据库表名称,列名称和数据类型。
既然我们已经熟悉了数据库模式的基础知识,那么让我们来看一些示例。我们将介绍您可能遇到的最常见的示例。
NoSQL示例
NoSQL数据库主要被称为非关系数据库或分布式数据库。由于NoSQL具有动态模式,因此为NoSQL设计模式是一些争论的话题。一些人认为NoSQL的吸引力在于您不需要创建模式,但是其他人则说设计对于这种类型的数据库非常重要,因为它不提供一种解决方案。
此代码段是使用Mongoose(MongoDB)创建表示上面的实体关系图的数据库时物理数据库架构的外观的示例。单击代码选项卡以查看不同部分。
const mongoose = require('mongoose'); const Customer = new mongoose.Schema({ name: { type: String, required: true }, zipcode: { type: Number, } }) module.exports = mongoose.model("Customer", Customer);
const mongoose = require('mongoose'); const Product = new mongoose.Schema({ name: { type: String, required: true }, price: { type: String, required: true } }) module.exports = mongoose.model("Product", Product);
const mongoose = require('mongoose'); const Transaction = new mongoose.Schema({ date: { type: String, required: true }, cust_id: { type: mongoose.Schema.Types.ObjectId, // signifies relationship to Customer Schema ref: 'Customer' }, products: [{ type: mongoose.Schema.Types.ObjectId, // signifies relationship to Product Schema ref: 'Product' }] }) module.exports = mongoose.model("Transaction", Transaction);
这里要记住的重要一点是,在像MongoDB这样的NoSQL数据库中,没有外键。换句话说,架构之间没有关系。在ObjectId
刚刚代表_id
(该ID创建时蒙戈自动分配)的另一个集合文档。它实际上并没有创建联接。
继续学习。
学习设计数据库的最佳技术,以使您的后端技能更上一层楼。Educative的基于文本的课程易于浏览,并具有实时编码环境,从而使学习快速高效。
软件工程师的数据库设计基础
SQL Server示例
SQL数据库包含对象,例如视图,表,函数,索引和视图。我们可以使用的对象数量没有限制。SQL模式是在逻辑级别定义的,拥有该模式的用户称为模式所有者。
SQL用于访问,更新和处理数据。MySQL是用于存储和组织的RDBMS。
我们可以使用SQL ServerCREATE SCHEMA
在数据库中创建新架构。在MySQL中,模式与数据库同义。您可以替换关键字SCHEMA
用于DATABASE
在MySQL SQL语法。
其他一些数据库产品也有区别。例如,在Oracle数据库产品中,模式仅代表数据库的一部分:表和其他对象由单个用户拥有。
注意:在SQL中,视图是基于语句结果集的虚拟表。视图包含行和列。
主键和外键在这里证明是有用的,因为它们表示从一个表到下一个表的关系。
CREATE DATABASE example; USE example; DROP TABLE IF EXISTS customer; CREATE TABLE customer ( id INT AUTO_INCREMENT PRIMARY KEY, postalCode VARCHAR(15) default NULL, ) DROP TABLE IF EXISTS product; CREATE TABLE product ( id INT AUTO_INCREMENT PRIMARY KEY, product_name VARCHAR(50) NOT NULL, price VARCHAR(7) NOT NULL, qty VARCHAR(4) NOT NULL ) DROP TABLE IF EXISTS transactions; CREATE TABLE transactions ( id INT AUTO_INCREMENT PRIMARY KEY, cust_id INT, timedate TIMESTAMP, FOREIGN KEY(cust_id) REFERENCES customer(id), ) CREATE TABLE product_transaction ( prod_id INT, trans_id INT, PRIMARY KEY(prod_id, trans_id), FOREIGN KEY(prod_id) REFERENCES product(id), FOREIGN KEY(trans_id) REFERENCES transactions(id)
PostgreSQL范例
PostgreSQL是一个免费的,开放源代码的关系数据库管理系统,具有高度的可扩展性并遵循SQL。在PostgreSQL中,数据库模式是带有命名数据库对象的名称空间。
这包括表,视图,索引,数据类型,函数和运算符。在此系统中,模式与目录同义,但不能嵌套在层次结构中。
注意: 在编程中,名称空间是一组用于标识对象的符号(称为名称)。命名空间可确保为所有对象赋予唯一的名称,以便于识别。
因此,尽管Postgres数据库可以包含多个架构,但只有一个级别。让我们看一个视觉表示:
在PostgreSQL中,一个数据库集群包含一个或多个数据库。在整个群集中共享用户,但不共享数据。您可以在多个架构中使用相同的对象名称。
我们使用该语句CREATE SCHEMA
开始。请注意,PostgreSQL将自动创建一个公共模式。每个新对象都将放置在这里。
CREATE SCHEMA name;
为了在数据库模式中创建对象,我们编写一个限定名称,其中包括模式名称和表名称:
schema.table
以下来自Postgres文档的示例CREATE
SCHEMA
启动一个名为的新模式,名为scm
的表deliveries
和名为的视图delivery_due_list
。
CREATE SCHEMA scm CREATE TABLE deliveries( id SERIAL NOT NULL, customer_id INT NOT NULL, ship_date DATE NOT NULL ) CREATE VIEW delivery_due_list AS SELECT ID, ship_date FROM deliveries WHERE ship_date <= CURRENT_DATE;
接下来要学什么
恭喜!现在,您已了解数据库架构的基础知识,并准备将您的数据库设计技能提高到一个新的水平。数据库模式对于创建数据库至关重要。无论您使用NoSQL还是基于SQL的数据库,数据库模式都是您应用程序的基础。
为了继续学习,接下来要讨论的主题是:
- 三模式架构
- 实体关系模型
- 关系模型概念
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 数据库的构建和设计,数据表单之间的关系设计教程
常见问题FAQ
- 没有金币/金币不足 怎么办?
- 本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
- 所有资源普通会员都能下载吗?
- 本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。