我想弄清楚我在这里是否走在正确的轨道上。
resumes
id
user_id
resume_sections
id
name
desc
Run Code Online (Sandbox Code Playgroud)
部分是我们通常在简历、经验、技能、教育等中找到的部分。
提前致谢!
你在这里走在正确的轨道上。需要考虑的事情:
一个用户可能有多个简历。求职者通常会根据职位空缺量身定制简历,并希望保留所有这些。这意味着您将需要一个User表。拥有用户表还为您提供了一个存储用户属性的地方,例如他们的姓名。
简历有很多种部分,例如经验、工作经历、教育等。这意味着您需要将恢复部分表设为“部分类型”表。
这带来了逻辑数据库模式设计中的一个共同模式——事物种类和事物本身之间的区别。我建议您添加一个与Resume相关的Section表,其中包含用户简历实例的实际部分。
Oracle 提供了一个名为Oracle Data Modeler的免费工具,您可以使用它来创建表的可视模型,称为实体关系图 (ERD),然后从中生成您的 DDL。这是您的数据库设计的示例入门模型:
创建 ERD 还可以帮助您开始阐明需求。例如,我将部分表的键设为简历和序列号。这意味着您可以在简历中包含 2 个或更多部分具有相同类型的内容。这有意义吗?或者说每种简历只能有一个部分是否有意义?其次,您要考虑是什么唯一标识了每个表中的一行。例如,我使用了简历编号作为简历表的键。说每一行都由用户名和简历名称唯一标识不是很有意义吗?这将防止存储重复的简历。
一旦确定了所有业务规则,就可以使用 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。我希望这个答案可以帮助您继续完成您的设计!
归档时间: |
|
查看次数: |
2835 次 |
最近记录: |