简历/简历和单独部分的数据库架构

Joh*_*ith 2 mysql schema

我想弄清楚我在这里是否走在正确的轨道上。

resumes
id
user_id

resume_sections
id
name
desc
Run Code Online (Sandbox Code Playgroud)

部分是我们通常在简历、经验、技能、教育等中找到的部分。

提前致谢!

Tod*_*ett 5

你在这里走在正确的轨道上。需要考虑的事情:

用户

一个用户可能有多个简历。求职者通常会根据职位空缺量身定制简历,并希望保留所有这些。这意味着您将需要一个User表。拥有用户表还为您提供了一个存储用户属性的地方,例如他们的姓名。

部分

简历有很多种部分,例如经验、工作经历、教育等。这意味着您需要将恢复部分表设为“部分类型”表。

事物类型与事物

这带来了逻辑数据库模式设计中的一个共同模式——事物种类和事物本身之间的区别。我建议您添加一个与Resume相关的Section表,其中包含用户简历实例的实际部分。

模型示例

Oracle 提供了一个名为Oracle Data Modeler的免费工具,您可以使用它来创建表的可视模型,称为实体关系图 (ERD),然后从中生成您的 DDL。这是您的数据库设计的示例入门模型: 示例数据模型 创建 ERD 还可以帮助您开始阐明需求。例如,我将部分表的键设为简历和序列号。这意味着您可以在简历中包含 2 个或更多部分具有相同类型的内容。这有意义吗?或者说每种简历只能有一个部分是否有意义?其次,您要考虑是什么唯一标识了每个表中的一行。例如,我使用了简历编号作为简历表的键。说每一行都由用户名和简历名称唯一标识不是很有意义吗?这将防止存储重复的简历。

DDL 生成

一旦确定了所有业务规则,就可以使用 Oracle Data Modeler 生成 DDL。虽然它不支持 mySQL,但您仍然可以生成它并获取基本结构,然后针对特定于 mySQL 的语法进行更正。这是我从这个模型中快速生成的示例:

-- Generated by Oracle SQL Developer Data Modeler 4.1.0.873
--   at:        2015-08-19 09:15:38 EDT
--   site:      Oracle Database 12c
--   type:      Oracle Database 12c

CREATE TABLE "Resume"
  (
    "Resume_Number" NUMBER (10) NOT NULL ,
    "User_Id"       NUMBER (10) NOT NULL ,
    "Name"          VARCHAR2 (100) NOT NULL ,
    "Description"   VARCHAR2 (1000) NOT NULL
  ) ;
ALTER TABLE "Resume" ADD CONSTRAINT "Resume_PK" PRIMARY KEY ( "Resume_Number" )
;

CREATE TABLE "Section"
  (
    "Resume_Number"           NUMBER (10) NOT NULL ,
    "Section_Sequence_Number" NUMBER (5) NOT NULL ,
    "Section_Type_Id"         NUMBER (5) NOT NULL ,
    "Content"                 VARCHAR2 (4000) NOT NULL
  ) ;
ALTER TABLE "Section" ADD CONSTRAINT "Section_PK" 
PRIMARY KEY ( "Resume_Number", "Section_Sequence_Number" ) ;

CREATE TABLE "Section_Type"
  (
    "Section_Type_Id" NUMBER (5) NOT NULL ,
    "Name"            VARCHAR2 (100) NOT NULL ,
    "Description"     VARCHAR2 (1000) NOT NULL ,
    "Order_Number"    NUMBER (5) NOT NULL
  ) ;
ALTER TABLE "Section_Type" ADD CONSTRAINT "Section_Type_PK" 
PRIMARY KEY ( "Section_Type_Id" ) ;

CREATE TABLE "User"
  (
    "User_Id" NUMBER (10) NOT NULL ,
    "Name"    VARCHAR2 (100) NOT NULL
  ) ;
ALTER TABLE "User" ADD CONSTRAINT "User_PK" 
PRIMARY KEY ( "User_Id" ) ;

ALTER TABLE "Resume" ADD CONSTRAINT "Resume_User_FK" 
FOREIGN KEY ( "User_Id" )
REFERENCES "User" ( "User_Id" ) ;

ALTER TABLE "Section" ADD CONSTRAINT "Section_Resume_FK" 
FOREIGN KEY ( "Resume_Number" ) 
REFERENCES "Resume" ( "Resume_Number" ) ;

ALTER TABLE "Section" ADD CONSTRAINT "Section_Section_Type_FK" 
FOREIGN KEY ( "Section_Type_Id" ) 
REFERENCES "Section_Type" ( "Section_Type_Id" ) ;
Run Code Online (Sandbox Code Playgroud)

这为您提供了大量的 DDL。关于数据建模的一个很好的参考是 David Hay 的Enterprise Model Patterns。我希望这个答案可以帮助您继续完成您的设计!