查询为新项目创建数据库

时间:2011-10-08 08:26:22

标签: mysql database database-design

我希望如果我的问题不合时宜,那么你们就会让我过去。在DBMS方面,我一点也不擅长,在我7年多的IT经验中,我能够写出一些东西。基本查询(在Google的帮助下)。

我正在开发自己的项目,我已经完成了设计阶段,并且将清除我需要为项目提供的所有表结构。我将使用MySQL进行此项操作,因为项目具有这些功能小型CMS本身就意味着需要在数据库大小处理大量数据。

我正在使用TOAD for MySQL为MySQL创建架构和其他东西,但在这样做的时候我几乎没有想要在开始时解决的问题。

  1. MySQL的存储引擎类型应该是什么(默认为InnoDB)
  2. 任何其他参数需要处理存储引擎
  3. 需要在表级别和列级别设置字符集和排序规则(应用程序必须处理国际化)
  4. 对数据库方面知之甚少这些问题一直在我脑海中浮现,我们将不胜感激。

2 个答案:

答案 0 :(得分:2)

你应该坚持使用InnoDB。它具有事务和行级锁定。对于高(写入)并发,行级锁定允许同时有多个INSERT / UPDATE / DELETE。 MyIsam具有表锁定功能,这意味着一次只能修改一个查询。如果你读得很重,MyISAM可能会表现得更好。例如SELECT COUNT(*) FROM table;是MyISAM可以立即回答的统计事物,而InnoDB实际上是COUNT()。 InnoDB允许您定义表之间的连接(外键约束),以帮助您保持数据完整性。

如果您对上述内容感兴趣,我建议您阅读O'Reilly Media的高性能MySQL。

关于字符集,您应确保所有表/列使用相同的字符集。最好是Unicode(UTF8)。确保您的mysql客户端也设置为使用UTF8,以避免(透明)音译的数据。 (事实上​​,确保整个应用程序从存储到显示都是UTF8。)

Collat​​ion是一种允许您将文本定义为UTF8,但在德语中使用上下文的内容。有了这些知识,MySQL将根据德语规则正确地对“fööbar”和“foobar”进行排序。 (除其他事项外)。我通常使用“utf8_general_ci”。看看mysql上的一些例子:http://dev.mysql.com/doc/refman/5.0/en/charset-collation-effect.html

答案 1 :(得分:1)

可能你会得到更好的答案,但很快就会有我的经历:

  1. InnoDB适用于创建可靠的数据驱动的Web应用程序,而MyISAM适用于性能。但InnoDB支持外键,事务和行级锁定,这使您在设计表时更加诚实。这意味着如果您不想创建一个简单的实验数据库,解决方案就是使用InnoDB。
  2. 您应该查看Foreign Keys交易行级锁定(只有InnoDB支持这些功能)
  3. 如果你想存储不同语言的数据,
  4. utf8_general_ci 是我所知道的最受欢迎的。它不会让你失望。
  5. 我希望这有帮助。