数据库表间关系

来源:互联网 发布:vb中对象的属性 编辑:程序博客网 时间:2024/05/16 15:18

1.一对一关系

Ex:身份证表与用户表

  在身份证表中添加 用户表中的主键栏位作为 身份证表中的外间和主键  这样就保证了 两表之间数据的关联和唯一性
CREATE TABLE `card` (  `card_number` int(11) DEFAULT NULL,  `card_time` datetime DEFAULT NULL,  `user_id` int(11) NOT NULL,  PRIMARY KEY (`user_id`),  CONSTRAINT `y_card` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `users` (  `user_id` int(11) NOT NULL,  `name` varchar(255) DEFAULT NULL,  PRIMARY KEY (`user_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.一对多关系

在“多”表中添加关联 “一”表主键的外键

Ex 用户表与角色表

一个用户可以有多种角色

CREATE TABLE `user` (  `user_id` int(11) NOT NULL AUTO_INCREMENT,  `user_name` varchar(255) DEFAULT NULL,  PRIMARY KEY (`user_id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
CREATE TABLE `role` (  ` role_id` int(11) NOT NULL AUTO_INCREMENT,  `role_name` varchar(255) DEFAULT NULL,  `user_id` int(11) DEFAULT NULL,  PRIMARY KEY (`    role_id`),  KEY `y_role` (`user_id`),  CONSTRAINT `y_role` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

3.多对多的关系

使用中间表,这个中间表不设置主键

0 0