Подходящий дизайн для приложения базы данных - PullRequest
0 голосов
/ 07 декабря 2009

У меня есть вопрос, связанный с веб-приложением, разработанным на 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

Теперь идентификатор в каждой таблице является увеличенным значением и не относится ни к чему другому.

Мое php-приложение начинается с получения результатов из таблицы «Results». Поскольку я хочу, чтобы SET отображался для каждой строки, я устанавливаю другое соединение с базой данных и использую запрос

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

Теперь я также хочу отобразить платформу, которую я извлекаю из таблицы Platform, используя описанный выше метод, т.е. установить другое соединение и передать Set_Name = row['Set_Name'] из таблицы Set.

Теперь для моего приложения есть ли другой способ достижения того же результата?

Как правило, для больших веб-приложений, если данные поступают с сервера базы данных, возможно ли сделать множественное подключение к серверу БД?

Пожалуйста, не принимайте во внимание тот факт, что с MySQL объявление о соединении один раз пойдет на пользу, но как насчет сервера MSSQL? Нужно ли нам писать длинный SQL-оператор с несколькими соединениями / самостоятельными соединениями / объединениями и использовать эти переменные во всем приложении?

Каким будет дизайн приложения для этого случая?

Кто-нибудь может дать мне несколько идей, пожалуйста?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2009

Практически для любого вида базы данных один оператор SELECT, который объединяет три таблицы, будет работать лучше, чем три отдельных оператора, запрашивающих таблицу за штуку. Объединение - это то, что делают реляционные базы данных.

0 голосов
/ 08 декабря 2009

Возможно, я не все понял, но вот что-то похожее. Во-первых, давайте сделаем модель 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'

Вы также можете взглянуть на этот вопрос / ответ с похожим сценарием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...