【问题标题】:Database Design help needed需要数据库设计帮助
【发布时间】:2023-03-24 05:13:01
【问题描述】:

我正在尝试为招聘网站开发数据库模型,但我有很多困惑。

  • 求职者可以在线制作5份简历。 在位置字段中,他可以添加 5 最多位置。
  • 求职者可以填写表格并 工作将根据电子邮件发送 他填写的字段。在此表单中,他可以根据需要选择任意多个位置。
  • 职位海报可以发布职位。而且他可以 添加任意数量的位置 工作表。

我创建了一个包含所有位置的位置表。现在我很困惑如何将位置保存在简历、jobEmail 和 jobAd 表中?

我能想到两种解决方案。

  1. 每个表格中都会有一个位置字段,从表单中发布的所有位置 ID 都将保存在此字段中,以逗号分隔。稍后我可以使用一些 mySql 函数来匹配这些位置。
  2. 为每个表创建另一个表,其中包含 resumeId、locationId 列,所有位置都将作为单独的记录保存在此表中。

这些解决方案中哪一个是正确的?或者这种情况有其他方法吗。

谢谢

【问题讨论】:

  • 我的第一份工作是一个电子商务网站,它以逗号分隔值存储所有图像和产品信息。请不要这样做。声明使用额外表的解决方案更易于管理。

标签: database-design


【解决方案1】:

创建另一个表。 永远不会将数据存储为逗号分隔值。 “从不,永远”可能有点夸张,但在大多数情况下,最好将数据存储在表中,这样您就可以对其应用普通 SQL 查询,而无需解析逗号分隔的数据。

换句话说,第二种方法是最优的。

【讨论】:

  • 我第二个“从不,永远逗号分隔”但是,在这种情况下,我感觉位置只是 5 个神奇的文本字段,SQL 永远不会处理(非结构化数据,在 SQL 中什么也做不了) .所以我会使用一些神奇的分隔符(char(253),a-la-PICK)来存储多值属性......
  • 我必须为 resume、jobAd、emailJobs 表中的每个条目存储位置、子位置、分类、子分类、工作类型。所以我会制作(5 x 3)张桌子?例如,jobAd 表将包含 jobAdId 和 jobTitle 字段,而另一个表 jobAdLocations 将包含 jobAdid、locationId 字段。假设招聘广告是针对 50 个地点的,那么在 jobAdLocation 表中一个 jobAd 会有 50 个条目?
  • @mysterious - 存储空间很便宜! =) 如果广告针对 50 个位置,则在 jobAdLocation 表中有 50 条记录。例如,如果您想查找位置为 33 的所有工作,使用 jobAdLocation 表 (SELECT * FROM jobAdLocation WHERE LocationId = 33) 比逗号分隔值容易得多。特别是如果您想要所有具有位置 33,但没有位置 32,例如......
  • @pascal,也许我应该说“永远,永远任何东西分开”。如果您使用数据库来存储关系数据,请发挥其优势。
【解决方案2】:

我会将所有这些“分类”或“对象”作为单独的表。当需求发生变化时,这将产生可扩展性(它们总是如此)。

然后通过代码控制它们只允许 5 个这一事实,无论是在存储过程中还是通过 php 或 c#,都无所谓。

【讨论】:

    猜你喜欢
    • 2010-11-11
    • 1970-01-01
    • 2011-07-17
    • 2011-03-25
    • 2011-07-23
    • 1970-01-01
    • 2014-08-02
    相关资源
    最近更新 更多