【发布时间】:2017-03-20 22:21:51
【问题描述】:
我创建了一个数据库,这里提供了代码。外键是在创建后使用 Alter Table 命令定义的。
在逆向工程和查看 EER 图时,一些表由多条关系线连接 - 有没有办法简单地将连接更改为描绘 1-1、1-M 关系的一条线?
EER 链接在底部。
DROP DATABASE IF EXISTS DasBus;
CREATE DATABASE DasBus;
use DasBus;
BEGIN;
CREATE TABLE Path (
PATH_NUM VARCHAR(10) PRIMARY KEY,
START_POINT VARCHAR(10) NOT NULL,
END_POINT VARCHAR(10) NOT NULL,
INTER DECIMAL(8,2) NOT NULL,
TOT_DURATION TIME NOT NULL,
PATH_DELAY_NUM VARCHAR(10) NOT NULL,
BUS_NUM VARCHAR(10) NOT NULL,
PATH_STOP_NUM VARCHAR(10) NOT NULL,
SCHED_NUM VARCHAR(10) not null
);
CREATE TABLE Path_Delay (
PATH_DELAY_NUM VARCHAR(10) PRIMARY KEY,
ISDELAYED BOOLEAN NOT NULL DEFAULT 0,
PATH_NUM VARCHAR(10) NOT NULL,
DELAY_NUM VARCHAR(10) NOT NULL
);
CREATE TABLE Delay (
DELAY_NUM VARCHAR(10) PRIMARY KEY,
DELAY_TIME INTEGER NOT NULL DEFAULT 0,
DESCRIPTION VARCHAR(100) NOT NULL,
PATH_DELAY_NUM VARCHAR(10) NOT NULL
);
CREATE TABLE Path_Stop (
PATH_STOP_NUM VARCHAR(10) PRIMARY KEY,
PATH_NUM VARCHAR(10) NOT NULL,
STOP_NUM VARCHAR(10) NOT NULL,
TIMEBETWEEN INTEGER NOT NULL
);
CREATE TABLE BusStop (
STOP_NUM VARCHAR(10) PRIMARY KEY,
STOP_NAME VARCHAR(100) NOT NULL,
ISACTIVE BOOLEAN NOT NULL DEFAULT 1,
STOPCONDITION VARCHAR(100) NOT NULL,
PATH_STOP_NUM VARCHAR(10) NOT NULL,
SCHED_NUM VARCHAR(10) not null
);
CREATE TABLE BusSchedule (
SCHED_NUM VARCHAR(10) PRIMARY KEY,
INTER TIME NOT NULL,
START_TIME TIME NOT NULL,
END_TIME TIME NOT NULL,
PATH_NUM VARCHAR(10) NOT NULL,
STOP_NUM VARCHAR(10) NOT NULL
);
CREATE TABLE Bus (
BUS_NUM VARCHAR(10) PRIMARY KEY,
BUS_CAPACITY INTEGER(4),
DRIVER_NUM VARCHAR(10) NOT NULL,
PATH_NUM VARCHAR(10) NOT NULL
);
CREATE TABLE Driver (
DRIVER_NUM VARCHAR(10) PRIMARY KEY,
DRIVER_LNAME VARCHAR(25) NOT NULL,
DRIVER_FNAME VARCHAR(25) NOT NULL,
DRIVER_STREET VARCHAR(25) NOT NULL,
DRIVER_CITY VARCHAR(25) NOT NULL,
DRIVER_ZIP CHAR(6),
DRIVER_PHONE VARCHAR(15),
BUS_NUM VARCHAR(10) NOT NULL
);
<p>ALTER TABLE PATH ADD CONSTRAINT Path1 FOREIGN KEY (BUS_NUM) REFERENCES Bus(BUS_NUM);
<p>ALTER TABLE PATH ADD CONSTRAINT Path2 FOREIGN KEY (PATH_DELAY_NUM) REFERENCES Path_Delay (PATH_DELAY_NUM);
<p>ALTER TABLE PATH ADD CONSTRAINT Path3 FOREIGN KEY (PATH_STOP_NUM) REFERENCES Path_Stop(PATH_STOP_NUM);
<p>ALTER TABLE PATH ADD CONSTRAINT Path4 FOREIGN KEY (SCHED_NUM) REFERENCES BusSchedule(SCHED_NUM);
<p>ALTER TABLE Path_Delay ADD CONSTRAINT Path_Delay1 FOREIGN KEY (PATH_NUM) REFERENCES Path(PATH_NUM);
<p>ALTER TABLE Path_Delay ADD CONSTRAINT Path_Delay2 FOREIGN KEY (DELAY_NUM) REFERENCES Delay(DELAY_NUM);
<p>ALTER TABLE DELAY ADD CONSTRAINT Delay1 FOREIGN KEY (PATH_DELAY_NUM) REFERENCES Path_Delay(PATH_DELAY_NUM);
<p>ALTER TABLE BusStop ADD CONSTRAINT BusStop1 FOREIGN KEY (PATH_STOP_NUM) REFERENCES Path_Stop(PATH_STOP_NUM);
<p>ALTER TABLE BusStop ADD CONSTRAINT BusStop2 FOREIGN KEY (SCHED_NUM) REFERENCES BusSchedule(SCHED_NUM);
<p>ALTER TABLE BUS ADD CONSTRAINT Bus1 FOREIGN KEY (DRIVER_NUM) REFERENCES Driver(DRIVER_NUM);
<p>ALTER TABLE BUS ADD CONSTRAINT Bus2 FOREIGN KEY (PATH_NUM) REFERENCES Path(PATH_NUM);
<p>ALTER TABLE DRIVER ADD CONSTRAINT Driver1 FOREIGN KEY (BUS_NUM) REFERENCES Bus(BUS_NUM);
<p>ALTER TABLE Path_Stop ADD CONSTRAINT Path_Stop1 FOREIGN KEY (PATH_NUM) REFERENCES Path(PATH_NUM);
<p>ALTER TABLE Path_Stop ADD CONSTRAINT Path_Stop2 FOREIGN KEY (STOP_NUM) REFERENCES BusStop(STOP_NUM);
<p>ALTER TABLE BusSchedule ADD CONSTRAINT BusSchedule1 FOREIGN KEY (STOP_NUM) REFERENCES BusStop (STOP_NUM);
<p>ALTER TABLE BusSchedule ADD CONSTRAINT BusSchedule2 FOREIGN KEY (PATH_NUM) REFERENCES Path (PATH_NUM);
EER 图:
【问题讨论】:
-
该图不是 ERD,而是表格图。此外,FK 约束不是 ER 关系。关系由表中的两个或多个实体键表示,例如
(BUS_NUM, DRIVER_NUM)在bus表中。 FK 约束强制执行逻辑域,它们不用于关联 ER 模型中的事物。
标签: mysql sql mysql-workbench erd