MySql / PHP - 设计我的第一个数据库。需要评论

时间:2012-11-04 17:21:34

标签: mysql database-design database-schema organization project-organization

我正在设计我的第一个数据库并从头开始编写我的第一个PHP项目,我需要有人来审查数据库方案。

PHP脚本的目的:当我在Youtube,Myspace,Metacafe,Vimeo等网站上发布宣传视频时,显示网络中各个网站的流量统计信息。

我打算如何组织它:

  1. 一个网站可以有多个类别,如“吉他课程”, “唱歌课”,“舞蹈课”。
  2. 某些类别可以包含子类别。像“吉他课程”可以分为“低音”和“电子”
  3. 在一个类别中可以是一个宣传视频。在下图中,视频名为
  4. 只能在一个类别中创建一个项目(宣传视频)
  5. 可以将一个宣传视频提交给多个视频共享网站(Youtube,Vimeo等)。
  6. 一个宣传视频可以包含多个不同的元数据,如“标题”和“描述”
  7. 可能发生的情景:

    1. 也许有一天Youtube会删除我的一个宣传视频 那个案子我会再次重新加载它可能有不同的“标题” 和“描述”,但我想显示一些旧的信息 统计信息,如删除前的先前观看次数。
    2. 我现在想不出任何其他的东西..
    3. 编辑: 我添加了table itemStats enter image description here

      EDIT2:我不确定我是否需要单独的itemStats表。我想加入itemMeta?

2 个答案:

答案 0 :(得分:1)

您将主键链接到某些表(用户:id到usersMeta:id)上的主键,而不是外键的主键(站点:id到类别:siteid)。可能不会运作良好。

答案 1 :(得分:0)

我建议您将用户 usersMeta 合并到一个表中。 usersMeta 中只有5个唯一且有用的字段。如果您需要,您将需要使用连接以获取所有数据,在我看来这是不必要的。请记住,normalization是删除冗余并确保所有表都具有最少字段数量的过程......但这需要付出代价。在大多数情况下,成本是表现。

此外,用户表通过组合它们最多只能有9个字段。这仍然是我认为是一个非常小的表。我之前有20-30个领域的桌子。在我的情况下,将数据分开是没有意义的,因为它对于表是唯一的,并且无论如何也没有其他表或系统的一部分曾经使用过这些数据。