如何为给定的多对多相关类制作表

  • 本文关键字: sql database sqlite
  • 更新时间 :
  • 英文 :


我有一个三个类的场景。我计划为它创建数据库。它们之间的关系是:

  • 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_ItemItem_D代金券,对于一对一的关系,需要表凭证中的字段cust_id

2。您需要在基础表客户项目凭证中插入或更新数据。然后,您需要在表Customer_ItemItems_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_iddvoucher链接到costumer,并将表dvoucher_itemcustomer_item链接到多对多链接。

相关内容

  • 没有找到相关文章

最新更新