我有兩個數據表SEQUENCES
和ORGANISMS
其許多一對多關係在表中SOURCES
mappend。 SOURCES
和ENTRIES
之間也有1米的關係。我會追加一個詳細的結構。
我想要實現的是顯示所有相關生物體和條目的所有序列,其中滿足序列表中的條件。我對如何實現這一點有一些想法,但我需要具有最佳性能的解決方案,因爲每個解決方案都包含50k +條目。
想法一個
選擇屬於同一序列中的SQL一個連接字符串,所有的生物,它在PHP分裂。我不知道,但如何做SQL中的連接。
想法2
選擇具有不同的生物體作爲不同的記錄,以便通過生物體相同的序列,和在PHP後加入其中。雖然這不知何故感覺錯了。
想法3
使用意見。在這一個任何想法理解
結構
SEQUENCES
SEQUENCE_ID
DESCRIPTION
ORGANISMS
ORGANISM_ID
NAME
SOURCES
SOURCE_ID
SEQUENCE_ID FK to SEQUENCES.SEQUENCE_ID
ORGANISM_ID FK to ORGANISMS.ORGANISM_ID
ENTRIES
SOURCE_ID FK to SOURCES.SOURCE_ID
ENTRY_VALUE
期望的結果
array(
array(
"SEQUENCE_ID" => 4,
"DESCRIPTION" => "Some sequence",
"SOURCES" => array(
array(
"ORGANISM_ID" => 562,
"ORGANISM_NAME" => "Escherichia coli",
"ENTRIES" => array(
"some entry",
"some other entry"
),
array(
"ORGANISM_ID" => 402764,
"ORGANISM_NAME" => "Aranicola sp. EP18",
"ENTRIES" => array()
)
)
),
array(
"SEQUENCE_ID" => 5,
.....
)
)
PHP5和FIREBIRD2.5.1
是的,我想到像mongo這樣的nosql數據庫,但不幸的是,我必須留在火鳥,因爲它是'強勁'和'已經存在了幾十年。你的第一個方法與我的第二個想法相符,這對我來說看起來不太合適,但也許我應該嘗試一下。我也想過你的第二種方法,但忘了提及它,謝謝。 – lordvlad
由於裁員,第一種方法聽起來不對,但最終不是創造技術債務,而是速度更快。嵌套數據庫調用也不是很好的做法。獲取特定視圖所需的所有數據,然後處理它。您當然可以兌現表格並從現金中查詢。 – markus