【发布时间】:2021-12-03 02:18:48
【问题描述】:
我有一个数据库实体:worker,而且本质上有两种类型的worker,
- 全职
- 兼职
我确信这个类型列表不会经常增长。
| id | name | worker_type_id |
|---|---|---|
| 1 | Adam | 1 |
| 2 | Milne | 2 |
public class Worker{
private int id;
private int name;
private WorkerType type;
}
对于 Worker_Type,我有两个选择:
-
创建一个 WorkerType 的 Java ENUM
public enum WorkerType{ WorkerType(int id, String name){ this.id = id; this.name = name; } int id; String name; } -
创建一个存储 WorkerType 的引用表。
| worker_type_id | worker_type_label |
|---|---|
| 1 | Full Time |
| 2 | Part Time |
我倾向于使用“1”,但我看到很多人赞成“2”。除了明显的比较之外,我将如何在代码中查询工作表中的所有全职工作人员?
select * from worker join worker_type 在 worker.worker_type_id = worker_type.id 其中worker_type = '全职';
我对上述查询的问题是我的代码如何知道字符串“全职”?如果有人错误地更改了标签,它将完全破坏代码。我该如何处理?
【问题讨论】:
-
您可以使 worker_type_label 列 ENUM 数据类型只接受两个值 Full Time 和 Part Time。 dev.mysql.com/doc/refman/8.0/en/enum.html.
-
我认为方法 2 是最佳的。易于更改和管理
标签: java mysql sql enums reference