1. 程式人生 > >MySQL(外來鍵變種)

MySQL(外來鍵變種)

day58

外來鍵的變種
        
        a. 使用者表和部門表
        
            使用者:        不唯一
                1 alex     1
                2 root       1
                3 egon       2
                4 laoyao   3
                
            部門:
                1 服務
                2 保安
                3 公關
            ~~~~~~~一對多    (不同使用者可以屬於同一個部門)
        b. 使用者表和部落格表
            使用者表:
                1 alex     
                2 root        
                3 egon        
                4 laoyao    
            部落格表:
                                  FK() + 唯一 

使用上節的唯一索引方式 (如身份證)
                1   /yuanchenqi/   4
                2    /alex3714/      1
                3    /asdfasdf/       3
                4    /ffffffff/              2
             ~~~~~~~~~一對一   一個部落格對應於一個使用者

 

以上形式可以只給部分使用者設定密碼,而且不會產生多餘空格,減少空間佔用。

 

多對多形式

        c. 使用者表(百合網) 相親記錄表
        
            示例1:
                使用者表
                相親表
                
            示例2:
                使用者表
                主機表
                使用者主機關係表


             ~~~~~~~~~~~~~~~~~~多對多
    
                create table userinfo2(
                    id int auto_increment primary key,
                    name char(10),
                    gender char(10),
                    email varchar(64)
                )engine=innodb default charset=utf8;
 
                create table host(
                    id int auto_increment primary key,
                    hostname char(64)
                )engine=innodb default charset=utf8;
 
 
                create table user2host(
                    id int auto_increment primary key,
                    userid int not null,
                    hostid int not null,
                    unique uq_user_host (userid,hostid),
                    CONSTRAINT fk_u2h_user FOREIGN key (userid) REFERENCES userinfo2(id),
                    CONSTRAINT fk_u2h_host FOREIGN key (hostid) REFERENCES host(id)
               )engine=innodb default charset=utf8;
  

id 1號可以管理1,2,3號主機                 

不用以上這種形式,而是下表形式,再建一個表。


       

user,和host_id可以使用聯合唯一索引。