2017-09-10 4 views
0

Je construis une application qui a besoin d'un modèle d'entreprise. Le modèle ressemble à ceci:Tarantool Data Modeling Relations

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] 
} 

Je voudrais pouvoir faire les requêtes suivantes: - Obtenez toutes les entreprises qui ont JOB_ID = 1. - Obtenez tous les humains qui travaillent pour company_id = 2. - Obtenez tous les emplois où company_id = 1 ou - Obtenez tous les humains qui ont jOB_ID = 1 et company_id = 2.

Comment dois-je modéliser les informations ci-dessus dans tarantool et maintenir les relations entre les données, tout en maintenant les requêtes rapides ?

Répondre

0

Les requêtes entreprise/travail et travail/entreprise seraient extrêmement simples si vous avez normalisé les ensembles de tuple. Au lieu d'un tableau de travaux en entreprise, ajoutez un nouvel ensemble de tuple appelé Company_Job {companyID, jobID}. Puis faites de même avec un Company_Job_Human et construisez des index secondaires.