我有一个三个类的场景。我计划为它创建数据库。它们之间的关系是:
- 1位客户与许多物品和许多dv代金券有关
- 1个项目与许多客户和许多dv凭证有关
- 1张dv代金券与1位客户和许多项目相关
public Customer { int cust_id; list<items> items; list<dvouchers> dvouchers; } public items { int itm_id; list<Customer> customers; list<dvouchers> dvouchers; } public dvouchers { int dv_id; Customer customer; list<items> items; }
首先,上面的类、fk_contraints和关系表的数据库表的设计可以是什么?
第二,我需要对数据库表中的两个关系表执行插入和更新操作吗?请帮忙。
1。对于多对多关系,您需要两个表Customer_Item和Item_D代金券,对于一对一的关系,需要表凭证中的字段cust_id。
2。您需要在基础表客户、项目和凭证中插入或更新数据。然后,您需要在表Customer_Item和Items_D凭单中添加或删除关系。同时填写表格D凭单中的字段cust_id。
在mysql:中生成
CREATE TABLE `Customer` (
`cust_id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`cust_id`)
)
CREATE TABLE `Dvoucher` (
`dv_id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT NULL,
`cust_id` INT(11) DEFAULT NULL,
PRIMARY KEY (`dv_id`),
KEY `cust_id` (`cust_id`),
CONSTRAINT `Dvoucher_ibfk_1` FOREIGN KEY (`cust_id`) REFERENCES `Customer` (`cust_id`)
)
CREATE TABLE `Item` (
`item_id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`item_id`)
)
CREATE TABLE `Customer_Item` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`cust_id` INT(11) DEFAULT NULL,
`item_id` INT(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `cust_id` (`cust_id`),
KEY `item_id` (`item_id`),
CONSTRAINT `Customer_Item_ibfk_1` FOREIGN KEY (`cust_id`) REFERENCES `Customer` (`cust_id`),
CONSTRAINT `Customer_Item_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `Item` (`item_id`)
)
CREATE TABLE `Item_Dvoucher` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`item_id` INT(11) DEFAULT NULL,
`dv_id` INT(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `item_id` (`item_id`),
KEY `dv_id` (`dv_id`),
CONSTRAINT `Item_Dvoucher_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `Item` (`item_id`),
CONSTRAINT `Item_Dvoucher_ibfk_2` FOREIGN KEY (`dv_id`) REFERENCES `Dvoucher` (`dv_id`)
)
在SQLite:中
CREATE TABLE customer(cust_id INTEGER PRIMARY KEY, ...);
CREATE TABLE item(itm_id INTEGER PRIMARY KEY, ...);
CREATE TABLE dvoucher(dv_id INTEGER PRIMARY KEY, cust_id REFERENCES customer(cust_id), ...);
CREATE TABLE dvoucher_item(dv_id REFERENCES dvoucher(dv_id), itm_id REFERENCES item(itm_id));
CREATE TABLE customer_item(cust_id INTEGER PRIMARY KEY, itm_id REFERENCES item(itm_id));
作为MySQL的@Andrei解决方案,使用dvoucher.cust_id
将dvoucher
链接到costumer
,并将表dvoucher_item
和customer_item
链接到多对多链接。