我正在开发一个QA网络应用程序,它将评估分配给以下某个类别的评估点。
由于这不太可能改变,因此不值得让它们变得动态,但最糟糕的一点是分数是这样的。
首先,我有一张'质量'表,每个点都有一列,但后来必须改变,我有点受阻。
我必须存储具有所有价值的“评估”,但未来可能会改变这些点。
我认为在质量表格中我可以制作某种具有类似内容的字符串
1=1|2=1|3=2
您拥有该给定值的点ID和标点符号的集合。
有人能指出我这样做的更好方法吗?
答案 0 :(得分:2)
正如在这里多次提到的那样,如果你想要单独访问它们,不要将超过一个值放在DB字段中。
所以我建议增加2个表:
CREATE TABLE categories (id int AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL);
INSERT INTO categories VALUES (1,"Call management"),(2,"Technical skills"),(3,"Ticket management");
和
CREATE TABLE qualities (id int AUTO_INCREMENT PRIMARY KEY, category int NOT NULL, punctuation int NOT nULL)
然后相应地存储和查询您的数据
答案 1 :(得分:1)
此表未规范化。它违反了1st Normal Form (1NF):
Evaluation
----------------------------------------
EvaluationId | List Of point=punctuation
1 | 1=1|2=1|3=2
2 | 1=5|2=6|3=7
您可以阅读有关Database Normalization basics的更多信息。 该表可以标准化为:
Evaluation
-------------
EvaluationId
1
2
Quality
---------------------------------------
EvaluationId | Point | Punctuation
1 | 1 | 1
1 | 2 | 1
1 | 3 | 2
2 | 1 | 5
2 | 2 | 6
2 | 3 | 7