Mysql 映射到事务的产品表

Mysql 映射到事务的产品表,mysql,database,Mysql,Database,我正在设计一个数据库,想知道:将一个事务映射到多个产品的最佳方法是什么?例如,如果客户在一次交易中购买产品x、y、z(交易id 123)。将交易链接到产品表的最佳方式是什么 我还考虑使用一种方法来存储事务表中所有选定项目(产品)的数组,但这样以后在处理时很难检索每个产品的价格 需要你的经验 谢谢以下型号应适合您的需要: DROP TABLE IF EXISTS `tTransaction`; CREATE TABLE `tTransaction` ( `transactionId`

我正在设计一个数据库,想知道:将一个事务映射到多个产品的最佳方法是什么?例如,如果客户在一次交易中购买产品x、y、z(交易id 123)。将交易链接到产品表的最佳方式是什么

我还考虑使用一种方法来存储事务表中所有选定项目(产品)的数组,但这样以后在处理时很难检索每个产品的价格

需要你的经验


谢谢

以下型号应适合您的需要:

DROP TABLE IF EXISTS `tTransaction`;
CREATE TABLE `tTransaction` (
    `transactionId`     INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `transactionAmount` NUMBER(10,2) NOT NULL,
    /* Other Data */
    PRIMARY KEY (`transactionId`)
);

DROP TABLE IF EXISTS `tProduct`;
CREATE TABLE `tProduct` (
    `productId`   INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `productName` VARCHAR(32) NOT NULL,
    /* Other Data */
    PRIMARY KEY (`productId`)
);

DROP TABLE IF EXISTS `tTransactionProductMap`;
CREATE TABLE `tTransactionProductMap` (
    `transactionId` INT UNSIGNED NOT NULL,
    `productId`     INT UNSIGNED NOT NULL,
    FOREIGN KEY (`transactionId`) REFERENCES tTransaction (`transactionId`),
    FOREIGN KEY (`productId`) REFERENCES tProduct (`productId`)
);

为什么没有product_id呢?您可以有一个事务表,每个事务有一行,然后有一个transdetail表,该事务有多行,其中product_id列可以将u连接回products