2009-12-07 98 views
0

我有一個與我在PHP,MYSQL中開發的Web應用程序相關的問題。適用於數據庫應用程序的設計

基本上第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應用程序,從獲取'結果'表中的結果開始。因爲我想設置顯示的每一行,我正在對數據庫的另一個連接,並使用查詢

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

現在我也想展示的平臺,我從平臺臺使用上述方法提取其即進行另一個連接並從Set表中傳遞Set_Name = row['Set_Name']

現在對於我的應用程序是否有其他方式來實現相同的結果?

通常,對於基於大型Web的應用程序,如果數據來自數據庫服務器正在與數據庫服務器建立多個連接可行的選項?

請不要考慮用MySQL聲明一個連接語句一次會做必要的事實,但MSSQL服務器呢?我們是否需要用幾個連接/自連接/聯合來編寫長的sql語句,並在整個應用程序中使用這些變量?

這種情況下的應用程序設計如何?

Canononce可以給我一些想法嗎?

謝謝。

回答

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有類似的情況。

2

對於幾乎任何數據庫的風味,連接三個表的單個SELECT語句將比單獨查詢每個表的每個語句執行得更好。加入是關係數據庫的功能。

相關問題