django设计一个报价系统的数据库表结构,用户表需要包括所属单位信息,产品表需要包括产品的折扣列,包括主键,外键,1对多,多对多,直接生成sql语句,可直接插入到mysql数据库中
时间: 2023-06-26 18:06:16 浏览: 102
下面是一个简单的报价系统所需要的数据库表结构设计,包括用户表和产品表:
**用户表:**
```sql
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`phone` varchar(20) NOT NULL,
`company` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
**产品表:**
```sql
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`description` varchar(255) NOT NULL,
`price` decimal(10,2) NOT NULL,
`discount` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
在上述设计中,用户表包括了用户的基本信息,同时记录了所属单位的信息;产品表包括了产品的基本信息,以及折扣列。其中,用户表的主键为`id`,产品表的主键同样为`id`,在用户表中,`company` 为外键,对应着所属单位的信息。
如果需要建立用户表和产品表之间的多对多关系(比如,一个用户可以购买多个产品,一个产品可以被多个用户购买),可以增加一个中间表来实现,中间表的设计如下:
**用户-产品中间表:**
```sql
CREATE TABLE `user_product` (
`user_id` int(11) NOT NULL,
`product_id` int(11) NOT NULL,
PRIMARY KEY (`user_id`,`product_id`),
KEY `fk_user_product_user` (`user_id`),
KEY `fk_user_product_product` (`product_id`),
CONSTRAINT `fk_user_product_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_user_product_product` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
在中间表中,`user_id` 和 `product_id` 分别为用户表和产品表的主键,同时也是中间表的外键。需要注意的是,在中间表中,`user_id` 和 `product_id` 组成了联合主键,保证了一个用户只能购买一次同一种产品。同时,中间表中也建立了对应到用户表和产品表的外键关系。
以上 SQL 语句可以直接在 MySQL 数据库中执行,创建对应的表结构。
阅读全文