《Oracle Java EE编程自学与面试指南》20-05:数据库设计
内容导航:
- 前言
- E-R模型
- 创建数据库Sql
- 数据库文件
前言
根据项目规划图、领域模型、用例模型和原型,我们设计出E-R模型,并生成或者编写创建数据库所需要的完整Sql脚本。
1、E-R模型
2、创建数据库Sql
建议为每个项目创建独立的表空间,以免产生表混淆。
2.1、创建表空间
--Action1:创建表空间
-----------------------------------------------------------------------------------------------------------Step1:创建独立的表空间-----------------------------------------------------------------------------------------------------CREATE TABLESPACE JOB DATAFILE 'D:\oraclexe\app\oracle\oradata\XE\Job.dbf' SIZE 10m;--Step2:查询表空间和数据文件-----------------------------------------------------------------------------------------------------SELECT * FROM v$tablespace; --查询表空间SELECT * FROM v$datafile; --查询数据文件--使用左联接查询所有的表空间对应的数据文件SELECT ts.ts# ,ts.NAME ,df.NAME AS "filename"FROM v$tablespace tsLEFT JOIN v$datafile df ON ts.ts# = df.ts#; --Step3:删除表空间-----------------------------------------------------------------------------------------------------DROP TABLESPACE JOB INCLUDING CONTENTS AND DATAFILES;---------------------------------------------------------------------------------------------------------
2.2、创建用户和相关设置
为项目创建独立的用户,并做权限相关配置。
--Action2:创建用户及相关设置
-----------------------------------------------------------------------------------------------------------Step1:创建用户并指定表空间-----------------------------------------------------------------------------------------------------CREATE USER jobdeveloper IDENTIFIED BY admin DEFAULT TABLESPACE "JOB"TEMPORARY TABLESPACE "TEMP";--Step2:删除用户(可选)-----------------------------------------------------------------------------------------------------DROP USER jobdeveloper;--Step3:用户授权-----------------------------------------------------------------------------------------------------ALTER USER "jobdeveloper"ACCOUNT UNLOCK ;GRANT "DATAPUMP_EXP_FULL_DATABASE" TO jobdeveloper WITH ADMIN OPTION;GRANT "DBA" TO jobdeveloper WITH ADMIN OPTION;GRANT "HS_ADMIN_EXECUTE_ROLE" TO jobdeveloper WITH ADMIN OPTION;GRANT "ADM_PARALLEL_EXECUTE_TASK" TO jobdeveloper WITH ADMIN OPTION;GRANT "CTXAPP" TO jobdeveloper WITH ADMIN OPTION;GRANT "SELECT_CATALOG_ROLE" TO jobdeveloper WITH ADMIN OPTION;GRANT "CONNECT" TO jobdeveloper WITH ADMIN OPTION;GRANT "DATAPUMP_IMP_FULL_DATABASE" TO jobdeveloper WITH ADMIN OPTION;GRANT "OEM_MONITOR" TO jobdeveloper WITH ADMIN OPTION;GRANT "APEX_ADMINISTRATOR_ROLE" TO jobdeveloper WITH ADMIN OPTION;GRANT "AQ_USER_ROLE" TO jobdeveloper WITH ADMIN OPTION;GRANT "SCHEDULER_ADMIN" TO jobdeveloper WITH ADMIN OPTION;GRANT "XDB_SET_INVOKER" TO jobdeveloper WITH ADMIN OPTION;GRANT "RECOVERY_CATALOG_OWNER" TO jobdeveloper WITH ADMIN OPTION;GRANT "DBFS_ROLE" TO jobdeveloper WITH ADMIN OPTION;GRANT "XDB_WEBSERVICES_OVER_HTTP" TO jobdeveloper WITH ADMIN OPTION;GRANT "HS_ADMIN_SELECT_ROLE" TO jobdeveloper WITH ADMIN OPTION;GRANT "PLUSTRACE" TO jobdeveloper WITH ADMIN OPTION;GRANT "RESOURCE" TO jobdeveloper WITH ADMIN OPTION;GRANT "AQ_ADMINISTRATOR_ROLE" TO jobdeveloper WITH ADMIN OPTION;GRANT "DELETE_CATALOG_ROLE" TO jobdeveloper WITH ADMIN OPTION;GRANT "XDB_WEBSERVICES_WITH_PUBLIC" TO jobdeveloper WITH ADMIN OPTION;GRANT "XDB_WEBSERVICES" TO jobdeveloper WITH ADMIN OPTION;GRANT "EXECUTE_CATALOG_ROLE" TO jobdeveloper WITH ADMIN OPTION;GRANT "EXP_FULL_DATABASE" TO jobdeveloper WITH ADMIN OPTION;GRANT "GATHER_SYSTEM_STATISTICS" TO jobdeveloper WITH ADMIN OPTION;GRANT "LOGSTDBY_ADMINISTRATOR" TO jobdeveloper WITH ADMIN OPTION;GRANT "AUTHENTICATEDUSER" TO jobdeveloper WITH ADMIN OPTION;GRANT "OEM_ADVISOR" TO jobdeveloper WITH ADMIN OPTION;GRANT "HS_ADMIN_ROLE" TO jobdeveloper WITH ADMIN OPTION;GRANT "XDBADMIN" TO jobdeveloper WITH ADMIN OPTION;GRANT "IMP_FULL_DATABASE" TO jobdeveloper WITH ADMIN OPTION;---------------------------------------------------------------------------------------------------------
2.3、在SQL Developer中创建用户连接
在图形化客户端SQL Devloper中创建新用户连接,测试账号。
--Action3:在SQL Developer中创建用户连接
-----------------------------------------------------------------------------------------------------------Step1:打开SQL Developer-------------------------------------------------------------------------------------------------------双击桌面SQL Devloper快捷方式,启动软件至主窗口。如果是第一次启动,可能需要指定JAVA_HOME--路径,请选择JDK安装根目录即可。--Step2:新建连接-------------------------------------------------------------------------------------------------------连接名:jobdeveloper--用户名:jobdeveloper--密码:admin--保存口令:是--连接类型:基本--角色:默认值--主机名:localhost--端口号:1521--SID:XE--Step3:测试连接-------------------------------------------------------------------------------------------------------点击“测试”按钮,若窗口左下角出现“状态:成功”字样,说明上一步配置正确。--Step4:保存连接-------------------------------------------------------------------------------------------------------点击“保存”按钮,若窗口左侧列表新增一个连接条目,说明保存成功。--Step5:打开连接-------------------------------------------------------------------------------------------------------点击“连接”按钮,关闭“新建/选择数据库连接”对话框,在主窗口左侧的“连接”面板检查是否有新连接被--创建成功。如果该连接被成功创建,点击其名称左侧的“+”展开对象列表。---------------------------------------------------------------------------------------------------------
2.4、创建对象(表,视图,函数,过程)
--Action4:创建对象(表,视图,函数,过程)
-----------------------------------------------------------------------------------------------------------Step01:用户表-----------------------------------------------------------------------------------------------------CREATE TABLE PlatUser(PlatUserID VARCHAR2(36), --用户ID,系统生成UserName VARCHAR2(24), --用户名,填写项。注意,系统强制要求以手机号码作为用户名。Password VARCHAR2(64) NOT NULL, --密码,填写项,在数据库中保存加密后的文本。WechatID VARCHAR2(24), --微信号,填写项Email VARCHAR2(32), --邮箱,填写项Portrait VARCHAR2(100) DEFAULT '' NOT NULL, --头像,图片项Sex CHAR(1) DEFAULT 'O', --性别,选择项。O代表其他。RealName varchar2(16) DEFAULT '', --真名,填写项Birthday DATE, --生日,选择项IsLocked CHAR(1) DEFAULT 'N' NOT NULL, --isLocked,是否锁定,后台选择项。CreateTime Date DEFAULT sysdate NOT NULL, --注册时间,系统生成CONSTRAINT pk_PlatUser PRIMARY KEY(PlatUserID),CONSTRAINT uk_PlatUser_UserName UNIQUE(UserName),CONSTRAINT uk_PlatUser_WechatID UNIQUE(WechatID),CONSTRAINT uk_PlatUser_Email UNIQUE(Email),CONSTRAINT ck_PlatUser_Sex CHECK(Sex = 'M' OR Sex = 'W' OR Sex = 'O'),CONSTRAINT ck_PlatUser_IsLocked CHECK(IsLocked = 'Y' OR IsLocked = 'N'));--删除表(可选)----------------------------------------DROP TABLE PlatUser;-------------------------------------------------------------------------------------------------------Step02:简历表-----------------------------------------------------------------------------------------------------CREATE TABLE Resume(ResumeID VARCHAR2(36) , --简历编号,值参照PlatUser.PlatUserID,基数关系为一对一。WorkingTime DATE NOT NULL, --参加工作时间,选择项Advantage VARCHAR2(1024), --我的优势,填写项HomePage VARCHAR2(100) , --社交主页,填写项Accessory VARCHAR2(100) , --附件简历,选填项ResumeStatusID VARCHAR(32) NOT NULL, --简历/求职状态,字典选择项IsHide CHAR(1) DEFAULT 'N', --隐藏简历CONSTRAINT pk_Resume PRIMARY KEY(ResumeID),CONSTRAINT ck_Resume_IsHide CHECK(IsHide = 'Y' OR IsHide = 'N'),CONSTRAINT fk_PlatUser_Resume FOREIGN KEY(ResumeiD) REFERENCES PlatUser(PlatUserID));----------------------------------------DROP TABLE RESUME;-------------------------------------------------------------------------------------------------------Step03:教育经历表-----------------------------------------------------------------------------------------------------CREATE TABLE EduExp(EduExpID VARCHAR2(36), --教育经历编号ResumeID varchar2(36), --简历编号,值参照Resume.ResumeID,基数关系为一对多。SchoolName varchar2(32), --学校名称,填写项Major varchar2(50), --专业,填写项DiplomalID varchar2(32), --学历,字典选择项StartTime Date, --开始时间,选择项EndTime Date, --截止时间,选择项Description varchar2(1024), --在校经历描述CONSTRAINT pk_EduExp PRIMARY KEY(EduExpID),CONSTRAINT fk_Resume_EduExp FOREIGN KEY(ResumeID) References Resume(ResumeID));----------------------------------------DROP TABLE EduExp;-------------------------------------------------------------------------------------------------------Step04:求职意向表-----------------------------------------------------------------------------------------------------CREATE TABLE WorkPurpose(WorkPurposeID VARCHAR2(36), --求职意向编号ResumeID varchar2(32), --简历编号,值参照Resume.ResumeID,基数关系为一对多。JobTypeID varchar2(32), --期望职位类型,字典选择项IndustryID varchar2(32), --期望行业类型,字典选择项CityID varchar2(32), --期望工作城市,字典选择项MaxSalary NUMBER, --薪资范围之上限,选择项MinSalary NUMBER, --薪资范围之下限,选择项CONSTRAINT pk_WorkPurpose PRIMARY key(WorkPurposeID),CONSTRAINT fk_Resume_WorkPurpose FOREIGN KEY(ResumeID) References Resume(ResumeID));----------------------------------------DROP TABLE WorkPurpose;-------------------------------------------------------------------------------------------------------Step05:工作经历表-----------------------------------------------------------------------------------------------------CREATE TABLE WorkExp(WorkExpID VARCHAR2(36), --工作经历编号ResumeID varchar2(36), --简历编号,值参照Resume.ResumeID,基数关系为一对多。JobTypeID varchar2(36), --职位类型,字典选择项JobName varchar2(32), --职位名称,填写项,选填CompanyName VARCHAR2(32), --公司名称,填写项IndustryID varchar2(36), --公司行业,字典选择项SkillID varchar2(108), --技能标签/列表,字典选择项StartTime Date, --开始时间,选择项EndTime Date, --截止时间,选择项Department varchar2(32), --所属部门,填写项,选填Achievement varchar2(32), --工作业绩,填写项,选填Description varchar2(32), --工作内容,填写项,选填IsHide varchar2(1), --对这家公司隐藏我的信息,默认开启状态Constraint pk_WorkExp PRIMARY KEY(WorkExpID),CONSTRAINT fk_Resume_WorkExp FOREIGN KEY(ResumeID) References Resume(ResumeID));----------------------------------------DROP TABLE WorkExp;-------------------------------------------------------------------------------------------------------Step06:项目经验表-----------------------------------------------------------------------------------------------------CREATE TABLE ProjectExp(ProjectExpID VARCHAR2(36), --项目经验编号ResumeID varchar2(36), --简历编号,值参照Resume.ResumeID,基数关系为一对多。ProjectName varchar2(32), --项目名称,填写项Url varchar2(100), --项目URL,填写项,选填Role varchar2(32), --项目角色,填写项StartTime Date , --开始时间,选择项EndTime Date, --截止时间,选择项Achievement varchar2(1024), --项目业绩,填写项,选填Description varchar2(1024), --项目描述,填写项CONSTRAINT pk_ProjectExp PRIMARY KEY(ProjectExpID),Constraint fk_Resume_ProjectExp FOREIGN KEY(ResumeID) References Resume(ResumeID));----------------------------------------Drop table ProjectExp;-------------------------------------------------------------------------------------------------------Step07:公司表-----------------------------------------------------------------------------------------------------CREATE TABLE Company(CompanyID VARCHAR2(36), --公司ID,值参照PlatUser.PlatUserID,基数关系为一对一。FullName VARCHAR2(26) NOT NULL, --公司全称,选择项ShortName VARCHAR2(16) NOT NULL, --公司简称,选择项Logo VARCHAR2(100), --公司Logo,图片项IndustryID VARCHAR2(32), --所属行业,字典选择项ScaleID VARCHAR2(32), --人员规模,字典选择项FinanceStageID VARCHAR2(32), --融资阶段,字典选择项HomePage VARCHAR2(100), --公司官网,填写项,选填TeamIntro VARCHAR2(300), --团队介绍,填写项TeamAdvantage VARCHAR2(300), --团队亮点CurrentJob VARCHAR2(32), --我的职位(当前职位)CONSTRAINT pk_Commany PRIMARY KEY(CompanyID),CONSTRAINT fk_PlatUser_Commany FOREIGN KEY (CompanyID) REFERENCES PlatUser(PlatUserID));----------------------------------------DROP TABLE Company;-------------------------------------------------------------------------------------------------------Step08:岗位表-----------------------------------------------------------------------------------------------------Create table Job(JobID varchar2(36), --岗位IDCompanyID varchar2(36), --公司ID,值参照Company.CompanyID,基数关系为一对多。JobTypeID varchar2(32), --职位类型,字典选择项JobName varchar2(32), --职位名称,填写项SkillID varchar2(32), --技能要求,字典选择项ExperienceID varchar2(32), --经验要求,字典选择项EducationID varchar2(32), --学历要求,字典选择项CityID varchar2(32), --工作城市,字典选择项WorkAddress varchar2(32), --工作地点,填写项Description varchar2(1024), --职位描述,填写项IsClosed varchar2(1), --停止招聘,选择项MaxSalary number, --薪资范围之上限,选择项MinSalary number, --薪资范围之下限,选择项CONSTRAINT pk_Job PRIMARY KEY(JobID),CONSTRAINT fk_Commany_Job FOREIGN KEY(CompanyID) REFERENCES Company(CompanyID));----------------------------------------DROP TABLE JOB;-------------------------------------------------------------------------------------------------------Step09:岗位统计表-----------------------------------------------------------------------------------------------------Create table JobStat(JobID varchar2(36), --岗位ID,值参照Job.JobID,基数关系为一对一。BrowseCount number, --浏览次数ShareCount number, --分享次数ApplyCount number, --投递/申请次数CONSTRAINT pk_JobStat PRIMARY KEY(JobID),CONSTRAINT fk_Job_JobStat FOREIGN KEY(JobID) REFERENCES Job(JobID));----------------------------------------DROP TABLE JobStat;-------------------------------------------------------------------------------------------------------Step10:应聘/投递/申请明细表-----------------------------------------------------------------------------------------------------CREATE TABLE ApplyDetail(ApplyDetailID VARCHAR2(36), --应聘/投递/申请明细编号。注意,该列不进行PK约束,而是UK约束,方便其子表引用。JobID VARCHAR2(36), --岗位编号ResumeID varchar2(36), --简历编号CreateTime Date, --简历投递时间ApplyStatusID varchar2(36), --应聘/投递/申请状态ID,字典选择项CONSTRAINT pk_ApplyDetail PRIMARY KEY(JobID,ResumeID),CONSTRAINT uk_ApplyDetail_ApplyDetailID UNIQUE(ApplyDetailID),CONSTRAINT fk_Job_ApplyDetail FOREIGN KEY(JobID) References Job(JobID),CONSTRAINT fk_Resume_ApplyDetail FOREIGN KEY(ResumeID) references Resume(ResumeID));----------------------------------------DROP TABLE ApplyDetail;-------------------------------------------------------------------------------------------------------Step11:收藏夹表-----------------------------------------------------------------------------------------------------Create table Favorite(FavoriteID varchar2(36),PlatUserID VARCHAR2(36), --用户ID,值参照PlatUser.PlatUserID,基数关系为一对多。TypeID VARCHAR2(16), --收藏类型,公司用company,简历用resume,岗位用jobCreateTime Date, --收藏时间CONSTRAINT pk_FavoriteID PRIMARY KEY(FavoriteID),CONSTRAINT fk_PlatUser_Favorite FOREIGN KEY(PlatUserID) references PlatUser(PlatUserID));----------------------------------------DROP TABLE Favorite;-------------------------------------------------------------------------------------------------------Step12:字典类型-----------------------------------------------------------------------------------------------------Create table DictType(DictTypeID varchar2(36), --字典类型编号Name varchar2(32) not null, --字典类型名称Description varchar2(1024), --字典类型描述Constraint pk_DictType Primary key(DictTypeID));----------------------------------------DROP TABLE DictType;-------------------------------------------------------------------------------------------------------Step13:字典条目表-----------------------------------------------------------------------------------------------------Create table DictItem(DictItemID varchar2(36), --字典条目编号DictTypeID VARCHAR2(36), --字典类型编号,字典选择项FatherItemID varchar2(36), --父级条目编号,实现无限层次结构NAME VARCHAR2(32) NOT NULL, --字典条目名称HotLevel NUMBER DEFAULT 0 NOT NULL, --热度值,实现字典条目排名,比如热门城市等Description varchar2(1024), --字典条目描述Constraint pk_DictItem Primary key(DictItemID),Constraint fk_DictType_DictItem FOREIGN KEY(DictTypeID) References DictType(DictTypeID));----------------------------------------DROP TABLE DictItem;-------------------------------------------------------------------------------------------------------Step14:管理员表-----------------------------------------------------------------------------------------------------Create table SysAdmin(SysAdminID varchar2(36),Name varchar2(32) not null,Password varchar2(32) not null,CONSTRAINT pk_SysAdmin PRIMARY KEY(SysAdminID));----------------------------------------DROP TABLE SysAdmin;-------------------------------------------------------------------------------------------------------Step15:用户会话表-----------------------------------------------------------------------------------------------------CREATE TABLE PlatUserSession(SessionID VARCHAR2(36), --会话IDPlatUserID VARCHAR2(36), --用户IDStartTime DATE, --会话开始时间EndTime Date, --会话结束时间CONSTRAINT pk_PlatUserSession PRIMARY KEY(SessionID),Constraint fk_PlatUser_PlatUserSession FOREIGN KEY(PlatUserID) references PlatUser(PlatUserID));--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.5、创建备注
--Action5:添加备注
-----------------------------------------------------------------------------------------------------------Step1:添加备注-----------------------------------------------------------------------------------------------------COMMENT ON COLUMN RESUME.RESUMEID IS '简历ID';--StepN:-------------------------------------------------------------------------------------------------------此处应该对所有的表及字段加备注。--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.6、添加初始化数据
--Action6:添加初始化数据
-----------------------------------------------------------------------------------------------------------表:SysAdmin-----------------------------------------------------------------------------------------------------INSERT INTO SysAdmin(SysAdminID , NAME ,PASSWORD) VALUES( '0001' ,'Admin', '123456');--表:PlatUser-----------------------------------------------------------------------------------------------------Insert into PlatUser( PlatUserID , UserName , Password , WechatID , Email , Portrait ,Sex) values('0001','test','testpass','testWID','test@chinasofti.com','--','M');--表:DictType-----------------------------------------------------------------------------------------------------INSERT INTO DictType(DictTypeID , NAME , Description) VALUES('JobTypeID' , 'JobTypeID' , '');INSERT INTO DictType(DictTypeID , NAME , Description) VALUES('SkillID' , 'SkillID' , '');INSERT INTO DictType(DictTypeID , NAME , Description) VALUES('ExperienceID' , 'ExperienceID' , '');INSERT INTO DictType(DictTypeID , NAME , Description) VALUES('CityID' , 'CityID' , '');INSERT INTO DictType(DictTypeID , NAME , Description) VALUES('DiplomalID' , 'DiplomalID' , '');INSERT INTO DictType(DictTypeID , NAME , Description) VALUES('ResumeStatusID' , 'ResumeStatusID' , '');INSERT INTO DictType(DictTypeID , NAME , Description) VALUES('IndustryID' , 'IndustryID' , '');--表:DictItem-----------------------------------------------------------------------------------------------------INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0001' , 'JobTypeID','技术' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0002' , 'JobTypeID','产品' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0003' , 'JobTypeID','设计' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0004' , 'JobTypeID','运营' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0005' , 'JobTypeID','市场' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0006' , 'JobTypeID','传媒' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0007' , 'JobTypeID','职能/高级管理' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0008' , 'JobTypeID','销售' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0009' , 'JobTypeID','金融' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0010' , 'JobTypeID','汽车' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0011' , 'JobTypeID','教育培训' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0012' , 'JobTypeID','医疗健康' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0013' , 'JobTypeID','采购/贸易' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0014' , 'JobTypeID','供应链/物流' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0015' , 'JobTypeID','房地产/建筑' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0016' , 'JobTypeID','咨询/翻译/法律' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0017' , 'JobTypeID','实习生/管培生' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'JT0018' , 'JobTypeID','其他' ,'');--SkillID,技能要求。暂且如此简略设计-----------------------------------------------------------------------------------------------------INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'SK0001' , 'SkillID','Java' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'SK0002' , 'SkillID','PHP' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'SK0003' , 'SkillID','C++' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'SK0004' , 'SkillID','.Net' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'SK0005' , 'SkillID','C' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'SK0006' , 'SkillID','HTML' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'SK0007' , 'SkillID','CSS' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'SK0008' , 'SkillID','JavaScript' ,'');--ExperienceID,经验要求。-----------------------------------------------------------------------------------------------------INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description )VALUES( 'EX0001' , 'ExperienceID','应届生' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'EX0002' , 'ExperienceID','1年以内' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'EX0003' , 'ExperienceID','1-3年' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'EX0004' , 'ExperienceID','3-5年' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'EX0005' , 'ExperienceID','5-10年' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'EX0006' , 'ExperienceID','10年以上' ,'');--CityID,工作城市。-----------------------------------------------------------------------------------------------------INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'CT0001' ,'CityID','北京' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'CT0002' ,'CityID','天津' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'CT0003' ,'CityID','上海' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'CT0004' ,'CityID','广州' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'CT0005' ,'CityID','西安' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'CT0006' ,'CityID','武汉' ,'');--DiplomalID,学历。-----------------------------------------------------------------------------------------------------INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'DL0001' , 'DiplomalID','不限' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'DL0002' , 'DiplomalID','大专' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'DL0003' , 'DiplomalID','本科' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'DL0004' , 'DiplomalID','硕士' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'DL0005' , 'DiplomalID','博士' ,'');--ResumeStatusID-----------------------------------------------------------------------------------------------------INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'RS0001' , 'ResumeStatusID','离职-随时到岗' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'RS0002' , 'ResumeStatusID','在职-月内到岗' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'RS0003' , 'ResumeStatusID','在职-考虑机会' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'RS0004' , 'ResumeStatusID','在职-暂不考虑' ,'');--IndustryID,期望行业。-----------------------------------------------------------------------------------------------------INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0001' ,'IndustryID','健康医疗' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0002' ,'IndustryID','生活服务' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0003' ,'IndustryID','旅游' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0004' ,'IndustryID','金融' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) values( 'ID0005' ,'IndustryID','信息安全' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0006' ,'IndustryID','广告营销' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0007' ,'IndustryID','数据服务' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0008' ,'IndustryID','智能硬件' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0009' ,'IndustryID','文化娱乐' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0010' ,'IndustryID','网络招聘' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0011' ,'IndustryID','分类信息' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) values( 'ID0012' ,'IndustryID','电子商务' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) values( 'ID0013' ,'IndustryID','移动互联网' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0014' ,'IndustryID','企业服务' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0015' ,'IndustryID','社交网络' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0016' ,'IndustryID','教育培训' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0017' ,'IndustryID','O2O' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0018' ,'IndustryID','游戏' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0019' ,'IndustryID','互联网' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) values( 'ID0020' ,'IndustryID','媒体' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0021' ,'IndustryID','IT软件' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0022' ,'IndustryID','通信' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0029' ,'IndustryID','公共会展' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0023' ,'IndustryID','房地产/建筑' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0024' ,'IndustryID','汽车' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0025' ,'IndustryID','供应链/物流' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0026' ,'IndustryID','咨询/翻译/法律' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0027' ,'IndustryID','采购/贸易' ,'');INSERT INTO DictItem(DictItemID , DictTypeID , NAME , Description ) VALUES( 'ID0028' ,'IndustryID','非互联网行业' ,'');---------------------------------------------------------------------------------------------------------
3、特殊情况
3.1、自关联
注意,本案例中使用了自关联,我们需要通过额外的案例来强化本知识点。
--Demo:级联演示。此处用到了自关联。
-----------------------------------------------------------------------------------------------------------创建表-----------------------------------------------------------------------------------------------------Create table Region1(FatherID varchar2(32),ChildID varchar2(32),Name varchar2(32),CONSTRAINT Pk_Region PRIMARY KEY(ChildID),CONSTRAINT fk_Father_Child Foreign key(FatherID) References Region1(ChildID));Drop Table Region1;--插入测试数据-----------------------------------------------------------------------------------------------------INSERT INTO Region1(FatherID , ChildID , Name) VALUES('00' ,'00', '中国');INSERT INTO Region1(FatherID , ChildID , Name) VALUES('00','0001' , '北京');INSERT INTO Region1(FatherID , ChildID , Name) VALUES('00','0002' , '上海');INSERT INTO Region1(FatherID , ChildID , Name) VALUES('00','0003' , '广州');INSERT INTO Region1(FatherID , ChildID , Name) VALUES('00','0004' , '陕西');INSERT INTO Region1(FatherID , ChildID , Name) VALUES('0004','000401' , '西安');INSERT INTO Region1(FatherID , ChildID , Name) VALUES('0004','000402' , '咸阳');--限定列查询-----------------------------------------------------------------------------------------------------SELECT FatherID ,ChildID ,NAME FROM Region1 WHERE FatherID = '00';--全列查询-----------------------------------------------------------------------------------------------------SELECT * FROM Region1 WHERE FatherID = '0004';---------------------------------------------------------------------------------------------------------
《Oracle Java EE编程自学与面试指南》20-05:数据库设计相关推荐
- 《Oracle Java EE编程自学和面试指南》09-02:HttpSession接口
深入了解IT/互联网行业及岗位,请参阅通用IT/互联网岗位招聘计划(最新全岗版). 深入了解职业晋升及学习路线,请参阅最优职业晋升路线和课程学习指南(最新全栈版). 内容导航: 前言 1.HttpSe ...
- 《Oracle编程自学与面试指南》23:数据字典视图
内容导航 数据字典视图主要可分为三类: dba - 所有方案包含的对象信息 所有用户的. all - 用户可以访问的对象信息 我有权访问的,包括自己所有的,及其他用户的. user - 用户方案的对象 ...
- 《Oracle编程自学与面试指南》17-03:多列子查询
内容导航 多列子查询,即一个子查询中同时返回多个查询的列. 案例代码: /* 作者:AT阿宝哥 日期:2016年9月18日 愿景:参考官方资料,做最好的课程,成就更多职业人! 邮箱:12264104@ ...
- 《Oracle编程自学与面试指南》24-03:招聘领域数据库设计详解
内容导航 3.招聘APP数据库试练 3.招聘APP数据库试练 此项目参照拉勾网.脉脉.BOSS直聘.智联卓聘.猎聘同道等知名互联网招聘应用而设计,在设计上着重突出"人人都是职业人,人人都是H ...
- 《Oracle编程自学与面试指南》12:条件(Conditions)
内容导航 条件(Conditions)是一个或多个表达式和逻辑(布尔)运算符的组合,并返回一个值TRUE.FALSE或UNKNOWN. 本章包括以下内容: 比较条件(Comparison Condit ...
- 怎么用java ee编程_Java EE应用程序入门 - 编程入门网
Java EE应用程序入门 时间:2011-07-06 netbeans.org 本文将详细介绍使用 EJB 3.0 技术开发企业应用程序的基础知识,而 EJB 3.0 是 Java EE 5 平台的 ...
- Java实现 “账本“ 小项目(一) 之数据库设计(源码+注解)
声明: 本项目为HOW2J的一个付费项目:一本糊涂账.适合java新手进行一个项目练手,下面我将分模块把该项目的源码等资源分享给大家,供大家学习. 目录 声明: 功能展示: 消费一览: 记一笔: 消费 ...
- JAVA知识点-适合自学、面试
1.Java的数据结构你用过那些?map与set的本质区别是什么 数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合. 依据逻辑关系,数据结构分为:线性和非线性数据结构. 线性和非线性数据结 ...
- Python编程自学入门学习指南
对于初学者来说,入门很重要,这关系到初学者是从入门到精通还是从入门到放弃. 以下是结合Python的学习经验整理出来的学习路径,主要有四个阶段. NO.1新手入门阶段,学习基础知识. 一般来说,找一本 ...
最新文章
- c 远程编辑linux文件,makefile - 在远程Linux机器上编译C ++ - “检测到时钟偏差”警告...
- linux shell里面nohup的用法
- Python3.6 安装 statsmodels
- Ubuntu16.04安装ROS kinetic
- 无意中发现一个有趣的事情
- 在linux下赋予000权限,【linux】对于文件权限的理解
- c语言 手动实现sizeof,sizeof究竟是怎样实现的?
- Flex 4 NativeWindow 中添加Flex组件(问题很多,尚不完善)
- 从源代码解释Android事件分发机制
- [工作笔记之一] 转正答辩 2015-08-04 15:08
- word2016页眉横线删除不掉
- 优思学院|六西格玛管理的经典六步法
- 顺丰java_Java顺丰同城接口开发
- RPG Maker MV 计时器的用法
- 创业者、如何可以投资小,又可以依附互联网去创业?
- Fluent UDF 获取组分传输模型中的摩尔分数或分压力
- WIN32_FIND_DATA、FILETIME、FindFirstFile对文件的操作
- 送给八年以前两年以后的自己
- python3安装psycopg2
- 奥比中光网络深度摄像头——人脸活体检测
热门文章
- WD My Cloud安装迅雷远程下载固件
- mysql 安装 my.cnf配置错误_MySQL中配置文件my.cnf因权限问题导致无法启动的解决方法...
- 毕老师讲Java--TreeSet
- 【Android App】物联网中指南针、计步器、感光器、陀螺仪的讲解及实战演示(附源码 超详细必看)
- 从入门到精通,7天轻松玩转云速搭CADT,所见即所得的云架构工具
- 【计算机毕业设计】在线招聘系统
- 基于SSM框架的课堂互动应答系统
- 为什么说社交电商崩塌倒计时?
- yolov5-5.0加入CBAM,SE,CA,ECA注意力机制
- 关于雷达的认识与理解