0

我正在为评估表开发一个 MySQL 数据库。我希望每个 Evaluator 都拥有像 Manager、Programmer、Accountant 这样的属性。每个 Evaluator 可以有多个属性。例如,他可以同时担任经理和程序员。那么在我的数据库中形成它的最佳和最灵活的方法是什么?

我应该为每个属性添加布尔列吗?

我是否应该添加一个 INT 列并为每个数字赋予含义,例如 Manager = 1、Programmer = 2 ... Programer 和 Manager = 4 ...?

我应该使用枚举吗?

4

2 回答 2

1

你可以有:

  1. 一个表属性(id,name)
  2. 一个表评估器(id、name 等)
  3. 一个表 evaluator_attributes( evaluator_id, attribute_id)
于 2013-05-25T08:41:44.737 回答
1

这取决于您所说的高效。在搜索同时也是程序员的评估者(例如)时,高效的存储或性能方面的高效。

如果您希望能够使用索引来搜索任何给定的属性,则必须将每个属性存储在单独的列中。

使用位域(你的第二个想法)会更节省空间,但是你失去了有效搜索的能力——每次搜索都将变成表扫描。

ENUM 将无济于事,您可能指的是SET 数据类型,这是一种使用位域的方式,同时仍然能够使用标识符来引用字段的元素。这允许您在一列中存储多个值。但这也受到与手动位域相同的搜索限制。

于 2013-05-25T08:42:03.363 回答