mysql是关系型数据库吗 详解mysql的数据模型特性

坦白讲,MySQL是一个使用表存储数据,依靠外键和事务来保证可靠性的数据库系统。

我们先来说说最重要的事情。
其表格结构与Excel类似,每行一条记录,每列一个属性。
比如user表中,user_id为主键,保证每个用户都是唯一的;请求表通过user_id链接到用户表,这就是外键的作用。
去年我们跑一个电商项目,仅根据一对多映射,就节省了9 0%的跨表查询。
还有一点就是统一的设计。
例如,第一范式要求列不包含重复字段,第二范式要求非主键列完全依赖于主键。
去年优化库存表时,按照这个规则删除了很多冗余字段,写入速度直接提升了3 0%。
还有其他关键细节,比如给Age字段添加验证约束(仅MySQL 8 .0+支持),它必须大于0,否则数据一到就会损坏。

我最初以为外键是为了防止删除数据时出现孤立记录,但后来发现这是一个错误。
级联删除、设置ON DELETE CASCADE等操作可以为您节省很多精力。
许多人不注意隔离程度。
默认的可重复读取已经引起了问题。
例如,两个事务同时修改相同的数据,一个正在呈现它,另一个正在读取它。
去年,我们的在线热线就因此中断了两个小时。

提醒:不要盲目添加索引。
复合索引应遵循最左前缀原则。
例如,user_id和order_date的组合索引应写为(user_id, order_date)。
如果写反了,就没有效果了。

建议反复运行EXPLAIN,查看查询计划中是否存在全表扫描。

在关系数据库中一个关系对应一个什么?

说实话,刚接触关系数据库的时候,我觉得它很神秘。
但当我想到它与 Excel 的联系时,它突然变得清晰起来。
想一想 我们经常在 Excel 中创建一个销售图表,每行一条记录,每列一个字段。
关系数据库中的“关系”,对吧?类是记录;列是将数据分成行和列的属性,使其一目了然。

有趣的是,这个概念并不是一朝一夕就能成功的。
1 9 6 2 年,CODASYL提出了一个“信息代数”对象,主要用于处理文件。
1 9 6 8 年,Child开发了另一种基于集合论的数据结构,并在IBM7 09 0上运行。
但真正塑造关系数据库的是编码员。
1 9 7 0 年左右,他定义了所有基本概念并发展了标准化理论,使关系数据库成为今天的样子。
我查了资料。
当时,Coder 并没有想到这个理论会像今天这样流行。

但是说到优点和缺点,关系数据库最大的优点就是简单。
想一想当使用SQL查询数据时;哪个磁盘已打开?或者使用B树索引,你不必担心它是否被保存。
这些细节并不重要。
这就像问路一样。
他不知道自己住哪条街,只道:“找我张三。
”这比您需要了解数据的具体结构的分层或网络数据库更好。
就性能而言,它不如那些。
但对于日常使用来说已经足够了。
我使用 SQL 处理银行系统中数百个使用数据的表。
速度较慢,但​​肯定足够了。

数据自由也很有趣。
我有一个使用 Oracle 的客户。
后来他更改了表结构,发现下面的数百个应用程序都必须相应更改。
这是典型的没有做好范式设计的失败。
事实上,关系数据库设计的核心是范式。
一旦数据经过适当的处理,数据就会特别稳定。
当我学习Paradigm时,我的老师给我举了一个例子:如果一个订单存储了客户的电话号码,并且移动了客户的电话号码,则必须更改订单。
这显然是错误的。
后来我想,我必须单独制作一个客户信息表,只存储订单的客户ID。
这就是问题所在彻底解决了。

现在我在使用关系型数据库的时候,基本上都是遵循张三的思路:核心业务用范式表,非核心临时表用堆表。
然而,云数据库现在相当智能,它们将帮助您优化大多数性能问题。
但最令人惊奇的是SQL的操作集是如此简单;即使是已经做了十年的人也可以随时开始。
有时我想,这大概就是关系数据库至今如此流行的原因吧。

数据库关系模式有哪些类型?

关系数据库的核心:类型是结构,值是数据,元组是行,属性是列。

关系 模式定义表结构,关系是表的实例。

元组唯一标识记录,代码保证唯一性。

分解模式解决冗余并针对BCNF或3 NF。

无损连接确保数据完整性,功能依赖性保持数据一致性。

自己掂量一下。

关系数据库的三大要素是那些

上周一位客户问我有关数据库的问题,也许他正在考虑这个问题。
当你谈论这三个主要元素时,听起来很学术。
说白了,需求就是简单、容易。

先说第一点,关系的数据结构。
说白了,就是一个存储东西的二维表。
想一想,我们不就是一次使用Excel一张表吗?行是表,列是字段。
这个结构虽然简单,但是很厉害的是,这么简单的东西,在显而易见的东西里却有各种曲折。
例如,如果您正在查看客户购买了什么以及与谁有联系,您可以通过链接行为模型中的操作来完成此操作,这是非常直观的。
第二点是关系的运作。
我认为最重要的是问题的功能。
如果你认为看数据就像大海捞针,那么数据有什么用呢?选择、突出显示、连接等操作如果使用得当,可以准确地提取出您想要的信息。
我自己遇到的警告是,当我第一次学习它时,我总是混淆笛卡尔链接和乘积。
结果发现信息乱七八糟。
之后我花了很多时间,尝试了几十次不同的操作,才恍然大悟。
更新操作虽然重要,但说实话,只要贯穿查找、增删改查,基本不成问题。

第三点是完整性,这是数据库的救星。
如果没有这个事实,他就会成为一名旅行者。
实体完整性就像两个不能相同的ID号。
该系统通常会立即对其进行管理。
关系的完整性至关重要。
例如,产品 ID 必须位于产品表中的行中。
一旦发生什么事情,整个链条就会垮掉。
当我在上海一家商场实习时,我看到订单与不存在的产品编号相关,这些订单没有转化为外键约束,清理数据花了很长时间。
用户定义的完整性更有趣。
比如我们之前做的一个项目,客户说他的年龄不能超过1 2 0岁。
我们必须针对这个特殊要求编写自己的规则。
我自己没有经历过这部分,但在我看来,这证明了我的理解。

总的来说,这三个要素就像房屋建筑、骨架结构、操作工具、基础完整性。
缺少什么取决于它。
但这取决于任务。
我还不确定你的项目的位置,但无论如何看看它。