MySQL 数据库中有关系约束时如何插入数据

How to insert data when we have Relationship constraints in MySQL database

我正在为我的数据库 class 关注这个 book。数据库有 6 tables。从他们中的 6 个中,我将 post 两个 tables.

/*EMPLOYEE Table */
CREATE TABLE EMPLOYEE( 
    Fname VARCHAR(15) NOT NULL,
    Minit CHAR,
    Lname VARCHAR(15) NOT NULL,
    Ssn CHAR(9) NOT NULL,
    Bdate DATE,
    Address VARCHAR(30),
    Sex CHAR,
    Salary DECIMAL(10,2),
    Super_ssn CHAR(9),
    Dno INT NOT NULL,
    PRIMARY KEY (Ssn),
    FOREIGN KEY (Super_ssn) REFERENCES EMPLOYEE(Ssn)
    FOREIGN KEY (Dno) REFERENCES DEPARTMENT(Dnumber) );

雇员table有一个递归关系来证明"an employee is a supervisor of another employee"。它还引用 DEPARTMENT table 以显示员工在部门工作。以下是部门 table.

的架构
CREATE TABLE DEPARTMENT( 
    Dname VARCHAR(15) NOT NULL,
    Dnumber INT NOT NULL,
    Mgr_ssn CHAR(9) NOT NULL,
    Mgr_start_date DATE,
    PRIMARY KEY (Dnumber),
    UNIQUE (Dname),
    FOREIGN KEY (Mgr_ssn) REFERENCES EMPLOYEE(Ssn) 
    );

DEPARTMENT table 引用员工 table 以表明员工管理部门。 当插入数据如

    insert into EMPLOYEE values
    ('John','B','Smith','123456789','1965-01-09','731 Fondren, Houston, TX',
     'M',30000,'333445555',5);

我们将无法执行上述查询,因为存在参照完整性FOREIGN KEY (Super_ssn) REFERENCES EMPLOYEE(Ssn)。如果我尝试下面的查询也一样

insert into department values ('Research',5,'333445555','1988-05-22');

上面的查询不会执行,因为 employee table 中没有数据。我的问题是我们是否应该先插入数据然后更改 table 并强制执行参照完整性约束。或者有什么办法。您的 suggestions/advice 将不胜感激。谢谢。

外键可以有空值。所以你可以输入值,外键值为 null,就像最高主管一样,他上面没有主管。

所以一般的想法是自下而上输入数据,比如在没有外键的 table 中输入值,然后在它上面输入引用 table 的值,等等......

确切的方法取决于您在示例中使用的其余 table。