Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
组织MySQL数据库_Mysql_Database_Organization - Fatal编程技术网

组织MySQL数据库

组织MySQL数据库,mysql,database,organization,Mysql,Database,Organization,我正在开发一个应用程序,需要我创建我的第一个大型MySQL数据库。我现在很难集中精力去思考如何最好地组织它。有没有人能推荐一些阅读材料,它们展示了为不同目的组织MySQL数据库的不同方法 我不想尝试深入了解我所想象的数据库主要组件的细节,因为我不相信我能清楚地表达出来,在这一点上会有所帮助。这就是为什么我正在寻找一些关于MySQL数据库组织的一般资源。也许我可以根据自己的经验提供一些建议 除非有非常特殊的用法(如全文索引),否则请使用InnoDB表引擎(事务、行锁定等) 指定默认编码-utf8

我正在开发一个应用程序,需要我创建我的第一个大型MySQL数据库。我现在很难集中精力去思考如何最好地组织它。有没有人能推荐一些阅读材料,它们展示了为不同目的组织MySQL数据库的不同方法


我不想尝试深入了解我所想象的数据库主要组件的细节,因为我不相信我能清楚地表达出来,在这一点上会有所帮助。这就是为什么我正在寻找一些关于MySQL数据库组织的一般资源。

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

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

这里还有使用和创建数据库的方法。

我可以向您推荐本书的第一章:,它可以帮助您组织您的想法,我当然建议不要使用第五范式,而是使用第四范式,这非常重要。

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

在更多的面向对象语言中(我假设您使用的是PHP?),这会迫使您快速思考OO,这正是您所追求的

我的工作流程如下:

  • 计算出需要存储哪些数据。(客户名称等)
  • 确定您正在处理的主要对象(例如客户、订单、销售人员等),并为每个对象分配一个密钥(例如客户ID)
  • 确定哪些数据连接到哪些对象。(客户名称属于客户)
  • 计算主要对象之间的连接方式(销售人员向客户销售订单)
  • 一旦你有了这些,你就有了一个很好的目标模型。下一步是查看连接。例如:

    • 每个客户只有一个名字
    • 每种产品都可以多次出售给任何人
    • 每个订单只有一名销售人员和一名客户
    一旦你解决了这个问题,你想尝试一种叫做的方法,这是一种将这些数据收集到一个表列表中的艺术,同时也尽量减少冗余。(想法是,一对一(客户名称)存储在具有客户ID的表中,多对一、一对多和多对多存储在具有特定规则的单独表中)


    这正是它的要点,如果你要求的话,我会从我的工作流程中为你扫描一张示例表。

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

    只需确保数据分布是真实的。(不是所有人都叫“约翰”,也不是所有人都有唯一的名字。不是所有人都给出自己的电话号码,大多数人也不会有10个电话号码)


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

    www.generateData.com非常适合生成电话号码、姓名等数据,而且非常灵活。