MySQLの----マルチテーブル操作

##マルチテーブルとの間の関係

-1-オン(理解)

  *のような:人やIDカード

  *分析に:人は一人だけにのみIDカード、IDカード対応です。

図2に示すように、多くの(多くの)

  *のような:部門と従業員

  *分析:部門は唯一の部門に複数の従業員の対応のスタッフがいます。

3、多くの

  *のような:学生とコース

  *分析:多くの学生が自分のコースを選択することができ、コースはまた、多くの学生の選択することができます。

実現関係

1対多(多くの)

  *のような:部門と従業員

  *実装:マルチパーティの外部キー、主キーへのポイントの一つを確立します。

 

 

 2、多くの

  *のような:部門と従業員

  *方法:少なくとも二つのフィールドを含む第3の中間テーブルを用いて、二つの主要なテーブルのそれぞれの主キーの外部キーなどの2つのフィールドを第3のテーブル。

 

 

3、一対一

  *  のような:人やIDカード

  *実装:あなたは外部キーを追加することができますが、他の1で一意の主キーを参照します。

ケース:

/*旅游线路案例
  1、分类表和线路表是1 对 多的关系
  2、线路表和用户表是多对多,需要创建中间表。
  */
create table category(
    cid int primary key auto_increment,
    name varchar(64) not null unique
);
create table routes(
    rid int primary key auto_increment,
    name varchar(128) not null unique ,
    price double,
    cid int,
    /*constraint rou_cat_fk */foreign key (cid) references category(cid)
                   on delete cascade on update cascade
);
create table user(
    uid int primary key auto_increment,
    username varchar(32) not null unique ,
    password varchar(32) not null
);
create table favorite(
    rid int,
    date datetime,
    uid int,
    /*创建复合主键*/
    primary key (rid,uid),
    foreign key (rid) references routes(rid),
    foreign key (uid) references user(uid)
);
insert into category(cid, name) VALUES (1,'国外游'),(2,'国内游');
insert into routes(rid, name, price, cid) VALUES (1,'希腊游',10000.1,1),(2,'北京游',9992.1,2);
insert into user (uid, username, password)
values (null,'ftj','123'),(null,'lxy','456');
insert into favorite (rid, date, uid)
values (1,'2020-02-08 23:59:59',1),(2,'2020-02-08 23:59:59',2);
select * from user where uid = (select uid from favorite where rid = 1);

 

おすすめ

転載: www.cnblogs.com/21seu-ftj/p/12275381.html