4

刚从大学毕业,我就学会了设计数据库的“正确”方法。例如数据库规范化,如何构建表等。

现在我面临着他们在大学里没有教给我的东西......

看来我可以选择 2 个数据库引擎 - MyISAM 或 InnoDB。

我知道我可以使用 InnoDB 存储引擎构建关系数据库,但是据我所知,我无法使用 MyISAM 存储引擎构建关系数据库,因为我无法链接表。

所以-我的问题-请告诉我我只是愚蠢还是错过了一个技巧...

如果我不能用 MyISAM 构建关系数据库,那它有什么用呢?如何使用 MyISAM 确保数据库完整性?大多数人使用 MyISAM 还是 INNODB?如何在两个 MyIsam 表之间强制执行约束?

例如,如果我正在建立一个小型在线商店,我将有一个产品表和一个类别表。产品必须属于 1 个类别。我将如何使用 MyIsam 构建它?

4

2 回答 2

5

确实,当前版本的 MySQL 不会强制执行在 MyISAM 表上定义的外键约束,但这并不意味着不能在此类表之间创建关系(毕竟,这只是在一个表中保存数据的问题标识另一个表中的相关记录):必须更加小心地正确管理它们。

如果强制执行 ACID 合规性对您很重要,那么 InnoDB 是您的最佳选择;如果您可以牺牲这种合规性以换取在某些情况下提高性能,那么 MyISAM 可能值得一看。如果需要,您甚至可以在同一个数据库中混合和匹配两个存储引擎以实现平衡。

很多资源讨论了 MyISAM 与 InnoDB 的优缺点——只需在 Google(或此站点)上搜索,您就会发现!

于 2012-09-08T19:34:57.540 回答
0

关系模型是在 1969-1970 年开发的,目的是帮助阐明构建符合该模型的数据库的案例。没有什么特别的理由为什么应该使用关系模型来对最终将进入分层数据库的数据进行建模。但是,使用关系模型来帮助描述从分层数据库中出来的数据以及在将其交付给 DBMS 客户端之前可能会很有用。

重要的是要认识到数据的关系模型是一种设计工具,而不是真正的分析工具。数据的 ER 模型是专门为数据分析而发明的,而不会将分析偏向于一种特定的实现,例如关系或 SQL 实现。在这样的 ER 模型中,没有外键。重要的是要理解外键是解决方案的一个特征,而不是问题的一个特征。

也许,为了使用 MyISAM 构建一个像样的数据库,您需要重新学习构建数据库的正确方法。你在大学里学到的可能是如何建立一个关系数据库,假设没有学生需要建立一个分层数据库。

警告:大多数分层 DBMS 的顶部都贴有“关系层”,因此以关系术语思考的人可以使用该工具,而不必将关系模型放在一边。至少在某些方面,关系 DBMS 比非关系 DBMS“更好”。1969-1970 年提出的论点在很大程度上仍然有效。

于 2012-09-09T13:06:01.520 回答