2013-08-04 58 views
-2

作为一个个人项目,以提高我的PHP知识,OOP和PDO我要去设计像Atlassian的吉拉,FogBugz的等错误报告数据库的错误报告数据库的数据库结构

我有但是数据库结构的基本认识我只用过一个数据库。

在这种简化的情况下可以说,我们将有如下表:

  1. 用户
  2. 错误
  3. 项目
  4. 问题类型
  5. 优先

我首先想到的是我需要每个公司的新数据库,因为如果我将bug数据库与每个人混在一起,会影响查询速度的回报。这可能导致拥有大量的数据库,因为这是一个新概念,我只想看看是否有更好的方法来做到这一点。

我假设我会自动生成一个新的数据库,其中有一个名为db_company_56的数据库,上面的5个表的默认填充字段,其中56是公司的ID。

维护这么多的数据库的东西可能会有点混乱,我不知道有一种方法来将它们存储在phpadmin的子文件夹下,从环顾四周我看不到明显的方式。那么,我采取合理的路线还是有更好的方法来做这样的事情?

如果你有更多的阅读材料,我可以搜索自己,这将是伟大的,我只是不知道什么关键字来搜索下。

+1

首先,您需要了解正确的术语。您只需要一个*数据库*,但需要多个*表*。 – str

+1

并且不要为不同的公司使用不同的表格,而只使用您列出的结构并使用适当的索引。 – str

+0

非常简单,您只需在表结构中包含一个“公司”表。 – RiggsFolly

回答

1

当为它设置数据库时,有几种方法可以处理任何情况,但如果我处于自己的位置,我将如何设置它。正如评论中提到的那样,您认为的级别应该高于您应该达到的水平 - 除非安全性是主要问题,并且您不希望在同一数据库中存储不同的公司记录,否则应该只需要一个数据库所有的信息。

我假设公司将有多个项目。

你想要的是,如str中提到的str,多个表。我会为用户及其各自的数据创建一个表格,并为公司,项目,问题类型,优先级,您可能想要的任何其他信息(报告用户等)创建一个表格,以及一个ID相对于公司的数字,或更可能的项目。这不能是一个AUTO_INCREMENT列,但它仍然可以管理(我会在一会儿解释)。

SELECT * FROM 'bugtable' WHERE company = 'company_name' AND project = 'project_name' ORDER BY bugid ASC 

这将显示从指定公司的指定项目的所有结果:

您可以通过使用多个WHERE条件,例如在一个公司显示单个项目的bug。当添加新的错误记录时,很容易分配一个新的ID号码。指定找到的最高ID的变量的查询,例如:

SELECT 'bugid' FROM 'bugtable' WHERE company = 'company_name' AND project = 'project_name' ORDER BY bugid DESC 

然后,加1的ID,并用它来提交新的错误记录。总之,你需要存储错误报告的只有一张表。希望这有所帮助!

+0

感谢您的详细回复,我想我的想法是,如果我的数据库大小是100x的大小,那么即使我使用where company = x,也需要100倍的时间。听起来这种差异对于所有答复来说是最小的,如果它的情况下数据库的大小不重要,只要我索引并运行WHERE子句,那么这只是简化了很多事情? – user1547410

+0

将公司/项目分成单独的表格可能会让您稍微好一些,因为它没有运行两个WHERE,但我猜测这种差异只会在海量数据库中显着。这主要是你想在单个数据库中投入多少表的问题。 – WinstonSmith