0

我已经回顾了一些问答,但我认为针对我的主题的一些特定内容会帮助我摆脱困境。

我有一个应用程序,可以根据几个不同的公式和数百种不同的材料类型计算价格。

用户 A 可以使用配方 A 和材料 A、B、C

用户 B 使用公式 A 和材料 A、B、C,+ 他们想添加其他人没有使用的材料 材料 unique_A

当用户 A 在应用程序上时,他不想看到用户 B 的独特材料。

我正在考虑为每个用户使用一个唯一的材料表,以便“更快???更有效???获取材料列表,而不是尝试设置某种关闭,仅抓取的功能用户想要从一个全局表中获取的材料。

哪种方式更好?每个用户一个表还是一个唯一表?

4

3 回答 3

2

你可以有一张所有材料的表格。

  materials = (id, name, other attributes...)

和用户表:

  myusers = (id, name, etc....)

那么你可以有一个基本上代表这两者之间的多对多关系的表:

  user_materials = (user_id, material_id)

然后,您可以通过加入这些表格来选择用户使用的特定材料。应用程序方面,这种安排比尝试为每个用户创建一个表要好。查询将变得困难。这样您也可以回答以下问题:哪些用户正在使用材料 A?

于 2013-03-07T15:58:29.267 回答
0

除非您的用户很少,每个用户都有自己稳定的不可更改的项目,否则我认为这样做没有任何意义。另外,如果您谈论的是用户和材料领域,您很可能不会遇到性能问题。也不是有几百万,对吧?

于 2013-03-07T16:00:01.473 回答
0

数据库的一种“最佳实践”是减少信息重复。实际上,几乎所有理论领域都存在这种变化。

但是,这意味着您对每个用户使用唯一表的方法不是一个好主意。它不仅会复制数据,而且随着用户数量的增加,维护这样的数据库将成为一项艰巨的任务。

我希望有一个全局材料表、一个用户表和一个用户想要哪些材料的表。

可以认为“单表方法”更好,因为它降低了数据库和应该访问数据库的代码的复杂性以及信息的重复。

于 2013-03-07T16:00:53.827 回答