问题
我有两个数据表SEQUENCES
,ORGANISMS
其多对多关系在表中映射SOURCES
。SOURCES
和之间也有 1 米的关系ENTRIES
。我将附加一个详细的结构。
我想要实现的是显示具有所有相关生物体和条目的所有序列,其中满足序列表中的条件。我对如何实现这一点有一些想法,但我需要性能最佳的解决方案,因为每个解决方案都包含 50k+ 个条目。
想法一
在sql中选择属于同一序列的所有有机体作为连接字符串,并在PHP中将其拆分。我不知道如何在 SQL 中进行连接。
想法二
选择具有不同生物的相同序列作为不同的记录,按生物排序,稍后在 php 中加入它们。尽管这在某种程度上感觉是错误的。
想法三
使用视图。对此的任何想法表示赞赏
结构体
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