数据库设计需要专家意见

时间:2011-09-04 15:33:03

标签: mysql performance database-design storage-engines

我很感谢网站数据库架构专家的建议。

我有一个分类广告列表网站的数据库设计,目前在MyISAM引擎中完成,所以没有关系,密钥等。

请查看当前设计的ER模型:

enter image description here

enter image description here

我需要知道我是否正在使用数据库设计......(电子邮件和密码字段在用户和广告表中都是多余的,因为第一个计划不需要用户注册,但该计划是最近发生了变化。所以,请忽略这一点,因为我将从广告表中删除这些字段)

预计该网站有可能在发布后的几个月内每天至少进行100,000次网页浏览。

请告知您对此设计的看法以及可以做得更好的事情。

另外请建议使用最好的Db引擎用于这样的网站(InnoDb或任何其他......)。

请提供有关此数据库的最佳存储引擎的建议,同时牢记性能,负载,Db完整性(如果需要,因为它目前在MyISAM引擎上设计,因此没有Db完整性)以及其他任何需要考虑的内容这样的网站。

我知道具体的数据库问题/问题只有在实际发生时才能处理,但至少我想在正确的方向上开始。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

  1. 为什么哦为什么要使用MyISAM?从我看到的,你不是在谈论一个高性能的网站,为什么要使用它?使用InnoDB。

  2. 数据完整性不是一个选项,所以如果你不是专家,你可能没有考虑在你的应用程序中为它实现逻辑,所以你应该考虑使用FK。

  3. 只看你的ER模型(因为你没有定义任何关系所以甚至不是ERM,因此没有R,它更像是EM)我们不能说那么多。我们需要一个故事,故事似乎很大。

  4. 每天100次点击是花生,在这种情况下会产生误导。什么是每秒最高的预期费率?维持这个水平还有多长时间?

  5. 此模型也缺少数据类型。即使是最小的分析,这些也不是可选的。

  6. 这样的事情通常需要数天时间来讨论和分析,我发现它在这方面有点过分,特别是考虑到信息的稀缺性。

答案 1 :(得分:2)

一目了然。 。

我们无法在图表中看到主键,唯一约束或类似内容。他们的缺席令人不安。

几乎每张桌子都有一个身份证号码。其中一些被称为“id”,而其他人则有更具描述性的名称。 更具描述性的是这两个想法中的佼佼者。

表中没有其他唯一约束的id号通常是错误的。 (通常,但并非总是如此。)例如,表“cats”可能需要对“catname”具有唯一约束。否则,id号将仅识别一行,而不是猫。 (这意味着你可以有两行或更多行具有相同的“catname”。)

表格adxfields和subcatxfields看起来像是一个等待机会的灾难。表'subcatxfields'看起来像某种EAV反模式。在你走这条路之前仔细看Bill Karwin's slideshow on database anti-patterns。 (EAV从幻灯片16开始。)

Subcat定价应该可以移到单独的表中。

有一个international standard for country codes。您最好使用标准国家/地区代码而不是您自己的ID号。使用人类可读的代码意味着您通常可以消除连接。 (通常,但并非总是如此。)

表“城市”没有足够的列来标识城市。 (美国有很多名为“华盛顿”的城市。)

这是足够的时间。 。