JAVA技术交流QQ群:170933152
场景
这里我采用一个“最经典”的学生选课场景来使用ERStuidio
场景分析
学生与课程是多对多的关系,而在数据库设计中大部分都是将多对多转化成一对多,即需要”第三方”表(选课表)来连接这个关系
学生表一对多选课表
课程表一对多选课表
ERStudio解决方案
1、打开ERstudio创建三张表
表关系详解
经常用第二种一对多关系
1、Identifying Relationship。
翻译:标识关联。
描述:一对多的关联,主表的主键既是子表的外键也是子表的主键。
2、Non-Identifying, Mandatory Relationship。
翻译:非标识强制关联。
描述:一对多的关联,主表的主键是子表的外键,且非空。
3、Non-Identifying, Optional Relationship。
翻译:非标识可选关联。
描述:一对多的关联,主表的主键是子表的外键,但可以为空。
4、One-to-One Relationship。
翻译:一对一关联。
描述:一对一的关联,主表的主键是子表的外键,且可以为空。
5、Non-Specific Relationship。
翻译:非特定关联。
描述:多对多的关联,主表与子表没有确定的关联关系。
2、修改表名、添加属性字段(双击表)
uml创建完成
s:学生编号主键
c:课程编号主键
sc:学生编号外键、课程编号外键
3、选择生成物理模型
需要设置的内容(其他的就下一步就好)
物理模型
4、生成数据库
相关设置
下一步,直到看到相关界面,即可查看生成表的sql语句
<span style="color:#000000"><code>--
-- ER/Studio 8.0 SQL Code Generation
-- Company : Microsoft
-- Project : DATA MODEL
-- Author : linjie
--
-- Date Created : Saturday, May 12, 2018 09:29:06
-- Target DBMS : MySQL 5.x
----
-- TABLE: course
--CREATE TABLE course(cid INT AUTO_INCREMENT,cname NATIONAL VARCHAR(20) NOT NULL,PRIMARY KEY (cid)
)ENGINE=MYISAM
;--
-- TABLE: cs
--CREATE TABLE cs(sid INT NOT NULL,grade INT,cid INT NOT NULL
)ENGINE=MYISAM
;--
-- TABLE: students
--CREATE TABLE students(sid INT AUTO_INCREMENT,sname NATIONAL VARCHAR(20) NOT NULL,PRIMARY KEY (sid)
)ENGINE=MYISAM
;--
-- TABLE: cs
--ALTER TABLE cs ADD CONSTRAINT Refstudents4 FOREIGN KEY (sid)REFERENCES students(sid)
;ALTER TABLE cs ADD CONSTRAINT Refcourse5 FOREIGN KEY (cid)REFERENCES course(cid)
;</code></span>