2013-11-27 111 views
2

什麼是找工作的網站,具有以下要素數據建模的最佳方式:NDB數據存儲:數據建模的招聘網站

  • 兩種類型的用戶帳戶:JobSeekersEmployers
  • 僱主可以創建JobPost實體。
  • 每個JobSeeker都可以創建一個Resume實體,以及許多JobApplication實體。
    • JobSeekers可以創建一個JobApplication實體,該實體與JobPost實體相關。
      • A JobPost實體可能會收到很多JobApplication實體。
      • JobSeeker只能爲每個JobPost實體創建一個JobApplication實體。
    • Resume包含EducationExperience一個或多個實例,使用ndb.StructuredProperty(repeated = True)
      • 每個Education包含以下ndb.StringProperty字段:institutioncertificationarea_of_study
      • 雖然每個Experience包含:workplacejob_title

回答

2

這裏是能滿足你需求的骨架模型:

class Employer(ndb.Model): 
    user = ndb.UserProperty() 

class JobPost(ndb.Model): 
    employer = ndb.KeyProperty(kind=Employer) 

class JobSeeker(ndb.Model): 
    user = ndb.UserProperty() 
    def apply(self, job_post): 
     if JobApplication.query(JobApplication.job_seeker == self.key, 
           JobApplication.job_post == job_post).count(1) == 1: 
      raise Exception("Already applied for this position") 
     ... 

class Resume(ndb.Model): 
    job_seeker = ndb.KeyProperty(JobSeeker) 
    education = ndb.JsonProperty() 
    experience = ndb.JsonProperty() 

class JobApplication(ndb.Model): 
    job_seeker = ndb.KeyProperty(JobSeeker) 
    job_post = ndb.KeyProperty(JobPost) 

注:

  • EmployerJobSeeker有內置UserProperty識別和允許他們登錄。

  • Resume使用JsonProperty代替educationexperience以允許將來有更多的領域。你可以指定一個Python字典這一領域,例如 resume.education = {'institution': 'name', 'certification': 'certificate', 'area_of_study': 'major', 'year_graduated': 2013, ...} (我個人發現StructuredProperty是得不償失的痛苦,我現在避免它。)

  • 限制JobSeeker只有一個JobApplication可以做到方法apply(),該方法檢查JobApplication表中是否存在現有應用程序。