为Job Listing网站设计数据库模式?

时间:2009-02-16 08:14:41

标签: sql sql-server

对于一个学校项目,我在ASP.NET MVC中创建了一个简单的Job Listing网站(我们必须选择框架)。

我已经考虑了一段时间,这是我最初的架构:

  

JobPostings
  + --- JobPostingID
  + ---用户名
  + ---公司
  + --- JOBTITLE
  + --- JobTypeID
  + --- JobLocationID
  + ---说明
  + --- HowToApply
  + --- CompanyURL
  + --- LogoURL

     

JobLocations
  + --- JobLocationID
  + ---市
  + ---国家
  + --- Zip

     

JobTypes
  + --- JobTypeID
  + --- JobTypeName

注意:UserID将链接到MembershipProvider生成的Member表。

现在,我非常关系数据库和SQL的新东西,所以我要轻视我。

命名怎么样?它应该只是JobPostings表下的“Description”,还是“JobDescription”(与该主表中的其他列相同)。它应该是“JobPostingID”还是“ID”?

一般提示也很受欢迎。

编辑:我们的项目修复了JobTypes,将有15个工作类别。我已经把这个社区wiki鼓励人们发帖。

5 个答案:

答案 0 :(得分:1)

一些想法:

  • 除非您事先知道作业类型列表有限,否则请勿将其拆分为单独的表格;
  • 只需使用“ID”作为每个表的主键(我们已经知道它是一个JobLocationID,因为它位于JobLocations表中......);
  • 我从JobPostings中的字段中删除'Job'前缀,因为它有点多余。

您可以包含一些特定于域的信息,例如工资范围和申请人详细信息,但我不知道您应该在多大程度上采用这种方式。

答案 1 :(得分:1)

对我来说很好,我建议还将Created,LastModified和Deleted列添加到用户可更新表中以及将来的校对。

确保在架构中明确定义主键和外键。

答案 2 :(得分:1)

Job Schema http://gfilter.net/junk/JobSchema.png

我将公司从公开发布中分离出来,因为这样可以使公司更容易维护。

我还添加了一个XREF表,可以存储公司和位置之间的关系。您可以为每个公司办公室设置一行,并且有一种非常简单的方法可以找到“该公司的替代工作地点”。

这应该是一个有趣的项目......祝你好运。

编辑:我会添加Created和LastModifiedBy(引用UserID)。这些是一般管家的好栏目。

答案 3 :(得分:0)

  

命名怎么样?它应该是公正的吗?   JobPostings下的“描述”   表,或者它应该是JobDescription   (与该主要中的其他列相同   表)。应该是“JobPostingID”还是   只是“身份证”?

就个人而言,我按照你的建议指定带有前缀的“ID”和“描述”等通用声音字段。它可以避免在以后编写查询时对id / description适用的内容产生混淆(并省去了别名它们的麻烦)。

答案 4 :(得分:0)

我建议将您要存储在JobLocations中的数据折回到主表中。可以为州和国家提供一张桌子,但我怀疑你想要一张包含每个城市/州/国家/地区的桌子,你真的没有从中获得任何东西。如果有人进入并编辑他们的位置会发生什么?您必须检查以确保没有其他工作列表指向该位置并进行编辑,否则创建一个新位置并指向该位置。

我通常的模式是地址和城市作为文本的记录和FK到状态表。