精华内容
下载资源
问答
  • 主键和外键

    2019-07-10 15:01:04
    有时候为了表和表之间联系方便,通常会增加主键和外键 可以这样理解,比方说有两个表,一个员工表,一个部门表 员工表中有其表的主键id,员工名name 部门表中有其表的主键depid,部门depart 那么我在员工表中可以...

    有时候为了表和表之间联系方便,通常会增加主键和外键
    可以这样理解,比方说有两个表,一个员工表,一个部门表
    员工表中有其表的主键id,员工名name
    部门表中有其表的主键depid,部门depart
    那么我在员工表中可以添加一个字段depid,使其成为部门表的外键
    其中外键只能关联主键
    那么可以设员工表中字段depid(并非主键)为其部门表的外键,关联的字段为部门表的主键depid(为主键)
    部门表
    在这里插入图片描述
    员工表
    在这里插入图片描述

    关联外键
    在这里插入图片描述
    其中设置完主外键后,则员工表的depid必须是跟部门表的主键相对应的,否则会报错。

    展开全文
  • 数据表主键外键

    2019-09-22 15:13:15
    1.主键分为:逻辑主键和业务主键 逻辑主键:没有任何含义,只是为了标识当前列在当前数据库表里唯一标识; 业务主键:业务主键就是具有真实意义,就比如身份证,银行卡号,员工编号,一旦变化,难以维护。 ...

    1.主键分为:逻辑主键和业务主键

    逻辑主键:没有任何的含义,只是为了标识当前列在当前数据库表里的唯一标识;

    业务主键:业务主键就是具有真实意义的,就比如身份证,银行卡号,员工编号,一旦变化,难以维护。

    推荐使用逻辑主键.另外标识列只能是int类型的

    主键列:就是不能插入重复数据(默认带索引),每一张数据表,都推荐有主键,设置标识。

    主键标识列:就算数据行被删除了,增长的数字也是按照原来的增长。比如,一张表里面有两行数据,删除编号为1,2的行数据据,之后,再插入新数据行,编号不会从1开始,而是从3开始的。

    2.主外键的作用,就是为了减少重复的数据。

    体现:把一个表中重复的数据提取出来,单独的放在另外一个表中,这样在原来的表中,只要存储一个指向提取出来的表的行即可。

    3.主键表和外键表的区分:

    *看哪个表的修改,影响了另外一个表。修改的表就是主键表,受影响的表就是外键表

    转载于:https://www.cnblogs.com/caofangsheng/p/4541689.html

    展开全文
  • 让本表的某一字段引用外表的值。 代码: CREATE DATABASE `my_company`; use `my_company`; -- --创建员工信息表-- CREATE TABLE `e_mployee_info`( -- --id-- `e_id` int primary key auto...

    何为主键?

    主键呢,具有唯一性,可以代表一条数据。

    何为外键?

    让本表的某一字段引用外表的值。
    代码:

    CREATE DATABASE `my_company`;
    use `my_company`;
    -- --创建员工信息表--
    CREATE TABLE `e_mployee_info`(
    	-- --id--
    	`e_id` int primary key auto_increment,
    	-- --姓名--
    	`e_name`	VARCHAR(20),
    	-- --性别--
    	`e_sex` char(2),
    	-- --生日--
    	`e_brithday` datetime,
    	-- --员工地址--
    	`e_address` VARCHAR(50) DEFAULT '地址不详',
    	-- --入职时间--
    	`e_date` datetime
    ) engine=innodb default charset=utf8;
    -- --创建员工业绩表--
    CREATE TABLE `e_score`(
    	-- --销售编号--
    	`sid` int PRIMARY KEY auto_increment,
    	-- --员工编号--
    	`e_id` int,
    	-- --销售日期--
    	`s_date` datetime,
    	-- --销售金额--
    	`s_money` DECIMAL(18, 2),
    	-- --提成比例--
    	`s_discount` DECIMAL(18,1),
    	-- --外键,指定本表某个字段 关联 外表名字 字段名--
    	FOREIGN  KEY(e_id) REFERENCES e_mployee_info(e_id)
    	-- FOREIGN KEY(本表字段名) REFERENCES 外表名(字段名)
    ) engine=innodb default charset=utf8;
    
    /*
    	# 数据类型
    	## 日期与时间
    	`DATETIME`是MySQL中用于存储日期和时间的格式,效果:`YYYY-MM-DD HH:MM:SS`
    	`DATA`用于存储日期,效果:`YYYY-MM-DD`
    	`TIME`用于存储时间,效果:`HH:MM:SS`
    	`TIMESTAMP`存时间戳,效果:`YYYYMMDDHHMMSS`,
    	## 文本
    	## 数值
    */
    
    展开全文
  • Hibernate中映射一对一关联(按主键映射和外键映射)和组件映射Hibernate提供了两种映射一对一关联关系方式:按照外键映射和按照主键映射。下面以员工账号和员工档案为例,介绍这两种映射方式,并使用这两种映射...

    Hibernate中映射一对一关联(按主键映射和外键映射)和组件映射

    Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射。

    下面以员工账号和员工档案表为例,介绍这两种映射方式,并使用这两种映射方式分别完成以下持久化操作:

    (1)保存员工档案的同时分配给员工一个账号。

    (2)加载员工档案的同时加载账号信息。

    1.按照外键映射

    c98f382a1f6b33dad0f72fb2f538ec4c.png

    步骤一:创建实体类Users1和Resume1

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 packagecn.happy.onetoone.fk;2

    3 public classResume1 {4 privateInteger resId;5 privateInteger resUserId;6 privateString resName;7 privateString resCardNo;8 privateUsers1 users1;9

    10

    11 publicInteger getResId() {12 returnresId;13 }14 public voidsetResId(Integer resId) {15 this.resId =resId;16 }17 publicInteger getResUserId() {18 returnresUserId;19 }20 public voidsetResUserId(Integer resUserId) {21 this.resUserId =resUserId;22 }23 publicString getResName() {24 returnresName;25 }26 public voidsetResName(String resName) {27 this.resName =resName;28 }29 publicString getResCardNo() {30 returnresCardNo;31 }32 public voidsetResCardNo(String resCardNo) {33 this.resCardNo =resCardNo;34 }35 publicUsers1 getUsers1() {36 returnusers1;37 }38 public voidsetUsers1(Users1 users1) {39 this.users1 =users1;40 }41

    42

    43 }

    Resume1

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 <?xml version="1.0"?>

    2 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    5

    6

    7

    8

    9

    10 STU_SID

    11

    12

    13

    14

    15

    16

    17

    18

    Resume1.hbm.xml

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 packagecn.happy.onetoone.fk;2

    3 public classUsers1 {4 privateInteger userId;5 privateString userName;6 privateString userpass;7 publicString getUserpass() {8 returnuserpass;9 }10 public voidsetUserpass(String userpass) {11 this.userpass =userpass;12 }13 privateResume1 resume1;14

    15

    16

    17 publicInteger getUserId() {18 returnuserId;19 }20 public voidsetUserId(Integer userId) {21 this.userId =userId;22 }23 publicString getUserName() {24 returnuserName;25 }26 public voidsetUserName(String userName) {27 this.userName =userName;28 }29

    30 publicResume1 getResume1() {31 returnresume1;32 }33 public voidsetResume1(Resume1 resume1) {34 this.resume1 =resume1;35 }36 }

    Users1.java

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 <?xml version="1.0"?>

    2 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    5

    6

    7

    8

    9

    10 STU_SID

    11

    12

    13

    14

    15

    16

    17

    18

    Users1.hbm.xml

    步骤二:配置文件Users1.hbm.xml和Resume1.hbm.xml

    efc223d5f8c2e08aae222112dc8fa5ff.png

    7e484b158828d7fba1888ee3851b0dc8.png

    步骤三:测试方法书写

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 packagecn.happy.onetoone.fk;2

    3 importorg.hibernate.Session;4 importorg.hibernate.Transaction;5 importorg.junit.Test;6

    7 importcn.happy.util.HibernateUtil;8

    9 public classTestone {10 /**

    11 * 一对一 按外键映射12 * **/

    13 @Test14 public voidonetoont(){15 Session session =HibernateUtil.currentSession();16 Transaction tx =session.beginTransaction();17 Resume1 re=newResume1();18 re.setResName("学院不");19 re.setResCardNo("002");20

    21 Users1 use=newUsers1();22 use.setUserName("王喜");23

    24 use.setResume1(re);25 re.setUsers1(use);26

    27 session.save(re);28 tx.commit();29 HibernateUtil.closeSession();30

    31 }32

    33

    34 @Test35 public voidselect(){36 Session session =HibernateUtil.currentSession();37 Transaction tx =session.beginTransaction();38 Users1 u =(Users1) session.get(Users1.class, 2);39 System.out.println(u.getResume1().getResName());40 tx.commit();41 HibernateUtil.closeSession();42 }43

    44

    45

    46

    47 }

    测试

    二:按照主键映射

    ae68d3f94c3a24620f94c09be4dbd518.png

    步骤一:创建实体类Users2和Resume2

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 packagecn.happy.onetoone.pk;2

    3 public classResume2 {4 privateInteger resId;5 privateInteger resUserId;6 privateString resName;7 privateString resCardNo;8 privateUsers2 users1;9

    10

    11 publicInteger getResId() {12 returnresId;13 }14 public voidsetResId(Integer resId) {15 this.resId =resId;16 }17 publicInteger getResUserId() {18 returnresUserId;19 }20 public voidsetResUserId(Integer resUserId) {21 this.resUserId =resUserId;22 }23 publicString getResName() {24 returnresName;25 }26 public voidsetResName(String resName) {27 this.resName =resName;28 }29 publicString getResCardNo() {30 returnresCardNo;31 }32 public voidsetResCardNo(String resCardNo) {33 this.resCardNo =resCardNo;34 }35 publicUsers2 getUsers1() {36 returnusers1;37 }38 public voidsetUsers1(Users2 users1) {39 this.users1 =users1;40 }41

    42

    43 }

    Resume2.java

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 <?xml version="1.0"?>

    2 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    5

    6

    7

    8

    9

    10 STU_SID

    11

    12

    13

    14

    15

    16

    17

    18

    Resume2.hbm.xml

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 packagecn.happy.onetoone.pk;2

    3 public classUsers2 {4 privateInteger userId;5 privateString userName;6 privateResume2 resume1;7

    8

    9

    10 publicInteger getUserId() {11 returnuserId;12 }13 public voidsetUserId(Integer userId) {14 this.userId =userId;15 }16 publicString getUserName() {17 returnuserName;18 }19 public voidsetUserName(String userName) {20 this.userName =userName;21 }22

    23 publicResume2 getResume1() {24 returnresume1;25 }26 public voidsetResume1(Resume2 resume1) {27 this.resume1 =resume1;28 }29 }

    Users2.java

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 <?xml version="1.0"?>

    2 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    5

    6

    7

    8

    9

    10 resume1

    11

    12

    13

    14

    15

    16

    17

    18

    Users2.hbm.xml

    步骤二:配置文件Users2.hbm.xml和Resume2.hbm.xml

    ff7ae1236f02e9a8936feaa4c61c6ab0.png

    706c4578be760f683dbffcc9df622d63.png

    步骤三:测试方法书写

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 packagecn.happy.onetoone.pk;2

    3 importorg.hibernate.Session;4 importorg.hibernate.Transaction;5 importorg.junit.Test;6

    7 importcn.happy.util.HibernateUtil;8

    9 public classTestone {10 /**

    11 * 一对一 按主键映射12 **/

    13 @Test14 public voidonetoont(){15 Session session =HibernateUtil.currentSession();16 Transaction tx =session.beginTransaction();17 Resume2 re=newResume2();18 re.setResName("学院不2");19 re.setResCardNo("2");20

    21 Users2 use=newUsers2();22 use.setUserName("王喜2");23

    24 use.setResume1(re);25 re.setUsers1(use);26

    27 session.save(re);28 tx.commit();29 HibernateUtil.closeSession();30

    31 }32

    33

    34 @Test35 public voidselect(){36 Session session =HibernateUtil.currentSession();37 Transaction tx =session.beginTransaction();38 Users2 u =(Users2) session.get(Users2.class, 1);39 System.out.println(u.getResume1().getResName());40 tx.commit();41 HibernateUtil.closeSession();42 }43

    44

    45

    46 }

    测试代码

    3.组件映射

    建立关系数据模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系。以员工信息为例,员工信息中有员工的家庭地址信息,如果把地址信息单独放在一张表中,然后建立员工信息表和地址信息表之间的外键参照关系,当每次查询员工信息时,都需建立者两个表的连接。建立表的连接是很耗时的操作,为了提高数据库运行性能,可以把这两张表的信息整合在一张员工信息表EMPINFO中

    6f26f897690600a47e89a3e5edb0556d.png

    步骤一:创建EmpHomeAddress和EmpInfo

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 packagecn.happy.zujian;2

    3 public classEmpInfo {4 privateInteger eId;5 privateString eName;6 privateEmpHomeAddress eHome;7

    8

    9 publicInteger geteId() {10 returneId;11 }12 public voidseteId(Integer eId) {13 this.eId =eId;14 }15 publicString geteName() {16 returneName;17 }18 public voidseteName(String eName) {19 this.eName =eName;20 }21 publicEmpHomeAddress geteHome() {22 returneHome;23 }24 public voidseteHome(EmpHomeAddress eHome) {25 this.eHome =eHome;26 }27 }

    EmpInfo.java

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 packagecn.happy.zujian;2

    3 public classEmpHomeAddress {4 privateString ehomestreet;5 privateString ehomecity;6 privateString ehomeprovince;7 privateString ehomezipcode;8

    9 privateEmpInfo empinfo;10 publicEmpInfo getEmpinfo() {11 returnempinfo;12 }13 public voidsetEmpinfo(EmpInfo empinfo) {14 this.empinfo =empinfo;15 }16 publicString getEhomestreet() {17 returnehomestreet;18 }19 public voidsetEhomestreet(String ehomestreet) {20 this.ehomestreet =ehomestreet;21 }22 publicString getEhomecity() {23 returnehomecity;24 }25 public voidsetEhomecity(String ehomecity) {26 this.ehomecity =ehomecity;27 }28 publicString getEhomeprovince() {29 returnehomeprovince;30 }31 public voidsetEhomeprovince(String ehomeprovince) {32 this.ehomeprovince =ehomeprovince;33 }34 publicString getEhomezipcode() {35 returnehomezipcode;36 }37 public voidsetEhomezipcode(String ehomezipcode) {38 this.ehomezipcode =ehomezipcode;39 }40

    41 }

    EmpHomeAddress

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 <?xml version="1.0"?>

    2 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"4 "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    5

    6

    7

    8

    9

    10 STU_SID

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    EmpInfo.hbm.xml

    步骤二:创建配置文件EmpInfo.hbm.xml

    ea0fb33d9b2cb418e9cb139c6124bc6c.png

    步骤三:书写测试类

    8f900a89c6347c561fdf2122f13be562.png

    961ddebeb323a10fe0623af514929fc1.png

    1 package cn.happy.zujian;2

    3 import org.hibernate.Session;4 import org.hibernate.Transaction;5 import org.junit.Test;6

    7 import cn.happy.util.HibernateUtil;8

    9 public class TestInfo {10 /**11 * 组件映射12 * */13 @Test14 public void zujian(){15 Session session = HibernateUtil.currentSession();16 Transaction tx = session.beginTransaction();17

    18 EmpInfo empinfo=new EmpInfo();19 empinfo.seteName("回青");20

    21 EmpHomeAddress address=new EmpHomeAddress();22 address.setEhomecity("北京");23 address.setEhomeprovince("北京市");24 address.setEhomestreet("成府路");25 address.setEhomezipcode("10002");26 empinfo.seteHome(address);27

    28 session.save(empinfo);29 tx.commit();30

    31 HibernateUtil.closeSession();32

    33 }34 }

    测试代码

    展开全文
  • 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来其他表建立联系用的。所以说到了外键,一定是至少涉及到两张表。 例如部门表和员工表: Id=Dept_id,而Dept_id就是员工表中的外键:因为员工表中的员工...
  • 外键约束 * 外键必须是另一表的主键的值(外键要引用主键!) * 外键可以重复 * 外键可以为空 * 一张表中可以有多个外键! 概念模型在数据库中成为表 数据库表中的多对一关系,只需要在多方使用一个独立的列来引用1...
  • 以员工部门表为例,员工表中的dept_id就是外键员工表(tbl_employee)就是从表,而主表是部门表(tbl_dept),主表的主键就是dept_id。外键约束的添加方式创建表时指定外键的语法格式constraint 外键约束...
  • 外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来其他表建立联系用的。所以说到了外键,一定是至少涉及到两张表。例如下面两张表:上面有两张表:部门表(dept)、员工表(emp)。Id=Dept_id...
  • 学生 民族 班级 学生 教师 部门 教师 工资 教师 学生 ...主键的主键和外键表中的主键必须类型相同吗 主键的主键和外键表中的外键必须类型相同吗 主键中的主键大多
  • 1.什么是外键:主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及...
  • 员工表中有一个字段dept_id 与部门表中的主键对应,员工表的这个字段就叫做外键 拥有外键的员工表 被称为从表, 与外键对应的主键所在的表叫做主表 1.2.2 多表设计上的问题 当我们在 员工表的 dept_id 里面输入不存在...
  • MySQL外键

    2016-08-28 12:23:29
    什么是外键:主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到...
  • MySQL进阶(一)主外键讲解

    万次阅读 多人点赞 2015-05-14 15:55:48
    外键:是另一表的主键,外键可以有重复的,可以是空值,用来其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表。例如下面这两张表: 上面有两张表:部门表(dept)、员工表(emp)。Id=Dept_id,...
  • 在修改删除主表的主键时,同时修改或删除从表的外键值,称为级联操作 ON UPDATE CASCADE-- 级联修改,主键发生修改时,外键也会修改 ON DELETE CASCADE – 级联删除,主键发生删除时,外键也会删除 例:有员工表和
  • 1. 建立两张测试表 员工表(emp) 部门表(dept) ...参考栏位: 关联的字段(这里是“id”, dept表的主键); 删除时:删除时候选择的动作(这里选择CASCADE)CASCADE —就是当关联的表dept删除时,emp中.
  • 外键约束

    2018-02-25 18:07:41
    外键:用于2个表的数据之间建立连接;可以是表中的一列或者多列;一个表也可以有一个或者多个外键外键外键可以为空值;若不是空值的话,必须对应另一个表中主键的值;是表中的一个字段,可以不是主键;但是必须...
  • 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表。例如...
  • 1怎么区分主表子表? 父表设置一个主键, 子表设置一个外键 两个表建立一对多关系时候,"一"那一端是父表,...一个员工属于哪个部门 员工表是子表 部门表是主表 2怎么建立主外建约束 FOREIGN KEY (P_Id)...
  • 2. 设置deptno为dept_temp的主键 alter table dept_temp add constraint PK primary key(deptno); 3. 为emp_temp设置外键约束 alter table emp_temp add constraint FK foreign key(deptno) references dept_...
  • 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表。例如...
  • 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表。例如...
  • MySQL 主外键关系

    2016-10-02 09:54:25
    外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表。例如下面这两张表: 上面有两张表:部门表(dept)、员工表(emp)。Id=De
  • mysql中主外键关系

    2017-10-01 16:52:57
    外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表。例如下面这两张表: 上面有两张表:部门表(dept)、员工表
  • mysql(一)--主外键

    2018-03-03 22:49:38
    外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表 上面图片中两个表:客户表、员工表。ID = 客户ID,客户ID即为客户表中的...
  • 其中tid是外键,与type表的id字段对应,存在外键约束。 数据库中的表之间多对一是指可以从多的一端找到一的那一端,例如部门和员工的关系是多对一关系,一个部门可以有很多个员工,多个员工从属于一个部门,从...
  • 数据库中主外键概念详细介绍

    多人点赞 2020-05-17 18:18:33
    ​ 简单而言,能够唯一的表示表中的每一行数据,这样的列属性成为表的主键,使用表主键可以保证实体的完整性,可对表内数据进行修改、删除时使用主键来操作,同时也主要用于其他表之间通过主外键关联建立表之间的...
  • MySQL主外键讲解

    2017-07-15 16:47:07
     外键:是另一表的主键外键可以有重复的, 可以是空值,用来其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表。例如下面这两张表:    上面有两张表:部门表(dept)、员工表(emp...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 247
精华内容 98
关键字:

员工表的主键和外键