产品表映射到事务

时间:2012-11-20 17:55:24

标签: mysql database

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

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

需要你的经验

谢谢

1 个答案:

答案 0 :(得分:1)

以下型号的东西应该符合您的需求:

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`)
);