创建一个包含PK和FK的表

时间:2016-09-05 18:58:55

标签: sql database-design

我试图解释这个表的作用,但无法看到这里发生了什么。有什么建议吗?

CREATE TABLE EMP
(
    ID INT NOT NULL PRIMARY KEY, 
    MGID INT REFERENCES EMP (ID),
    NAME VARCHAR(30) NOT NULL
);

3 个答案:

答案 0 :(得分:1)

它正在创建一个名为EMP的表来描述员工。每个员工都由代理ID号码标识,具有NAME属性,以及与MGID标识的经理的关系。

答案 1 :(得分:1)

此代码创建一个名为EMP的表,其中一个名为ID的主键列的类型为int,该引用键引用了名为{{1}的列},以及一个名为MGID的字符串列。

使用同一个表的foriegn键可以为该表中的行创建父/子关系。 例如,如果您的员工名为NAME,而他的经理是calld Raza,那么您将拥有一行经理和一行Far和该行中Raza的值将指向MGID

ID

答案 2 :(得分:0)

假设您对DBMS有一些基本的了解,我认为您坚持使用' REFERENCES'关键词。 它在ID和MGID之间创建父/子关系。 如您所知,该表适用于员工(顾名思义' Emp'),经理也是员工。 因此,在作为经理引用任何员工之前,它必须在表中作为员工输入。要执行此类验证,请参阅'参考'可以使用关键字。

例如,

                    ID  MGID  NAME
                     1  null   a
                     2   1     b
                     3   1     c

以上数据有效,但

                     ID  MGID  NAME
                     1   null   a
                     2    3     b
                     3    1     c

以上数据将违反参照完整性约束,因为任何ID为3的员工尚不存在。

希望它有所帮助。