组织MySQL数据库

时间:2010-12-31 04:44:23

标签: mysql database organization

我正在开发一个应用程序,需要我创建我的第一个大型MySQL数据库。我目前正在艰难地围绕组织它的最佳方式。任何人都可以推荐任何阅读材料,这些材料显示了为不同目的组织MySQL数据库的不同方法吗?

我不想尝试深入了解我想象的数据库的主要组件的细节,因为我不能确信我能够清楚地表达它以便在这一点上提供帮助。这就是为什么我只是在寻找MySQL数据库组织的一些常规资源。

4 个答案:

答案 0 :(得分:6)

我学会了解决这些问题的方法是停止并建立联想。

在更多面向对象的语言中(我假设你正在使用PHP?)强制OO,你学会很快地想到OO,这就是你在这里所做的一切。

我的工作流程是这样的:

  1. 确定您需要存储的数据。 (客户名称等)
  2. 计算出您正在使用的主要对象(例如客户,订单,销售人员等),并为每个对象分配一个密钥(例如客户ID)。
  3. 确定哪些数据连接到哪些对象。 (客户名称属于客户)
  4. 确定主要对象如何相互连接(销售人员向客户出售订单)
  5. 一旦你拥有了这些,你就拥有了一个很好的对象模型。下一步是查看连接。例如:

    • 每个客户只有一个名字。
    • 每种产品可以多次出售给任何人
    • 每个订单只有一个销售人员和一个客户。

    一旦你完成了这项工作,你就想尝试一下名为normalization的东西,这是将这些数据集合放入表格列表的艺术,仍然可以最大限度地减少冗余。 (这个想法是,一对一(客户名称)存储在具有客户ID的表中,多对一,一对多,多对多存储在具有特定规则的单独表中)

    这就是它的要点,如果你要求它,我会为你的工作流扫描一个示例表。

答案 1 :(得分:4)

也许我可以根据自己的经验提供一些建议

  • 除非非常特定的使用(如全文指数),使用InnoDB表引擎(交易,行锁定等...)
  • 指定默认编码 - utf8通常是一个不错的选择
  • 微调服务器参数(* key_buffer *等......网上很多资料)
  • 手工绘制您的数据库方案,与同事和程序员讨论
  • 不仅根据程序使用情况定义数据类型,还根据 join 查询定义数据类型(如果类型相同则更快)
  • 根据预期的必要查询创建索引,也与程序员讨论
  • 计划备份解决方案(基于数据库复制或脚本等...)
  • 的用户管理和访问,捐赠的唯一必要的访问权限,并创建一个只读用户可以通过大多数查询的使用,不需要写访问
  • 定义服务器规模,磁盘(raid?),内存,CPU

这里也有some tips来使用和创建数据库。

答案 2 :(得分:2)

我可以向您推荐本书的第一章:An Introduction to Database Systems,它可以帮助您组织您的想法,我当然建议不要使用第5版,但使用第4版,这非常重要。

答案 3 :(得分:0)

如果我只能给你一个建议,那就是生成与生产类似的量的测试数据并对主要查询进行基准测试。

确保数据分布切合实际。 (并非所有人都被命名为“John”,并非所有人都有独特的名字。并非所有人都给他们的电话,大多数人也不会有10个电话号码。)

另外,请确保测试数据不适合RAM(除非您希望生产数据量也是如此)。