Database design 将枚举作为文档形式镜像到数据库中是否是最佳做法?
我在代码中有一个枚举Database design 将枚举作为文档形式镜像到数据库中是否是最佳做法?,database-design,language-agnostic,Database Design,Language Agnostic,我在代码中有一个枚举 enum EventType { Run = 1, Stop = 2, } 我的数据库中有一个表 CREATE TABLE [Event] ( [Id] integer PRIMARY KEY AUTOINCREMENT, [EventType] integer NOT NULL, [Timestamp] text NOT NULL ); 如果我真的不需要,我应该吗 CREATE TABLE [EventType] (
enum EventType
{
Run = 1,
Stop = 2,
}
我的数据库中有一个表
CREATE TABLE [Event] (
[Id] integer PRIMARY KEY AUTOINCREMENT,
[EventType] integer NOT NULL,
[Timestamp] text NOT NULL
);
如果我真的不需要,我应该吗
CREATE TABLE [EventType] (
[EventTypeId] integer PRIMARY KEY AUTOINCREMENT,
[Name] text
);
INSERT INTO "EventType" VALUES(1, "Run");
INSERT INTO "EventType" VALUES(2, "Stop");
这很糟糕,因为这是代码重复。这很好,因为它是为那些访问数据库并想知道这些事件类型数字是什么意思的人准备的文档。我是否应该完全删除这些数字,改用字符串?我不会仅仅为了记录事情而创建额外的表。它增加了总体复杂性,因此从长远来看,它比让用户想知道这些数字是多少更糟糕
一、 就个人而言,我喜欢在数据库中使用字符串枚举,因为它使它能够自我记录。不过,可能会有不同的意见。除了简单的文档之外,还有一个好处,那就是如果/当您尝试从另一个系统访问数据库时,您就可以生成已知的正确枚举。什么是字符串枚举?这是数据库特有的功能吗?我正在使用SQLite…我的意思是使用存储在数据库中的字符串值,而不是像我理解的那样,您正在考虑的那样使用数字。