适合数据库应用程序的设计

时间:2009-12-07 13:58:10

标签: php database web-applications

我有一个与我用PHP开发的网络应用程序相关的问题,MYSQL。

基本上第1部分是: 我以表格的形式显示结果,用于软件测试。

ID Prod_Name       Set    Date      Result  Platform
1  Alpha1          Pro1   01.01.01  PASS    2.3.1.2_OS

现在,我已相应地划分了表格

Table Name: Results
ID, Name, Date, Result

Table Name : Set
ID, Set_Name, Prod_name

Table Name : Platform
ID,  Platform_Name, Set_Name

现在,每个表中的ID都是递增的值,与其他任何内容都没有关系。

我的php应用程序,首先从“结果”表中获取结果。由于我希望为每一行显示SET,因此我正在建立另一个与数据库的连接并使用查询

select Set_name 
from Set 
where Prod_name = row['Name'] // row['Name'] is fetched from the results table.

现在我还想显示平台,我使用上面的方法从Platform表中提取它,即进行另一个连接并从Set表中传递Set_Name = row['Set_Name']

现在我的应用程序有没有其他方法可以实现相同的结果?

通常,对于基于Web的大型应用程序,如果来自数据库服务器的数据是多个连接到数据库服务器的可行选项?

请不要考虑使用MySQL声明连接语句一次将需要但MSSQL服务器呢?我们是否需要编写一个包含多个连接/ selfjoins /联合的长sql语句,并在整个应用程序中使用这些变量?

此案例的应用程序设计将如何?

Anyonce可以给我一些想法吗?

感谢。

2 个答案:

答案 0 :(得分:2)

对于几乎任何类型的数据库,连接三个表的单个SELECT语句将比查询每个表的三个单独语句执行得更好。加入是关系数据库的作用。

答案 1 :(得分:0)

我可能没有理解一切,但这里有类似的东西。首先,让我们制作一个ER模型。

producttest_model_01

现在,因为您似乎不喜欢加入,所以在数据库中创建一个视图。

CREATE VIEW v_test AS
 SELECT TestID, ProductName, TestName, Date, Result, PlatformName
 FROM Product AS p
      JOIN Test AS t ON t.ProductID = p.ProductID
      JOIN Platform AS f ON f.PlatformID = t.PlatformID;

有了这个,你可以简单地使用:

SELECT * FROM v_test WHERE ProductName = 'Alpha1'

您也可以使用类似的方案来查看 this question/answer