我正在设计一个数据库并想知道:将事务映射到多个产品的最佳方法是什么?例如,如果客户在一次交易中购买了产品 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`)
);