1

MySQLデータベースの質問。オブジェクト(ドメイン)のあるシステムがあります。各ドメインには独自のテーブルがあります。すべてのオブジェクトには一意の16個のvarcharIDがあります--guid

CREATE TABLE `guid` (   
   `guid` varchar(16) NOT NULL,
   `obj_type` varchar(45) NOT NULL,
   `obj_id` varchar(45) NOT NULL,
 `actived` tinyint(4) NOT NULL DEFAULT '1',
   PRIMARY KEY (`guid`) 
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `product` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(150) NOT NULL,    
    /*....*/ 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `catalog` (   
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(150) NOT NULL,
    /*....*/ 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

外部キーを介してテーブルguid(フィールド:obj_type、obj_id)とドメインテーブル(field:id)を接続したいと思います。

4

1 に答える 1

1

外部キー関係には、中央のデータ値を保持する親テーブルと、その親を指す同一の値を持つ子テーブルが含まれます。子表にFOREIGN KEY句を指定しています。親テーブルと子テーブルは両方とも InnoDB テーブルである必要があります。TEMPORARY テーブルであってはなりません。

CREATE TABLE product 
  ( 
     id   INT(11) NOT NULL auto_increment, 
     name VARCHAR(150) NOT NULL, 
     PRIMARY KEY (id), 
     FOREIGN KEY (id) REFERENCES guid (guid ) 
  ) 
engine=myisam 
DEFAULT charset=utf8; 
于 2012-05-21T09:26:59.637 に答える