目前我正在ASP 2.0开发一个职位门户,SQL Server 2005涉及求职者注册,简历搜索,申请职位发布,雇主登记,创建职位发布,寻找求职者等。
允许求职者上传大小高达500Kb的word文档,该文档作为varbinary存储在Table中。
现在我在单独的数据库中有MemberShip / Roles。作业门户表位于单独的数据库中。我被告知拆分表,以便JobSeeker表是一个数据库,另一个数据库是雇主,这样它们可以加快性能。
我有几个表桥接(即存储求职者或雇主的身份证),例如应用的职位发布,保存过账的求职者,雇主的职位发布,职位发布(应用的)警报等。
任何人都可以给我如何创建一个具有出色表现的良好数据库设计(一个或多个)。现在我有一个与Job Portal相关的数据库,不包括成员资格。下面给出了关键字段的映射,包括为文本索引启用的字段。
(JobSeekerTable - 存储个人详细信息)
JobSeekerId(PK)
...............
(JobSeekerResumeTable - 存储简历详情)
JobSeekerResumeId(PK)
JobSeekerId(FK)
职位(启用文本索引)
........
(JobSeekerDocTable - 存储简历详情)
JobSeekerDocId(PK)
JobSeekerId(FK)
恢复(作为varbinary)(启用文本索引)
求职信(文字)
........
(JobSeekerPostingTable - 存储求职者保存的职位发布)
JobSeekerPostingId(PK)
JobSeekerId(FK)
JobPostingId(FK)
...
(JobSeekerAppliedTable - 存储作业应用的作业 导引头)
JobSeekerAppliedId(PK)
JobSeekerId(FK)
JobPostingId(FK)
.....
(公司表 - 雇主详细信息)
CompanyId(PK)
.....
(JobPostingTable - 存储创建的职位发布信息 雇主)
JobPostingId(PK)
CompanyId(FK)
职位(启用文本索引)
作业说明(启用文本索引)
.....
(JobPostingConTable - 存储作业发布的信息 位置详情)
JobPostingConId(PK)
JobPostingId(FK)
.....
(CompResumeSaved - 雇主保存的求职者详细信息)
CompResumeSaved(PK)
CompanyId(FK)
JobSeekerId(FK)
.....
最终会添加更多表格。任何人都可以告诉我如何加快表现(特别是雇主寻找简历的搜索引擎和寻找职位发布的求职者。)我希望我已经清楚地提到了一切。
谢谢,
Aftab Ur Rehman
答案 0 :(得分:1)
从快速扫描中,您的数据库结构看起来很好。你说在diff数据库中存储更快吗?这样做没有或几乎没有性能差异。如果不允许添加FK引用,也会降低数据库结构的风险。
无论如何,我认为你要做的最好的事情是按照正常情况创建项目,然后 - 在项目结束时 - 开始进行一些性能比较。您可能会发现该项目按预期工作。如果没有,那么你应该开始调查以下一些方法来加快速度:
OutputCaching - 您的某些网页多久更改一次?他们每次被要求时都需要渲染吗? 业务逻辑缓存 批处理(如果您一次添加大量的东西) 正确的分页
可能有用的工具
SQL事件探查器
(如果您拥有SQL的全套管理工具,则可以使用此选项) - 这将允许您查看每次页面加载请求的SQL数量。作为最佳实践,此数字应尽可能小。平均为1或更少会很棒。
Mini Profiler (http://www.hanselman.com/blog/NuGetPackageOfTheWeek9ASPNETMiniProfilerFromStackExchangeRocksYourWorld.aspx)看起来很酷。
答案 1 :(得分:1)
对于数据库良好的持久性,无需制作不同的数据库。您可以在单个数据库中创建所有表。很容易为你的未来维护。
对于数据库性能,还可以应用索引并启动Schema进行数据库设计。你也可以为你的数据库定义第三个NF,以便做好。
第二件事,不要在数据库中保存CV,只需在数据库中保存参考服务器路径和文件名。请将服务器端的CV保存为文件(使用文件系统)。这是最好的方法。您可以加载显示,您可以删除大小标准,如“naukri.com”和其他着名的工作门户网站。
如果您需要任何类型的帮助来创建此应用程序,请通过此帐户与我联系。我将为您的项目提供指导,直到您的项目将完成...