数据库设计
数据库设计是指构建数据库中的数据结构和关系。它不仅仅关乎数据库如何存储数据。
在本系列文章中,我们将探讨 SQL 和 NoSQL 的设计技巧。我们将设计用于以下用途的数据库:
- 电子商务商店
- 学校管理
- 新闻网站
我们将看到如何在图表中设计这些数据库,然后将其转换为 SQL 和 NoSQL。我们将学习如何选择合适的数据库类型。是不是很令人兴奋?
基础知识
数据库设计的基础是确定需要存储哪些数据,将这些数据分组到表或集合中,并在相关数据点之间建立关系。整个数据库设计过程涉及以下几个方面。
构建可以导出为特定平台(Postgresql、MongoDB、MySQL 等)语法的表或集合。
SQL和NoSQL有什么区别?
很高兴你问了这个问题。
SQL数据库。
SQL 数据库是使用Structured Query LanguageSQL 语句来操作数据的数据库。SQL 数据库将数据存储在表中。一个表的结构大致如下:
人们
| ID | 姓名 | 年龄 | 工作 |
|---|---|---|---|
| 1 | 约翰·多伊 | 45 | 在互联网上使用的名称 |
| 2 | 简·多伊 | 40 | 据称是女性版本 |
| 3 | 乔什·多伊 | 1 | 开发者 |
所以,如果我们想获取表中人员的姓名,我们可以使用如下 SQL 语句:
SELECT name FROM people;
这叫做 SQL 查询。查询是一种命令,它主要负责在数据库中创建、读取、更新和删除 (CRUD) 数据。上面的 SQL 查询会检索 people 表中人员的姓名。因此,SQL 数据库就是通过 SQL 查询来运行的。
如果你想知道结果,上面查询的结果应该是:
| 姓名 |
|---|
| 约翰·多伊 |
| 简·多伊 |
| 乔什·多伊 |
SQL数据库示例
NoSQL数据库
NoSQL 数据库是指不使用 SQL 进行查询的数据库。例如,MongoDB 就是一个文档型数据库。MongoDB 将数据存储在文档中。我们的用户表在文档型数据库中的表示形式如下:
{
"people": [
{
"id": 1,
"name": "John Doe",
"age": 45,
"job": "name used on the internet"
},
{
"id": 2,
"name": "Jane Doe",
"age": 40,
"job": "supposed female version"
},
{
"id": 3,
"name": "Josh Doe",
"age": 1,
"job": "developer"
}
]
}
查询文档数据库的操作类似于:
db.people.find({}, { "name": 1, "_id": 0 })
其他 NoSQL 数据库的例子包括:
-
像这样的图数据库 ,我们可以看到一个人与另一个喜欢其他东西的人是朋友。它展示了某些事物之间错综复杂的关系。这对于社交媒体软件来说是一个很好的设计。

-
键值存储,例如Redis。
实体关系(ER)图
这些图表使用形状和箭头来表示数据对象及其关系。ER 图是数据库设计的重要步骤。下图是一个典型的 ER 图。
这里,我们有一个包含三个表(或集合)和两个关系的数据库。即使您对数据库一无所知,ER 图的直观结构也能让您了解数据库处理的信息。
Customer与冒号(:)customer-no和name空格(:) 相连的椭圆形符号e-mail称为属性。在 SQL 中,它们是列。在文档数据库中,它们是 BSON(二进制 JSON)属性。- 这些矩形代表实体或对象。在 SQL 中,它们代表表。在文档数据库中,它们代表集合。
- 菱形代表关系。在这个ER图中,
makesA连接customer到orderB。所以A是一个customermakes……order。Bincludes连接order到productB。所以A是一个orderincludes……product。
通过 ER 图,您可以全面了解数据库在特定平台(SQL 或 NoSQL)上的实现方式。
SQL数据库建模工具(QuickDB)
QuickDB可用于为多种数据库管理系统 (DBMS) 构建表和关系模型。它是一款免费增值产品,提供免费和付费两种方案。其最突出的功能是能够导出适用于包括 MySQL 和 PostgreSQL 在内的多个平台的 SQL 特定代码。
包起来
现代数据库是使用现代工具设计的。在开始使用数据库的项目之前,必须先设计好数据库,以避免在项目后续阶段出现混乱和糟糕的应用程序设计。
如果您觉得这篇文章有用,请分享。这是一个系列文章,敬请期待更多关于数据库设计的文章。最后,为了增添趣味,请欣赏这张图片。
😂 希望你笑了。感谢阅读。再见✌🏽🧡


