Php DB常量表与代码中的常量

Php DB常量表与代码中的常量,php,mysql,constants,Php,Mysql,Constants,永恒的问题 我每天都有一张桌子: id name 1 Morning 2 Afternoon 3 Evening 4 Night 然后是另一张桌子,饭桌,上面写着一天中的每一刻 然后,在我的PHP代码中,我想得到早上的所有食物 最好的选择是什么?我是否应该重复PHP MomentsOfDay模型中的常量,执行类似于下一个代码的操作 const MORNING = 1; 通过重复常量,我认为这可能是危险的。如果将来表格发生变化,我还必须将其添加到MomentsOfDay模型中 您认为呢

永恒的问题

我每天都有一张桌子:

id name
1  Morning
2  Afternoon
3  Evening
4  Night
然后是另一张桌子,饭桌,上面写着一天中的每一刻

然后,在我的PHP代码中,我想得到早上的所有食物

最好的选择是什么?我是否应该重复PHP MomentsOfDay模型中的常量,执行类似于下一个代码的操作

const MORNING = 1;
通过重复常量,我认为这可能是危险的。如果将来表格发生变化,我还必须将其添加到MomentsOfDay模型中


您认为呢?

在您的情况下,枚举类型更合适。


我认为这个问题不一定有一个确定的答案,但您应该确定找到一个解决方案,而不仅仅是相信php和mysql是一致的。我将在php中定义您想要的常量,然后使用一些关于它们的真实数据在mysql中查找记录。如果您断言
const MORNING=11
将成为数据模型的真实部分,因此应存储在mysql中。您仍然可以在mysql中创建
AUTO_INC
值,但这些值应该被视为实现工件,而不是应用程序数据。我不会认为这个问题与模型的其他部分(例如,用户、权限、时间表等)有任何不同。您正在用PHP创建一个数据模型,并使用mysql使其持久化。您将模型数据发送到mysql以持久化它,并使用相同的模型数据来检索它

如果只有一列,枚举是好的。如果您在多个表中有相同的枚举,那么维护可能会变得烦人,因为如果枚举发生更改,您必须更新多个表。在这种情况下,无论您将常量或其他常量放在何处。若您想通过常量从数据库中获取一些数据,而这些数据可能会发生变化,那个么您就做错了一些事情。如果这是默认值,您可能需要创建一个配置文件。谢谢您的回答,但我不想使用枚举。基本上出于这个原因:您可以查询常量表并在PHP中动态定义常量。但总的来说,我认为在应用程序逻辑中依赖MySQL auto_inc值是危险的。
field_name ENUM('Morning', 'Afternoon', 'Evening', 'Night');