如何 ER 图 MYSQL

How to ER Diagram MYSQL

我正在尝试在 mysql 中创建简单的图书馆数据库。我有 5 个表学生,条目,书,打字本,作者。当我试图用 mysql 逆向工程制作 er 图时,我的表在 er 图上没有任何关系。但是几乎每个数据库在互联网上的呃图表上都有关系。我做错了什么以及如何解决?

CREATE TABLE student(
`stuNo` INT NOT NULL,
`stuname` VARCHAR(45) NULL,
`stusurname` VARCHAR(45) NULL,
`class` INT NULL,
`age` INT NULL,
PRIMARY KEY (`stuNo`));

 CREATE TABLE entry(
`stuNo` INT NOT NULL,
`entryno` INT NOT NULL,
`bookno` INT NOT NULL,
`borrowdate` DATE NULL,
`returndate` DATE NULL,
PRIMARY KEY (`bookno`));

 CREATE TABLE book(
`bookno` INT NOT NULL,
`bookname` VARCHAR(45) NULL,
 `authorno` INT NOT NULL,
`typeno` INT NOT NULL,
PRIMARY KEY (authorno , typeno));

 CREATE TABLE  typebook (
`typeno` INT NOT NULL,
`typename` VARCHAR(45) NULL,
PRIMARY KEY (`typeno`));

 CREATE TABLE author(
`authorno` INT NOT NULL,
`authorname` VARCHAR(45) NULL,
`autorname` VARCHAR(45) NULL,
PRIMARY KEY (`authorno`));

我不得不改变 CREATE 的顺序 TABLE

改变的是您必须插入数据的顺序。 例如

如果你想插入一本书,你首先必须插入与这本书相对应的打字本和作者等等。

CREATE TABLE student(
`stuNo` INT NOT NULL,
`stuname` VARCHAR(45) NULL,
`stusurname` VARCHAR(45) NULL,
`class` INT NULL,
`age` INT NULL,
PRIMARY KEY (`stuNo`));

 CREATE TABLE  typebook (
`typeno` INT NOT NULL,
`typename` VARCHAR(45) NULL,
PRIMARY KEY (`typeno`));

 CREATE TABLE author(
`authorno` INT NOT NULL,
`authorname` VARCHAR(45) NULL,
`autorname` VARCHAR(45) NULL,
PRIMARY KEY (`authorno`));

CREATE TABLE book(
`bookno` INT NOT NULL,
`bookname` VARCHAR(45) NULL,
 `authorno` INT NOT NULL,
`typeno` INT NOT NULL,
PRIMARY KEY (authorno , typeno),
INDEX(bookno),
FOREIGN KEY (typeno)
        REFERENCES typebook(typeno),
FOREIGN KEY (authorno)
        REFERENCES author(authorno));

 CREATE TABLE entry(
`stuNo` INT NOT NULL,
`entryno` INT NOT NULL,
`bookno` INT NOT NULL,
`borrowdate` DATE NULL,
`returndate` DATE NULL,
PRIMARY KEY (`bookno`),
FOREIGN KEY (stuNo)
        REFERENCES student(stuNo),
FOREIGN KEY (bookno)
        REFERENCES book(bookno)
        );

结果

问题是您的 table 没有任何 FOREIGN KEYS 集。 MySQL 不知道一个 table 的 authorno 列应该链接到另一个 table 的 authorno 列。所以没有生成关系链接。

要生成指向 ER 图的关系链接,您必须在 CREATE TABLE 查询中使用 FOREIGN KEY 条目来指定 table 中的哪一列引用了另一列不同 table:

CREATE TABLE author(
    `authorno` INT NOT NULL,
    `authorname` VARCHAR(45) NULL,
    `autorname` VARCHAR(45) NULL,
    PRIMARY KEY (`authorno`)
);

CREATE TABLE book(
    `bookno` INT NOT NULL,
    `bookname` VARCHAR(45) NULL,
    `authorno` INT NOT NULL,
    `typeno` INT NOT NULL,
    PRIMARY KEY (bookno),
    FOREIGN KEY (authorno) REFERENCES author(authorno)
);

随着添加的 FOREIGN KEY 条目 MySQL 现在知道 book 中的 authorno 列必须引用 authorno 列中的值 author table。生成 ER 图时,您应该获取 table 之间的线条以查看关系。