CakePHP 数据库设计:工作委员会的协会
CakePHP database design: associations for job board
大家好。
我实际上正在使用 CakePHP 构建一个工作板,如果能在设计数据库方面提供一点帮助,我们将不胜感激!
我有一个 table jobs 具有不同的外键:
id, recruiter_id, title, sector_id, division_id, experience_id
等等
相关的 table(部门、部门和经验)具有相同的配置 id, name and job_count
,有时在一个或两个其他字段上(如部门的 company_count)。
所以我想知道是否有更好的方法来设计这些table。我想将它们三个放在一个名为 lists 的 table 中,键为:id, value and list_name
。使用此配置,我只需一个请求即可获取所有列表,而不是 3 个。
我的问题是 "good way" 解决方案是什么?可能还有另一个?
将它们放在单独的 table 中似乎有些重复,但实际上它们都是同一件事 - 工作的属性,并且具有非常相似的 table 结构。
我认为您可以为 "job_properties" 或其他内容创建一个 table。
每个 属性 可以有一个独特的 slug(如果你想要的话)或者只使用它的 id。
// job_properties table example
id
slug // (optional or could be called "key" if you prefer)
type // (optional - "sector", "division", "min_exp")
name // (for use on the names of things like "marketing" or "technology")
value // (int - for use on things like minimum experience)
那么每个Job都会有很多JobProperty。如果需要的话,它还允许任何工作拥有多个部门。
这将允许您根据作业是否具有特定 属性 或一组属性来提取,并且看起来整体更清晰、更统一,同时又不会使其过于混乱。
我认为通过使用分类系统找到了解决方案。我创建了一个 table terms,其中包含可以关联的所有术语的列表(行业、部门、合同类型等)。
Table 条款 id, name, type
然后我创建了第二个 table term_relationships,其中包含所有关联,包括关联模型的名称。
Tabe term_relationships id, ref, ref_id, term_id
"ref" 指的是关联模型(例如:在我的案例中是工作或申请人),"ref_id" 指的是关联数据(哪个工作或哪个申请人)和 term_id指的是关联的术语。我认为这是最进化和更清洁的解决方案。
感谢大家的帮助(尤其是 Grafikart,我是从那里得到这个想法的)并希望这个主题可以帮助到其他人!
大家好。
我实际上正在使用 CakePHP 构建一个工作板,如果能在设计数据库方面提供一点帮助,我们将不胜感激!
我有一个 table jobs 具有不同的外键:
id, recruiter_id, title, sector_id, division_id, experience_id
等等
相关的 table(部门、部门和经验)具有相同的配置 id, name and job_count
,有时在一个或两个其他字段上(如部门的 company_count)。
所以我想知道是否有更好的方法来设计这些table。我想将它们三个放在一个名为 lists 的 table 中,键为:id, value and list_name
。使用此配置,我只需一个请求即可获取所有列表,而不是 3 个。
我的问题是 "good way" 解决方案是什么?可能还有另一个?
将它们放在单独的 table 中似乎有些重复,但实际上它们都是同一件事 - 工作的属性,并且具有非常相似的 table 结构。
我认为您可以为 "job_properties" 或其他内容创建一个 table。
每个 属性 可以有一个独特的 slug(如果你想要的话)或者只使用它的 id。
// job_properties table example
id
slug // (optional or could be called "key" if you prefer)
type // (optional - "sector", "division", "min_exp")
name // (for use on the names of things like "marketing" or "technology")
value // (int - for use on things like minimum experience)
那么每个Job都会有很多JobProperty。如果需要的话,它还允许任何工作拥有多个部门。
这将允许您根据作业是否具有特定 属性 或一组属性来提取,并且看起来整体更清晰、更统一,同时又不会使其过于混乱。
我认为通过使用分类系统找到了解决方案。我创建了一个 table terms,其中包含可以关联的所有术语的列表(行业、部门、合同类型等)。
Table 条款 id, name, type
然后我创建了第二个 table term_relationships,其中包含所有关联,包括关联模型的名称。
Tabe term_relationships id, ref, ref_id, term_id
"ref" 指的是关联模型(例如:在我的案例中是工作或申请人),"ref_id" 指的是关联数据(哪个工作或哪个申请人)和 term_id指的是关联的术语。我认为这是最进化和更清洁的解决方案。
感谢大家的帮助(尤其是 Grafikart,我是从那里得到这个想法的)并希望这个主题可以帮助到其他人!