如何使用軟件進行數據庫設計(多對多關系)
1 多對多關系示例
1、表名和字段
學生表:Student(s_id,s_name,s_birth,) -->學生編號,學生姓名,,出生年月,學生性別
課程表:Course(c_id,c_name) -->課程編號,課程名稱
教師表:Teacher(t_id,t_name) -->教師編號,教師姓名
成績表:Score(s_id,c_id,s_score) -->學生編號,課程編號,分數
教師—課程表(teach):Teach(t_id,c_id)
2、表之間的關系
學生與課程之間是多對多(m:n)的關系:一名學生要學習多門課程,一門課程有多名學生學習。
教師與課程之間是多對多(m:n)的關系:一個老師可以上多門課程,一門課程可以由多個老師上
注意:多對多的關系,會生成第三張表,將多對多的關系轉換成一對多的關系
2 創建CDM
點擊菜單欄“File”,點擊“New Model”,打開New Model對話框,在該對話框中:
①選擇第二個,Model types;
②選擇第二個, Data Model;
③默認選中了 Diagram
④在Model name處為模型起一個名字,在本例中命名為:sct;
⑤點擊ok。
將改名,改成CDM,然后點擊保存按鈕,選擇合適的路徑保存該模型。
在最右邊的Toolbox,選擇 Diagram,選擇第2個圖標,在中間的繪圖區域繪圖,有幾個實體,就點幾下鼠標(在本例中有三個實體,因此繪制三個),然后將鼠標恢復成箭頭狀態。
①雙擊第一個實體圖標(剛剛創建的藍色的圖像),根據Student表(s_id,s_name,,)進行繪制;
②進入General界面,更改Name,本例中更改為:Student;
③點擊,添加屬性,在Name處填寫字段名,在Data Types處選擇數據類型(兩個圖標都是修改數據類型的選項),如果該字段為主鍵,則勾選中間列(Primary );
④點擊,在Name處添加主屬性,點擊下方的“應用”,再點擊確定。
其余的兩個實體圖標也按照上面的方法進行設置,設置結果如下所示:
為了使實體圖看起來更美觀,為實體圖設置字體等。鼠標右擊Student實體圖,選擇選擇Format,然后點擊Font選項卡,在這里可以修改字體,最后點擊“應用”,再點擊“確定”即可,Teacher和Course實體圖也是同樣操作。
3 建立實體之間的聯系
①點擊Toolbox下的 Diagram下的第3個小圖標();
②將鼠標按住從Student框內拉到Course框內,再松開鼠標,然后將鼠標切換回去箭頭,Teacher和Course也相同。
雙擊部分,會彈出關系窗口,在General選項卡中將Name改名,學生和課程之間的關系是成績,因此將Name修改為Course。然后點擊選項卡,在Student to Course部分選擇1:n,在Course to Student部分選擇1:n,點擊最下面的應用,再點擊確定。
雙擊,在General選項卡中將Name改名,老師和課程之間的關系是上課,因此將Name修改為Teach。然后點擊選項卡,在Teacher to Course部分選擇1:n,在Course to Teacher部分選擇1:n,點擊最下面的應用,再點擊確定。得到下面的效果:
4 檢查CDM
點擊最上方菜單欄的Tools選項,選擇Check Model,打開檢查模型的界面,根據自己的需求來選擇檢查的項目,在本例中選擇全部檢查,點擊確定后,會打開Result List窗口,如果該窗口下什么都沒有顯示,代表模型并沒有檢查出錯誤,如果顯示了信息,代表檢查到了錯誤。
5 將CDM轉換成PDM
點擊最上方菜單欄的Tools選項,選擇 Data Model,則會彈出以下窗口,在DBMS一欄中選擇自己使用的數據庫,本例中使用的數據庫是MySQL,因此選擇MySQL 5.0,該版本可以兼容MySQL 8.0版本數據庫,然后點擊應用,點擊確定。
這時會打開以下頁面,在這個頁面中,
代表了主鍵代表了外鍵。
這時界面上會顯示兩個CDM,會產生沖突,所以需要將該頁面的CDM改名為PDM。
這時需要再次將PDM保存,點擊保存的按鈕,選擇合適的文件夾下進行保存。
保存之后,需要對Score表進行編輯。雙擊Score表,打開表格屬性的對話框,在Columns選項卡中再增加一列成績s_score。點擊應用,點擊確定。
修改之后,在頁面上顯示效果如下:
6 由PDM生成sql文件
切換到PDM頁面,選擇菜單欄中的(注:在CDM頁面沒有選項),點擊 。
在彈出的對話框中,先修改sql文件存放的路徑,然后修改sql文件的名字,點擊應用,點擊確定。
緊接著彈出以下窗口,點擊Edit,可以查看生成的sql文件。生成了sql文件之后,就可以從數據庫中將這個sql文件導入了。
生成的sql文件如下:
/*==============================================================*/
/* DBMS name: MySQL 5.0 */
/* Created on: 2022/1/26 18:15:25 */
/*==============================================================*/
drop table if exists Course;
drop table if exists Score;
drop table if exists Student;
drop table if exists Teach;
drop table if exists Teacher;
/*==============================================================*/
/* Table: Course */
/*==============================================================*/
create table Course
(
c_id varchar(10) not null,
c_name varchar(100),
primary key (c_id)
);
/*==============================================================*/
/* Table: Score */
/*==============================================================*/
create table Score
(
s_id varchar(20) not null,
c_id varchar(10) not null,

s_score decimal(5,2),
primary key (s_id, c_id)
);
/*==============================================================*/
/* Table: Student */
/*==============================================================*/
create table Student
(
s_id varchar(20) not null,
s_name varchar(50),
s_gender varchar(2),
s_birthday date,
primary key (s_id)
);
/*==============================================================*/
/* Table: Teach */
/*==============================================================*/
create table Teach
(
t_id varchar(20) not null,
c_id varchar(10) not null,
primary key (t_id, c_id)
);
/*==============================================================*/
/* Table: Teacher */
/*==============================================================*/
create table Teacher
(
t_id varchar(20) not null,
t_name varchar(50),
primary key (t_id)
);
alter table Score add constraint FK_Score foreign key (s_id)
references Student (s_id) on delete restrict on update restrict;
alter table Score add constraint FK_Score2 foreign key (c_id)
references Course (c_id) on delete restrict on update restrict;
alter table Teach add constraint FK_Teach foreign key (t_id)
references Teacher (t_id) on delete restrict on update restrict;
alter table Teach add constraint FK_Teach2 foreign key (c_id)
references Course (c_id) on delete restrict on update restrict;
*請認真填寫需求信息,我們會在24小時內與您取得聯系。