CakePHP数据库设计:工作板的关联

时间:2015-02-25 17:25:26

标签: php mysql database cakephp

大家好。

我实际上正在使用CakePHP构建一个工作板,对于设计数据库有一点帮助将不胜感激!

我有一个表作业,其中包含不同的foreigns键: id, recruiter_id, title, sector_id, division_id, experience_id等。

关联的表(扇区,部门和经验)具有相同的配置id, name and job_count,有时在一个或两个其他字段(如扇区的company_count)。

所以我想知道是否有更好的方法来设计这些表格。我想把它们中的三个放在一个名为列表的表中,其中包含键:id, value and list_name。使用此配置,我只需要一个请求来获取所有列表而不是3.

我的问题是什么是“好方法”解决方案?可能还有另外一个吗?

2 个答案:

答案 0 :(得分:0)

将它们放在单独的表中似乎有点重复,当它们真的完全相同时 - 作业的属性,并且会有非常相似的表结构。

我认为你可以为“job_properties”或其他东西创建一个表。

每个属性都可以有一个独特的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。如果需要,它还允许任何工作都有多个部门。

这将允许您根据作业是否具有特定属性或属性集来提取,并且看起来整体更清晰,更整合,同时不会使其过于混淆。

答案 1 :(得分:0)

我认为通过使用分类系统找到了解决方案。我创建了一个表术语,其中包含可以关联的所有术语的列表(扇区,分区,合同类型等)。

条款 id, name, type

我创建了第二个表 term_relationships ,其中包含所有关联,包括关联模型的名称。

Tabe term_relationships id, ref, ref_id, term_id

" REF"指的是相关模型(例如:我的工作中的工作或申请人)," ref_id"是指相关数据(哪个工作或哪个申请人)和term_id是指哪些术语相关联。我认为是最具进化性和更清洁的解决方案。

感谢所有人的帮助(特别是我从中得到这个想法的Grafikart)并希望这个主题可以帮助别人!

相关问题