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=1在php中,则1
将成为数据模型的真实部分,因此应存储在mysql中。您仍然可以在mysql中创建AUTO_INC
值,但这些值应该被视为实现工件,而不是应用程序数据。我不会认为这个问题与模型的其他部分(例如,用户、权限、时间表等)有任何不同。您正在用PHP创建一个数据模型,并使用mysql使其持久化。您将模型数据发送到mysql以持久化它,并使用相同的模型数据来检索它 如果只有一列,枚举是好的。如果您在多个表中有相同的枚举,那么维护可能会变得烦人,因为如果枚举发生更改,您必须更新多个表。在这种情况下,无论您将常量或其他常量放在何处。若您想通过常量从数据库中获取一些数据,而这些数据可能会发生变化,那个么您就做错了一些事情。如果这是默认值,您可能需要创建一个配置文件。谢谢您的回答,但我不想使用枚举。基本上出于这个原因:您可以查询常量表并在PHP中动态定义常量。但总的来说,我认为在应用程序逻辑中依赖MySQL auto_inc值是危险的。
field_name ENUM('Morning', 'Afternoon', 'Evening', 'Night');