我实际上正在使用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.
我的问题是什么是“好方法”解决方案?可能还有另外一个吗?
答案 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)并希望这个主题可以帮助别人!