Bir veritabanı uygulaması için uygun tasarım

2 Cevap php

Ben PHP, MySQL ile geliştirilen bir web uygulaması ile ilgili bir sorum var.

basically part 1 is : I display results in the form of table say for software testing.

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

Şimdi, buna uygun olarak tablolar bölünmüş var

Table Name: Results
ID, Name, Date, Result

Table Name : Set
ID, Set_Name, Prod_name

Table Name : Platform
ID,  Platform_Name, Set_Name

Şimdi, her tabloda ID bir artırılır değerdir ve başka bir şey ile ilgili değildir.

Benim php app, 'Sonuçlar' tablosundan sonuç alma ile başlar. Ben her satır için görüntülenecek SET istiyorum beri, ben veritabanına başka bir bağlantı yapmadan ve sorguyu kullanıyorum

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

şimdi Ben de başka bir bağlantı yapmadan yani yukarıdaki yöntemi kullanarak Platformu tablodan onu ayıklanması ve Set tablodan Set_Name = row['Set_Name'] geçirerek hangi platformu görüntülemek istiyorum.

Şimdi benim uygulama için aynı sonucu elde etmek için başka bir yolu var mı?

Genellikle, büyük web tabanlı uygulamalar için, veri bir veritabanı sunucusu gelen ise bir DB sunucusu uygun bir seçenek için birden fazla bağlantı yapıyor?

MySQL bir bağlantı bildirimde ilan ile bir kez lüzumlu yapacak gerçeğini dikkate almayınız ama ne MSSQL sunucusu hakkında? Biz birkaç katıldı / selfjoins / birlikleri ile uzun bir sql deyimini yazmak ve tüm uygulama üzerinde bu değişkenleri kullanmak gerekir mi?

Bu durumda uygulama tasarımı ne kadar olacak mı?

Anyonce bana bazı fikirler verebilir misin lütfen?

Teşekkürler.

2 Cevap

I may not have understood everything, but here is something similar. First, let's make an ER model.

alt text

Şimdi, veritabanında bir görünüm oluşturmak, katılır gibi görünmüyor çünkü.

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;

Bu yerde ile, sadece kullanabilirsiniz:

SELECT * FROM v_test WHERE ProductName = 'Alpha1'

Siz de benzer bir senaryo ile this question/answer bir göz alabilir.

Veritabanı hemen hemen herhangi bir lezzet için, üç tabloyu birleştiren tek bir SELECT deyimi her biri bir tablo sorgularken daha iyi üç ayrı açıklamalarda seslendirecek. Birleştirme ilişkisel veritabanları ne olduğunu.