SQL脚本中表的顺序问题

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

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


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生成数据模型

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

[img]http://dl.iteye.com/upload/attachment/211632/1b39de7e-7f00-3439-a62e-9516364af550.jpg[/img]

调整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语句,生成的数据模型图就正确了,如下所示,可见关联关系已经用箭头表示出来了。

[img]http://dl.iteye.com/upload/attachment/211640/d28af651-ad48-35ed-b526-eb82e75eb2c5.jpg[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值