1

我正在使用 mysql 数据库和 java。我对装饰器模式的理解是它允许非常灵活的运行时,因为您可以分配任意数量的装饰器,直到您获得所需对象的行为或表示。我之前已经成功编写了几个装饰器,现在我想将我的装饰对象的状态存储到数据库中(最好是 mysql)。例如:

假设我正在为一家咖啡店编写一个系统,而我的代表饮料成本的模型使用了一个装饰器(即,具体的对象是浓缩咖啡,它可以用牛奶、糖、鲜奶油、糖浆和其他任何放入咖啡中的东西来装饰这些天。)此外,假设我目前无法预测将来我的咖啡中可以有多少不同的成分(也许有一天人们会想要在他们的咖啡中加入果冻豆,但我还不知道)

现在我想记录每次有人买饮料,并跟踪使用的成分。设计我的数据库模式以便它可以处理出现的新成分的最佳方法是什么。我目前有两个想法,似乎都不是正确的方法:

1)将饮料编码为json字符串,然后将其转储到数据库中,假设我的数据访问对象可以处理解码。

2)尝试预测对饮料的所有可能修改并为每一个创建列,每次有人提出新的饮料添加时,我都必须更改架构。

一定有比这两种方法更好的方法。

4

1 回答 1

1

尝试为此使用 3 个表,一个用于成分,一个用于订单,以及两者之间的查找表。每次创建订单时,您都会向订单添加一行,向 orders_ingredients 添加多行

create table orders {
   order_id int AUTO_INCREMENT PRIMARY KEY, 
   order_name 
);

create table orders_ingredients {
   order_id references orders(order_id)
   ingredient_id references ingredients(ingredient_id)
);

create table ingredients {
   ingredient_id int AUTO_INCREMENT PRIMARY KEY, 
   ingredient_name varchar(255)
);
于 2013-08-16T20:49:15.363 回答