一个很难的数据迁移问题

Henry956595421 2014-05-03 12:29:25
某系统根据用户购买数据已经生成了同时购买同一类别下两个产品的数据,现需要使用该数据,生成同时购买同一类别下三个产品的数据,请设计并简要实现:
说明:
1、表结构如下:
create table purchasetogether (
ProductId1 varchar(50) not null,
ProductId2 varchar(50) not null,
CategoryId int(10) not null,
CustomerCount int(10) not null,
CustomerIds text not null,
primary key (ProductId1, ProductId2),
key CategoryId (CategoryId)
);
create table multipurchasetogether (
ProductId1 varchar(50) not null,
ProductId2 varchar(50) not null,
ProductId3 varchar(50) not null,
CategoryId int(10) not null,
CustomerCount int(10) not null,
CustomerIds text not null,
primary key (ProductId1, ProductId2, ProductId3),
key CategoryId (CategoryId)
);

1. ProductId1: 同时购买的第一个产品id,已有数据已经保证ProductId1 < ProductId2
ProductId2: 同时购买的第二个产品id
CategoryId: 产品类别id
CustomerCount: 同时购买ProductId1和ProductId2的用户数量
CustomerIds: 同时购买ProductId1和ProductId2的所有用户id列表,用户id间以逗号分隔
2、该表的数据量为千万或者上亿级,处理时需要按照每个产品类别(Category)进行,单个类别的数据量可能会达到百万级。设计和实现时可以只考虑处理配置的单个类别。
3、生成的数据放入multipurchasetogether表,表结构与purchasetogether类似,并且需要保证ProductId1<ProductId2<ProductId3。
4、
举个例子:
Product代表产品, u代表人。
按照题目描述,假定现在数据库已有数据如下:
product1,product2--食品--(u1,u2,u3)--3个
product1,product3--食品--u1—1个
product5,product6—食品—u1,u2,u3,u4)--4个

现在的话,就是要将:
product1,product2,product3—食品---u1
Product1product2,product5—食品---u1,u2,u3
Product1.product2,product6—食品---u1,u2,u3
Product2,product3,product6—食品---u1

。。。。
插入到表multipurchasetogether.

我想的是,他这个sql语句怎么写呢?他这个数据量这么大,插入到数据库的话,还要保证效率啊
或者用java代码的话,又怎么写呢?


请高手指点一下。。。。
为了方便测试,我已经在数据库建立了一些表,方便测试(mySql):
#delete tables;
drop table purchasetogether;
drop table purchase;
drop table user;
drop table product;
drop table justTest;

#create tables;
create table user(id varchar(20) primary key, name varchar(40),gender varchar(8) );
create table product(id varchar(20) primary key, name varchar(40), category varchar(20), price varchar(20));
create table purchase(id varchar(20) primary key, user_id varchar(20), product_id varchar(20),
foreign key(user_id) references user(id), foreign key(product_id) references product(id));
create table purchasetogether(productId1 varchar(20), productId2 varchar(20), categoryId varchar(20),
customerIds varchar(20), customerCount varchar(20), primary key(productId1, productId2),
foreign key(productId1) references product(id),foreign key(productId2) references product(id));
create table justTest(id varchar(20), name varchar(20));

#prepare values
#for user
insert into user values('u1', 'Ferdinand', 'Male');
insert into user values('u2', 'Jack', 'Male');
insert into user values('u3', 'Rose', 'Female');
insert into user values('u4', 'Alice', 'Female');

#for product
insert into product values('p1', 'computer', 'electric', '4000RMB');
insert into product values('p2', 'watch', 'electric', '1000RMB');
insert into product values('p3', 'Banana', 'fruit', '4RMB');
insert into product values('p4', 'football', 'sports', '100RMB');
insert into product values('p5', 'basketball', 'sports', '200RMB');

#for purchase
insert into purchase values('b1', 'u1', 'p1');
insert into purchase values('b2', 'u1', 'p2');
insert into purchase values('b3', 'u2', 'p1');
insert into purchase values('b4', 'u2', 'p2');
insert into purchase values('b5', 'u2', 'p3');
insert into purchase values('b6', 'u3', 'p1');
insert into purchase values('b7', 'u3', 'p2');
insert into purchase values('b8', 'u3', 'p3');
insert into purchase values('b9', 'u4', 'p4');

