精华内容
下载资源
问答
  • 1. 表之间的关系:一对多;一对一;多对多; 表表之间怎么建立一对一的关系呢,可以使用外键约束+唯一约束; 有两种方式: 1.利用主键,一张表的主键只能有一个,所以这张表就可以满足唯一,另一张表跟前面...

     

     

      1. 表与表之间的关系:一对多;一对一;多对多;

    表与表之间怎么建立一对一的关系呢,可以使用外键约束+唯一约束;

    有两种方式:

    1.利用主键,一张表的主键只能有一个,所以这张表就可以满足唯一,另一张表跟前面那张表的主键关联的字段设置为外键,并且该外键字段设置为唯一字段(也就是当两张表关联的两个字段之一是一张表的主键,则另一张表相应字段设置为外键+唯一约束即可);---用户-博客表(假设一个用户只能有一个博客)

    2. 外键与普通字段:普通字段加唯一约束,外键字段设置为外键 加唯一约束,也就是如果是两张表的关联字段都不是主键,则两张表的一张表关联字段设置为唯一约束,另一张表的关联字段设置为外键约束(外键必须是前一张表的主键)+唯一约束----身份证 -人员信息表;

     

    2. 一对多:  (一的表正常创建,多的表关联字段添加外键)

    2.1 场景: 人-汽车表(一个人可以拥有很多部汽车) person表就是一,汽车表就是多, 另外创建一的那张表就正常创建,设置主键就好了;而多那张表需要设置外键约束(跟前面那张表的主键约束);

    首先创建人员信息表:

    create table person(
      id varchar(10) not null PRIMARY key,  # 人员信息表的主键 其实是跟car表关联的字段
      name varchar(20) not null,
      age int not null,
      sex int not null)
    
    alter table person modify sex char(2) not null;
    
    insert into person values("P0001","西西",22,"女");
    insert into person values("P0002","东东",23,"男");
    insert into person values("P0003","楠楠",24,"女");
    
    select * from person;

     

    运行结果:

     

    设计汽车表(多:外键约束)

     

    create table car(
      cid varchar(10) not null primary key, # car表中的主键
      name varchar(20) not null default "大众" ,
      p_id varchar(10) not null,  # car表中跟person表中关联的字段,需要设置为外键约束
      constraint fk_pid foreign key(p_id) references person(id))    # 设置为外键约束(关联另一张表person的主键id)
    
    insert into car values("c0001","大众","P0001"); # 这两个车都是属于同一个人P0001
    insert into car values("c0002","奔驰","P0001"); # 这两个车都是属于同一个人P0001
    insert into car values("c0003","奥迪","P0002"); # c0002车属于P0002这个人
    insert into car values("c0004","奥迪","P0003");
    select * from car;

     

     运行结果:

    这样person表和car表就建立了一对多的关系,person表的id 是该表的主键,也是跟car这张表的关联字段,car这张表也有一个主角,就是car的id,但是car这张表的p-id就是所属人id 代表这个车属于哪个车主,需要设置为外键约束(这样car这种表的p-id  多条数据可以具有相同的p-id 表示多辆车具有相同的车主,一个人拥有多部车)

     

     2.2 场景: 班级-学生表,一个班级可以对应很多学生,就是一对多,所以class 表正常建立,student表需要对关联字段创建外键约束;

    创建班级表(一,需要设置主键,并且这个主键是两张表的关联字段)

     

    create table class(
      id varchar(10) not null primary key,  # 班级id设置为主键,其实也是两张表的关联字段
      c_name varchar(30) not null)
    
    insert into class values("C0001","python课程班级");
    insert into class values("C0002","java课程班级");
    select * from class;

     

    运行结果:

     

    创建学生表(多,需要对关联字段-就是学生表中需要记录该名学生属于哪个班级,添加外键约束)

    create table student(
      id varchar(10) not null primary key,
      name varchar(30) not null,
      age int not null default 22,
      sex char(2) not null default "女",
      c_id varchar(20) not null,   # student表中的外键,关联的是class表中的班级id(主键)所以多student表中添加外键约束即可;
      constraint fk_student_cid foreign key(c_id) references class(id)  # 对student表中的c_id设置外键约束,关联的是class表的班级id
                                                 # 需要注意 student表的外键c-id 必须跟class表的主键id数据类型一样~~
    )
    insert into student values("S0001","西西",22,"女","C0001");  # S0001 S0002属于同一个班级,student表的c-id字段可以重复(也就是多)
    insert into student values("S0002","静静",23,"女","C0001");
    insert into student values("S0003","东东",24,"男","C0002");
    insert into student values("S0004","二狗子",25,"男","C0002");
    
    select * from student;

    运行结果:


    这样两张表就建立了一对多的关系,class的id 是主键唯一,student表的关联字段是c-id 需要设置为外键 这样student表的c-id就可以多条数据具有相同的值,也就是很多个学生可以同属于一个班级(一个班级具有很多学生--一对多)

     

    3. 一对一

    表与表之间一对一的约束关系有两种创建方法:

    1. 普通字段(code)加唯一约束,关联字段(c_id)设置为外键约束加唯一约束(比如人 身份证两张表 需要表示的是一个人有一个身份证号码,但是在card表中id是主键,身份证号是普通字段,所以card表需要设置普通字段code的唯一约束,另外person表需要id就是设置为主键,但是person表需要记录身份证的信息,也就是需要给一个关联字段,关联字段又只能跟别的表的主键关联作为外键,所以person表关联字段需要设置外键+唯一约束

    2. 两张表的一其中一个是主键,另外一张表设置为外键约束和唯一约束(区别就是一是主键的那张表 不需要设置普通字段为唯一约束,因为一本来就是主键,主键本来就唯一)

     

    3.1 场景:每一个人都只拥有一个身份证;

    需要创建两张表 person人员信息表,具有id name age sex p_code (就是人员信息表都得记录每一个人所具有的身份证号的信息----这里是根据身份证card表的id来关联的,card表的id就是主键,然后code有设置为unique 所以一个id就对应一个code编号,所以在person表中查找id也能唯一的找到code) ,另一张表就是身份证信息的表 包含id code (身份证编号)   这两张表就是一对一的关系,也就是person表的c-id需要设置为外键+唯一约束,card表的code普通字段需要添加唯一约束;

     

    创建身份证信息表card表(id 是主键(另一张表person的c-id需要关联的字段),code:普通字段,需添加唯一约束):

    create table card(
      id varchar(10) not null primary key,  # card 表的主键,person表c_id的关联字段(主键和外键数据类型必须一样,其实就是一个东西,只是在两张表中都出现)
      code varchar(20) not null unique    # 需要为普通字段添加唯一约束,因为一对一指的就是card的code普通字段 还有person表的c-id 外键+唯一约束
    )
    
    insert into card values("C0001","129304903940");
    insert into card values("C0002","232392039094");
    insert into card values("C0003","403903403283");  # 三条不同的身份证信息
    select * from card;

    运行结果:

    创建身份证信息表:

    create table person_info(
      id varchar(10) not null primary key,  # person表的主键
      name varchar(20) not null,
      age int not null default 22,
      sex char(2) not null default "女",
      c_id varchar(10) not null unique, # 跟card表的主键id关联的字段,需要添加外键和唯一约束的
      constraint fk_person_cid foreign key(c_id) references card(id))
    
    insert into person_info values("P0001","西西",22,"女","C0003");   # P0001 对应的身份证信息是C0003那条数据;
    insert into person_info values("P0002","楠楠",24,"男","C0001");  
    insert into person_info values("P0003","宝宝",23,"女","C0002");  
    select * from person_info;

    运行结果:

    这样两张表person表和card表就通过person表的c_id外键约束+唯一约束 跟 card表的id 主键关联 与card表的code普通字段(添加唯一约束)建立了一对一的关系;

    3.2  场景:假设一个用户只能有一个博客:

    一张表设置主键(表的一) 另一张表外键约束+唯一约束(另一张表的一)

    (其实我觉得这两张表的建立可以跟身份证信息表建立思路是一样的,就是首先创建 博客表(普通字段添加唯一约束) 然后创建人员信息表,主键id 关联字段就是人员信息表的blog-id 设置为博客表主键id的外键,并且添加唯一约束 我觉得这样也行其实,,,,)

     

    先创建人员信息表:

    create table user(
      id varchar(10) not null primary key,
      name varchar(20) not null)
    
    insert into user values("U0001","西西");
    insert into user values("U0002","东东");
    select * from USER;

    运行结果:

    创建blog表:

    create table blog(
      id varchar(10) not null primary key,
      name varchar(20) not null, 
      user_id varchar(10) not null unique,  -- 两张表的关联字段,设置为外键(关联的是user表的主键id,通过外键user-id就可以唯一找到这个人
      constraint blog_userid foreign key(user_id) references user(id))  -- 需要为外键添加唯一约束(这样两张表就建立一对一的关系)
    insert into blog values("B0001","璇璇是小仙女呀","U0002");  # 这个博客是U0002用户的
    insert into blog values("B0002","小仙女哈哈哈哈","U0001");
    
    select * from blog;

     

    运行结果:

     

    4. 多对多:(如果是两张表之间多对多,一般需要建立三张表,两张独立的实体表,另外一张可以建立两张表关联的关系表)

    4.1 场景: 学生选课,一个学生可以选很多门课,每门课可以提供很多学生选择;

    一般我们需要创建三张表,两张实体表,就是独立的学生表和课程表,另外一个就是关系表,相当于两张多对多是体表的桥梁;

     

    首先创建实体表学生表:

    create table student_info(
      id varchar(10) not null primary key,
      name varchar(20) not null,
      age int not null,
      sex char(2) not null
    )
    
    insert into student_info values("S0001","璇璇",22,"女");
    insert into student_info values("S0002","西西",23,"女");
    insert into student_info values("S0003","东东",24,"男");
    insert into student_info values("S0004","楠楠",25,"男");
    
    
    select * from student_info;

    运行结果:

     

     创建实体表课程表:

    create table course(
      id varchar(10) not null primary key,
      name varchar(10) not null)
    
    insert into course values("C0001","python课程");
    insert into course values("C0002","java课程");
    insert into course values("C0003","c++课程");
    
    select * from course;

    运行结果:

    创建关系表(反映两张实体表多对多关系的关系表):

    create table relation_info(
      s_id varchar(10) not null,
      c_id varchar(10) not null,
      primary key(s_id,c_id),   # 将s_id 与 c_id设置为联合主键 分别指的是student_info表的学生id 以及course表的课程id
      constraint fk_relation_info_sid foreign key(s_id) references student_info(id),  # 为关系表中的两个字段(其实就是另外两张表的主键,添加外键约束)
      constraint fk_relation_info_cid foreign key(c_id) references course(id))
    
    insert into relation_info values("S0001","C0002");  # s00001选了C0002这门课
    insert into relation_info values("S0001","C0003");  
    insert into relation_info values("S0001","C0001");  
    insert into relation_info values("S0003","C0001");
    insert into relation_info values("S0003","C0002");
    insert into relation_info values("S0003","C0003");
    insert into relation_info values("S0002","C0002");
    insert into relation_info values("S0002","C0003");
    
    select * from relation_info;

    运行结果:

     

    转载于:https://www.cnblogs.com/xuanxuanlove/p/9898527.html

    展开全文
  • 1. 表之间的关系:一对多;一对一;多对多;表表之间怎么建立一对一的关系呢,可以使用外键约束+唯一约束;有两种方式:1.利用主键,一张表的主键只能有一个,所以这张表就可以满足唯一,另一张表跟前面那张表...

    1. 表与表之间的关系:一对多;一对一;多对多;

    表与表之间怎么建立一对一的关系呢,可以使用外键约束+唯一约束;

    有两种方式:

    1.利用主键,一张表的主键只能有一个,所以这张表就可以满足唯一,另一张表跟前面那张表的主键关联的字段设置为外键,并且该外键字段设置为唯一字段(也就是当两张表关联的两个字段之一是一张表的主键,则另一张表相应字段设置为外键+唯一约束即可);---用户-博客表(假设一个用户只能有一个博客)

    2. 外键与普通字段:普通字段加唯一约束,外键字段设置为外键 加唯一约束,也就是如果是两张表的关联字段都不是主键,则两张表的一张表关联字段设置为唯一约束,另一张表的关联字段设置为外键约束(外键必须是前一张表的主键)+唯一约束----身份证 -人员信息表;

    2. 一对多: (一的表正常创建,多的表关联字段添加外键)

    2.1 场景: 人-汽车表(一个人可以拥有很多部汽车) person表就是一,汽车表就是多, 另外创建一的那张表就正常创建,设置主键就好了;而多那张表需要设置外键约束(跟前面那张表的主键约束);

    首先创建人员信息表:

    create tableperson(

    idvarchar(10) not null PRIMARY key, # 人员信息表的主键 其实是跟car表关联的字段

    namevarchar(20) not null,

    ageint not null,

    sexint not null)alter table person modify sex char(2) not null;insert into person values("P0001","西西",22,"女");insert into person values("P0002","东东",23,"男");insert into person values("P0003","楠楠",24,"女");select * from person;

    运行结果:

    1133377-20181102193755508-1323642150.png

    设计汽车表(多:外键约束)

    create tablecar(

    cidvarchar(10) not null primary key, # car表中的主键

    namevarchar(20) not null default"大众" ,

    p_idvarchar(10) not null, # car表中跟person表中关联的字段,需要设置为外键约束constraint fk_pid foreign key(p_id) referencesperson(id)) # 设置为外键约束(关联另一张表person的主键id)insert into car values("c0001","大众","P0001"); # 这两个车都是属于同一个人P0001insert into car values("c0002","奔驰","P0001"); # 这两个车都是属于同一个人P0001insert into car values("c0003","奥迪","P0002"); # c0002车属于P0002这个人insert into car values("c0004","奥迪","P0003");select * from car;

    运行结果:

    1133377-20181102194746900-1453884396.png

    这样person表和car表就建立了一对多的关系,person表的id 是该表的主键,也是跟car这张表的关联字段,car这张表也有一个主角,就是car的id,但是car这张表的p-id就是所属人id 代表这个车属于哪个车主,需要设置为外键约束(这样car这种表的p-id 多条数据可以具有相同的p-id 表示多辆车具有相同的车主,一个人拥有多部车)

    2.2 场景: 班级-学生表,一个班级可以对应很多学生,就是一对多,所以class 表正常建立,student表需要对关联字段创建外键约束;

    创建班级表(一,需要设置主键,并且这个主键是两张表的关联字段)

    create tableclass(

    idvarchar(10) not null primary key, # 班级id设置为主键,其实也是两张表的关联字段

    c_namevarchar(30) not null)insert into class values("C0001","python课程班级");insert into class values("C0002","java课程班级");select * from class;

    运行结果:

    1133377-20181102195848295-480587395.png

    创建学生表(多,需要对关联字段-就是学生表中需要记录该名学生属于哪个班级,添加外键约束)

    create tablestudent(

    idvarchar(10) not null primary key,

    namevarchar(30) not null,

    ageint not null default 22,

    sexchar(2) not null default"女",

    c_idvarchar(20) not null, # student表中的外键,关联的是class表中的班级id(主键)所以多student表中添加外键约束即可;constraint fk_student_cid foreign key(c_id) referencesclass(id) # 对student表中的c_id设置外键约束,关联的是class表的班级id

    # 需要注意 student表的外键c-id 必须跟class表的主键id数据类型一样~~)insert into student values("S0001","西西",22,"女","C0001"); # S0001 S0002属于同一个班级,student表的c-id字段可以重复(也就是多)insert into student values("S0002","静静",23,"女","C0001");insert into student values("S0003","东东",24,"男","C0002");insert into student values("S0004","二狗子",25,"男","C0002");select * from student;

    运行结果:

    1133377-20181102200959127-783257080.png

    这样两张表就建立了一对多的关系,class的id 是主键唯一,student表的关联字段是c-id 需要设置为外键 这样student表的c-id就可以多条数据具有相同的值,也就是很多个学生可以同属于一个班级(一个班级具有很多学生--一对多)

    3. 一对一

    表与表之间一对一的约束关系有两种创建方法:

    1. 普通字段(code)加唯一约束,关联字段(c_id)设置为外键约束加唯一约束(比如人 身份证两张表 需要表示的是一个人有一个身份证号码,但是在card表中id是主键,身份证号是普通字段,所以card表需要设置普通字段code的唯一约束,另外person表需要id就是设置为主键,但是person表需要记录身份证的信息,也就是需要给一个关联字段,关联字段又只能跟别的表的主键关联作为外键,所以person表关联字段需要设置外键+唯一约束)

    2. 两张表的一其中一个是主键,另外一张表设置为外键约束和唯一约束(区别就是一是主键的那张表 不需要设置普通字段为唯一约束,因为一本来就是主键,主键本来就唯一)

    3.1 场景:每一个人都只拥有一个身份证;

    需要创建两张表 person人员信息表,具有id name age sex p_code (就是人员信息表都得记录每一个人所具有的身份证号的信息----这里是根据身份证card表的id来关联的,card表的id就是主键,然后code有设置为unique 所以一个id就对应一个code编号,所以在person表中查找id也能唯一的找到code) ,另一张表就是身份证信息的表 包含id code (身份证编号) 这两张表就是一对一的关系,也就是person表的c-id需要设置为外键+唯一约束,card表的code普通字段需要添加唯一约束;

    创建身份证信息表card表(id 是主键(另一张表person的c-id需要关联的字段),code:普通字段,需添加唯一约束):

    create tablecard(

    idvarchar(10) not null primary key, # card 表的主键,person表c_id的关联字段(主键和外键数据类型必须一样,其实就是一个东西,只是在两张表中都出现)

    codevarchar(20) not null unique # 需要为普通字段添加唯一约束,因为一对一指的就是card的code普通字段 还有person表的c-id 外键+唯一约束

    )insert into card values("C0001","129304903940");insert into card values("C0002","232392039094");insert into card values("C0003","403903403283"); # 三条不同的身份证信息select * from card;

    运行结果:

    1133377-20181102204051538-44258982.png

    创建身份证信息表:

    create tableperson_info(

    idvarchar(10) not null primary key, # person表的主键

    namevarchar(20) not null,

    ageint not null default 22,

    sexchar(2) not null default"女",

    c_idvarchar(10) not null unique, # 跟card表的主键id关联的字段,需要添加外键和唯一约束的constraint fk_person_cid foreign key(c_id) referencescard(id))insert into person_info values("P0001","西西",22,"女","C0003"); # P0001 对应的身份证信息是C0003那条数据;insert into person_info values("P0002","楠楠",24,"男","C0001");insert into person_info values("P0003","宝宝",23,"女","C0002");select * from person_info;

    运行结果:

    1133377-20181102204217896-143738636.png

    这样两张表person表和card表就通过person表的c_id外键约束+唯一约束 跟 card表的id 主键关联 与card表的code普通字段(添加唯一约束)建立了一对一的关系;

    3.2 场景:假设一个用户只能有一个博客:

    一张表设置主键(表的一) 另一张表外键约束+唯一约束(另一张表的一)

    (其实我觉得这两张表的建立可以跟身份证信息表建立思路是一样的,就是首先创建 博客表(普通字段添加唯一约束) 然后创建人员信息表,主键id 关联字段就是人员信息表的blog-id 设置为博客表主键id的外键,并且添加唯一约束 我觉得这样也行其实,,,,)

    先创建人员信息表:

    create table user(

    idvarchar(10) not null primary key,

    namevarchar(20) not null)insert into user values("U0001","西西");insert into user values("U0002","东东");select * from USER;

    运行结果:

    1133377-20181102205953212-1240512593.png

    创建blog表:

    create tableblog(

    idvarchar(10) not null primary key,

    namevarchar(20) not null,user_id varchar(10) not null unique, --两张表的关联字段,设置为外键(关联的是user表的主键id,通过外键user-id就可以唯一找到这个人

    constraint blog_userid foreign key(user_id) references user(id)) --需要为外键添加唯一约束(这样两张表就建立一对一的关系)

    insert into blog values("B0001","璇璇是小仙女呀","U0002"); # 这个博客是U0002用户的insert into blog values("B0002","小仙女哈哈哈哈","U0001");select * from blog;

    运行结果:

    1133377-20181102210135618-1134509353.png

    4. 多对多:(如果是两张表之间多对多,一般需要建立三张表,两张独立的实体表,另外一张可以建立两张表关联的关系表)

    4.1 场景: 学生选课,一个学生可以选很多门课,每门课可以提供很多学生选择;

    一般我们需要创建三张表,两张实体表,就是独立的学生表和课程表,另外一个就是关系表,相当于两张多对多是体表的桥梁;

    首先创建实体表学生表:

    create tablestudent_info(

    idvarchar(10) not null primary key,

    namevarchar(20) not null,

    ageint not null,

    sexchar(2) not null)insert into student_info values("S0001","璇璇",22,"女");insert into student_info values("S0002","西西",23,"女");insert into student_info values("S0003","东东",24,"男");insert into student_info values("S0004","楠楠",25,"男");select * from student_info;

    运行结果:

    1133377-20181102211832306-1401792803.png

    创建实体表课程表:

    create tablecourse(

    idvarchar(10) not null primary key,

    namevarchar(10) not null)insert into course values("C0001","python课程");insert into course values("C0002","java课程");insert into course values("C0003","c++课程");select * from course;

    运行结果:

    1133377-20181102211931623-2065816361.png

    创建关系表(反映两张实体表多对多关系的关系表):

    create tablerelation_info(

    s_idvarchar(10) not null,

    c_idvarchar(10) not null,primary key(s_id,c_id), # 将s_id 与 c_id设置为联合主键 分别指的是student_info表的学生id 以及course表的课程idconstraint fk_relation_info_sid foreign key(s_id) referencesstudent_info(id), # 为关系表中的两个字段(其实就是另外两张表的主键,添加外键约束)constraint fk_relation_info_cid foreign key(c_id) referencescourse(id))insert into relation_info values("S0001","C0002"); # s00001选了C0002这门课insert into relation_info values("S0001","C0003");insert into relation_info values("S0001","C0001");insert into relation_info values("S0003","C0001");insert into relation_info values("S0003","C0002");insert into relation_info values("S0003","C0003");insert into relation_info values("S0002","C0002");insert into relation_info values("S0002","C0003");select * from relation_info;

    运行结果:

    1133377-20181102212239636-835643217.png

    展开全文
  • 外键约束

    2010-08-10 19:55:00
    外键约束: 定义了表之间的关系.当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合dingyi8为外关键字,并设定它是和哪个表中哪些列相关联.这样,当在定义主关键字约束的表中...

    约束: 主键约束   唯一性约束   外键约束   核查约束    null约束和default约束

     

    外键约束: 定义了表之间的关系.当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合dingyi8为外关键字,并设定它是和哪个表中哪些列相关联.这样,当在定义主关键字约束的表中更新列值时,其它表中有与之相关联的外关键字约束的表中的外关键字列也将被相应地做相同的更新.外关键字约束的作用那个还体现在,当向含有外关键字的表插入数据时,如果与之相关联的表的列中没有与插入的外关键字列值相同的值时,系统会拒绝插入数据

     

    在t-sql中设置外键约束

    [constraint constraint_name] [foreign key ] references ref_table [ ( ref_column)] [ on delete { cascade | no action } ] [ on update { cascade | no action } ] [ not for replication ]

    各参数说明

    references 指定要建立关联的表的信息

    ref_table 指定要建立关联的表的名称

    ref_column 指定要建立关联的表中的相关列的名称

    on delete { cascade | no action } 指定在删除表中数据时,对关联表所作的相关操作.在子表中有数据行与父表中的对应数据行相关联的情况下,如果指定了值cascade,则在删除父表数据行时,会将子表中对应的数据行删除.如果指定的是no action,则sql server会产生一个错误,并将父表中的删除操作回滚.no action是缺省值

     

    转载于:https://www.cnblogs.com/yanmei-yaomy/archive/2010/08/10/3024821.html

    展开全文
  • 所谓的一对一或者是一对多就是产生不同的表在一个表中添加相应的外键对另一个表的主键进行参照 下面有个groupuser之间的映射关系 package gup; import javax.persistence.Entity; import javax.persistence....

    所谓的一对一或者是一对多就是产生不同的表在一个表中添加相应的外键对另一个表的主键进行参照

    下面有个group与user之间的映射关系

    package gup;
    
    
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;
    @Entity
    @Table(name="t_group")
    public class Group {
    
    	private int id;
    	private String Groupname;
    	
    	@Id
    	@GeneratedValue
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getGroupname() {
    		return Groupname;
    	}
    	public void setGroupname(String groupname) {
    		Groupname = groupname;
    	}
    
    	
    }
    
    
    
    package use;
    
    import gup.Group;
    
    import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;
    
    
    
    @Entity
    @Table(name="t_user")
    public class User {
    
    	
    	private int id;
    	
    	private String username;
    	private Group group;
    	@Id
    	@GeneratedValue
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getUsername() {
    		return username;
    	}
    	public void setUsername(String username) {
    		this.username = username;
    	}
    	@ManyToOne(cascade={CascadeType.ALL})
    	@JoinColumn(name="group_id")
    	public Group getGroup() {
    		return group;
    	}
    	public void setGroup(Group group) {
    		this.group = group;
    	}
    	
    }
    
    joincolumn中加入的name就是外键字段,如果不写的话会自动生成相应类的下划线id


    展开全文
  • SQL编程:外键约束

    2020-11-29 20:50:20
    外键(foreign key) 一个表中的foreign key指向另一个表中的unique key(唯一约束的键) ...主表删除某条记录时,从表中之对应的记录也必须有相应的改变。一个表可以有一个或者多个外键外键可以为空值,若不为
  • 触发器解决外键约束问题

    千次阅读 热门讨论 2016-05-29 21:41:23
    触发器是表事件有关的特殊存储过程。... 在牛腩发布系统中,三个表(新闻类别、新闻、评论)之间的关系是一对多的关系,每个新闻类别可以有多条新闻,每条新闻可以有多条评论,主键相应的id号,关系图如下:
  • 之间有一对一 一对多 多对一的关系 相应的实体也该有这样的对应关系;     1.一对一单向外键关系   需要关联的表的对应属性 @OneToOne 一张表外键关联另一张表   @OneToOne @JoinColumn 可以自定义关联...
  • 多表关系

    2018-10-29 17:28:04
    1.多表之间的关系: 一对一:外键+主键主键主键匹配(一对一关系的表会直接安排成一张表) 一对多,多对一:主键+外键 多对多:通过中间表连接两张或多张表直接的联系 2.MySQL的数据表的类型: MyISAM、InnoDB...
  • 根据pojo类创建相应的xxxMapper.xml文件,完成持久化类数据表的映射,以及数据表之间的关系映射,并根据dao层方法定义持久化类的操作; 创建mybatis-config.xml文件,完成连接池创建、数据库的连接; ...
  • 1.3 实体之间的关系 20 1.3.1 二元关系 21 1.3.2 非二元关系 24 1.4 数据访问语言(SQL) 24 1.5 理解依赖性 25 1.5.1 函数依赖性 26 1.5.2 判定 26 1.6 总结 27 第2章 数据建模语言 28 2.1 数据建模介绍 ...
  • 数据库表之间的关系 一对多关系 多对多关系 一对一关系 唯一外键对应: 假设是一对多的关系,在多的一方创建外键指向一的主键,将外键设置为unique 主键对应 : 让某个表的主键作为另外一个表的主键 ...
  • hibernate 关联关系

    2015-10-27 22:10:37
    中间表一般包含两个表的主键值,该表用于存储两表之间的关系。 由于被拆成了两个一对多,中间表是多方,它是使用外键关联的,是用于指定外键的,用于从中间表取出相应的数据。 中间表每一行数据只包含了两个关系表...
  • 触发器建立

    2016-12-31 11:33:00
    触发器是表事件有关的特殊存储过程。... 在牛腩发布系统中,三个表(新闻类别、新闻、评论)之间的关系是一对多的关系,每个新闻类别可以有多条新闻,每条新闻可以有多条评论,主键相应的id号,关系图如下:
  • Hibernate映射关系-多对多

    千次阅读 热门讨论 2014-11-26 20:32:39
    中间表一般包含两个表的主键值,该表用于存储两表之间的关系。由于被拆成了两个一对多,中间表是多方,它是使用外键关联的,是用于指定外键的,用于从中间表取出相应的数据。中间表每一行数据只包含了两个关系表...
  • linux架构-----MYSQL基础

    2020-01-06 17:24:43
    关系数据库是由数据表之间的关联组成的 数据表通常是由行和列组成的二维表,每一个数据表分别说明数据库中某一特定的方面或部分的对象及属性 数据表中的行通长叫作记录或者元组。他代表众多具有相同属性的对象中的...
  • Kylin Cube构建优化

    2020-12-06 12:21:00
    Kylin会在底层记录维度表主键维度表其他维度之间的映射关系,以便在查询时能够动态地将维度表的主键“翻译”成这些非主键维度,并进行实时聚合。 将维度表上的非主键排除,在使用时用维度表主键来代替(其实是...
  • 除本书外,他撰写SQL Server 2000 Fast Answers for DBAs and Developers(即本书前身)是Amazon五星著作,人合写Pro SQL Server 2005也广受好评。他博客地址是http://joesack.com/WordPress/。 目录 封面 ...
  • E-R 图

    千次阅读 多人点赞 2017-11-02 14:21:40
    E-R 图简介E-R图可以认为是关系模型的雏形,每个实体是一张表,实体实体之间的关系可以合并到其中一个实体中,也可以是另外一张表,关系表和相关的实体表是通过主键外键来联系的。E-R图3个要素:实体,属性,...
  • 简单介绍E-R图

    千次阅读 2012-08-14 11:34:28
    在机房收费系统中几乎没有涉及到主键外键,所以先建表,但是再画E-R图时就犯难,这样画用户和上机卡会有多种联系,而E-R图中实体实体之间只存在一种联系,所以就把用户分开了,分为三种角色来画,通过复习实体...
  • E-R图(复习)

    千次阅读 2012-01-30 16:59:06
    在机房收费系统中几乎没有涉及到主键外键,所以先建表,但是再画E-R图时就犯难,这样画用户和上机卡会有多种联系,而E-R图中实体实体之间只存在一种联系,所以就把用户分开了,分为三种角色来画,通过复习实体...
  • 6.3.4 建立表之间的关系 163 6.3.5 创建索引 166 6.3.6 创建约束 167 6.3.7 设置数据表所在文件组 169 6.4 用T-SQL语言创建表 170 6.4.1 基本语法 170 6.4.2 参数说明 170 6.4.3 创建新表 175 6.4.4 ...
  • 顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。 链式存储结构就是在每个结点中至少包含一个指针域,用指针来体现数据...
  • 8.12.2 帖子之间的层次关系 166 8.13 示例数据库exceptions(用于特殊情况的测试) 167 8.13.1 数据表testall 167 8.13.2 数据表text_text 168 8.13.3 数据表test_blob 168 8.13.4 数据表test_date 168 ...
  • 1.2.7 请分析 MaxCompute 产品分布式技术的关系、当前大数据计算平台类产品的市场现状和发展趋势 1.2.8 对大数据平台中的元数据管理是怎么理解的,元数据收集管理体系是怎么样的,会对大数据应用有什么样的影响 ...
  • 2009达内SQL学习笔记

    2010-02-10 19:46:58
    NOT IN 在一起使用时,NOT 是找出条件列表不匹配行。 IN 列表里有 NULL 时不处理,不影响结果;用 NOT IN 时,有 NULL 则出错,必须排除空值再运算。 in :选择列表条件 使用IN操作符优点: 在长...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

外键与相应的主键之间的关系