DB表中的常量与常量的关系

时间:2015-04-24 18:15:03

标签: php mysql constants

永恒的问题。

我有一张桌子moment_of_day:

id name
1  Morning
2  Afternoon
3  Evening
4  Night

然后另一张桌子,饭菜,用moment_of_day_id引用它。

然后,在我的PHP代码中,我希望早上吃完所有的饭菜。

什么是最好的选择?我应该在我的PHP MomentsOfDay模型中重复常量来做下一个代码吗?

const MORNING = 1;

通过重复常数,我认为这可能很危险。如果将来表格更改,我还必须将其添加到MomentsOfDay模型。

您怎么看?

2 个答案:

答案 0 :(得分:0)

在你的情况下更适合枚举类型。 https://dev.mysql.com/doc/refman/5.0/en/enum.html

field_name ENUM('Morning', 'Afternoon', 'Evening', 'Night');

答案 1 :(得分:0)

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