#for purchasetogether
insert into purchasetogether values('p1', 'p2', 'electric', 'u1,u2,u3', '3');
insert into purchasetogether values('p2', 'p3', 'no', 'u2,u3', '2');
insert into purchasetogether values('p1', 'p3', 'no', 'u2,u3', '2');

#for justTest
insert into justTest values('001', 'zs');
insert into justTest values('002', 'ls');

#description
#p1,p2--u1,u2,u3
#p2,p3--u2,u3
#p1,p3--u2,u3
#p1,p2,p3--u2,u3


...全文
165 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Henry956595421 2014-05-03
  • 打赏
  • 举报
回复
#description #p1,p2--u1,u2,u3 代表用户u1,u2,u3购买了产品p1,p2 #p2,p3--u2,u3 代表用户u2,u3购买了产品p2,p3 #p1,p3--u2,u3 现在就是要将上面的数据分析成:用户u2,u3购买了3个产品,分别是p1,p2,p3,并且插入到multipurchase数据库: #p1,p2,p3--u2,u3
内容概要:本文系统研究了开关频率大于谐振频率(fs>fr)工况下,移相混合控制LLC谐振变换器在低压增益区域的工作特性,深入分析其在变频与移相结合控制模式下的调制机理、工作模态划分及损耗分布规律。通过Simulink平台构建高保真仿真模型,对变换器在不同负载和输入条件下的电压增益、转换效率、关键器件电压电流应力等性能指标进行了全面仿真验证,重点探讨了其在低增益区间的软开关实现能力与效率优化潜力,旨在提升LLC变换器在宽范围输入输出应用中的动态响应与能源转换效率。; 适合人群:从事电力电子变换器设计、高频电源开发及相关领域的高校研究生、科研院所研究人员及企业研发工程师,要求具备扎实的电路理论基础、电力电子技术知识以及一定的Simulink仿真能力。; 使用场景及目标:①深入理解LLC谐振变换器在fs>fr条件下采用移相混合控制的内在工作机理与模态转换过程;②掌握利用Simulink搭建复杂谐振变换器精确仿真模型的方法与技巧;③分析并优化低压增益区的增益特性与损耗构成,为设计高效率、高功率密度的软开关电源提供理论依据和数据支持; 阅读建议:建议读者结合文中所述仿真模型,亲自复现仿真过程,重点观察不同控制参数(如移相比、开关频率)对电压增益曲线和关键波形的影响,并对比传统变频控制策略,深入探究混合控制在拓宽调压范围、提升轻载效率方面的优势,从而深化对现代高效谐振电源设计的理解。
内容概要:本文提出了一种基于粒子群优化算法(PSO)的配电网光伏储能双层优化配置模型,以IEEE33节点系统为标准算例,实现光伏发电单元与储能系统的协同选址与定容优化。该模型采用双层架构设计,上层以投资成本、运行经济性及网络损耗最小为目标优化设备配置方案,下层通过潮流计算评估系统在不同负荷场景下的运行性能,综合考虑电压稳定性、供电可靠性及可再生能源消纳能力,最终通过Matlab编程实现完整求解流程,为高渗透率分布式电源接入背景下的配电网规划提供了有效的技术支撑。; 适合人群:具备电力系统分析基础和Matlab编程能力的研究生、高校科研人员及从事新能源并网、智能配电网规划与优化的工程技术人员。; 使用场景及目标:①研究含高比例光伏接入的配电网规划与运行协同优化问题;②掌握双层优化建模方法与粒子群算法在复杂电力系统问题中的应用技巧;③为实际工程中分布式光伏与储能系统的科学选址与容量配置提供理论依据与仿真验证平台。; 阅读建议:建议读者结合Matlab代码深入理解双层迭代求解机制,重点关注算法收敛性分析、参数敏感性测试,并可通过更换初始种群、调整权重因子或引入其他标准测试系统(如IEEE69节点)进行对比实验,进一步验证所提模型的普适性与鲁棒性。

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