SQL脚本中表的顺序问题

[size=xx-small][/size]说明:用Mysql数据库建库,建表,导出sql脚本,脚本中表的顺序是根据表名的字母顺序排列的,因此这里没有考虑到表之间的关联关系。用PowerDesigner导入该sql脚本,此时生成的数据模型,可能会缺少表之间的关联。

例如,建立数据库dbtest,建表user、表consume。表user是用户的基本信息,consume记录用户的消费情况。生成sql脚本如下:
dbtest.sql

DROP TABLE IF EXISTS `comsume`;
CREATE TABLE `comsume` (
  `consume_id` bigint(20) NOT NULL auto_increment COMMENT '消费id',
  `consume_user_id` bigint(20) NOT NULL COMMENT '消费用户id,外键,关联user表',
  `uses` text COMMENT '用途',
  `use_amount` bigint(20) NOT NULL COMMENT '使用预付金额',
  `comsume_time` date default NULL COMMENT '消费时间',
  PRIMARY KEY  (`consume_id`),
  KEY `consume_user_id` (`consume_user_id`),
  CONSTRAINT `consume_user_id` FOREIGN KEY (`consume_user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `user_id` bigint(20) NOT NULL auto_increment COMMENT '用户id,系统生成',
  `nickname` varchar(45) NOT NULL COMMENT '昵称',
  `username` varchar(45) NOT NULL COMMENT '用户名',
  `sex` varchar(10) NOT NULL COMMENT '性别',
  `email` varchar(45) NOT NULL COMMENT '邮箱',
  `password` varchar(45) NOT NULL COMMENT '密码',
   `user_image` blob COMMENT '用户头像',
  PRIMARY KEY  (`user_id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


用PowerDesigner导入该sql语句,具体方法参见上篇blog---PowerDesigner导入SQL生成数据模型

此时,生成的数据模型图如下所示,可见关联关系丢失了。

SQL脚本中表的顺序问题

调整sql脚本,将user和consume的sql语句调换位置,改为如下格式:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `user_id` bigint(20) NOT NULL auto_increment COMMENT '用户id,系统生成',
  `nickname` varchar(45) NOT NULL COMMENT '昵称',
  `username` varchar(45) NOT NULL COMMENT '用户名',
  `sex` varchar(10) NOT NULL COMMENT '性别',
  `email` varchar(45) NOT NULL COMMENT '邮箱',
  `password` varchar(45) NOT NULL COMMENT '密码',
   `user_image` blob COMMENT '用户头像',
  PRIMARY KEY  (`user_id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS `comsume`;
CREATE TABLE `comsume` (
  `consume_id` bigint(20) NOT NULL auto_increment COMMENT '消费id',
  `consume_user_id` bigint(20) NOT NULL COMMENT '消费用户id,外键,关联user表',
  `uses` text COMMENT '用途',
  `use_amount` bigint(20) NOT NULL COMMENT '使用预付金额',
  `comsume_time` date default NULL COMMENT '消费时间',
  PRIMARY KEY  (`consume_id`),
  KEY `consume_user_id` (`consume_user_id`),
  CONSTRAINT `consume_user_id` FOREIGN KEY (`consume_user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



此时用PowerDesigner导入该sql语句,生成的数据模型图就正确了,如下所示,可见关联关系已经用箭头表示出来了。

SQL脚本中表的顺序问题





你可能感兴趣的:(sql,mysql,脚本,Blog)