2017-09-10 20 views
0

私はビジネスのモデルを必要とするアプリケーションを構築しています。モデルはこのようなものになる:Tarantoolのデータモデリングの関係

Company: { 
    id (primary index) 
    name 
    description 
    humans: [id_human1, id_human2, id_human3], 
    jobs: [id_job1, id_job2, id_job3] 
} 

Human: { 
    id (primary index) 
    company: id 
    job: id 
    name 
    age 
} 

Job: { 
    id (primary index) 
    job_name 
    humans: [id_human1, id_human2, id_human3] 
    companies: [id_company1, id_company2, id_company3] 
} 

を私は次のクエリを行うことができるようにしたいと思います: - = 1 JOB_IDているすべての企業が取得 - のcompany_id = 2 のために働くすべての人間を取得します - = 1 JOB_IDているすべての人間を取得してのcompany_id = 2

高速なクエリを維持しながら、どのように私は、tarantoolに上記の情報をモデル化し、データ間の関係を維持する必要があります - のcompany_id = 1 または すべてのジョブを取得します。 ?

答えて

0

タプルセットを正規化すると、会社/仕事と仕事/会社のクエリは非常に簡単になります。企業内の一連のジョブの代わりに、Company_Job {companyID、jobID}という新しいタプルセットを追加します。

次に、Company_Job_Humanと同じ操作を行い、セカンダリインデックスを作成します。

関連する問題