Mysql 我是否需要为SQL中的布尔列提供一个引用表?

Mysql 我是否需要为SQL中的布尔列提供一个引用表?,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,如果我创建了一个关于一个用户的表,该用户的tinyint列具有布尔状态,例如is_vegan,我是否需要提供一个参考表来解释这些值,或者它已经是自解释的了?如果您使用的是实际的布尔值,将数据类型设置为位是一个很好的方法来执行此操作,然后,您可以通过极其描述性的命名使字段具有相当的指导意义。例如,如果表格名为website_user,字段名为confirms_current_vegan,则您可能会将其解释为我的网站用户在某个日期确认他们确实是素食主义者。但是,当字段不是描述性字段时,应该注意如何解

如果我创建了一个关于一个用户的表,该用户的tinyint列具有布尔状态,例如is_vegan,我是否需要提供一个参考表来解释这些值,或者它已经是自解释的了?

如果您使用的是实际的布尔值,将数据类型设置为位是一个很好的方法来执行此操作,然后,您可以通过极其描述性的命名使字段具有相当的指导意义。例如,如果表格名为website_user,字段名为confirms_current_vegan,则您可能会将其解释为我的网站用户在某个日期确认他们确实是素食主义者。但是,当字段不是描述性字段时,应该注意如何解释布尔表中的假值。如果是假的,那是不是意味着他们吃肉?或者这只是您字段的默认值

这并不意味着你不应该使用布尔值,只是你应该考虑两种状态可能代表的各种情况


在数据库中使用描述性命名可以走很长一段路,但总是会达到这样一个点:您希望以数据库不足以支持的方式记录某些内容。我建议使用格式化的数据字典,而不是试图将所有描述存储在数据库中,因为这会使数据模型变得混乱,并使数据的用途在我看来变得不那么清楚。

TINYINT可以容纳比0或1更多的值。如果您计划使用多个0表示false或多个1表示true,则应该。但是如果它只意味着T/F,不-人们普遍认为0是假的,1是真的。感谢你的建议,在性别的情况下,我计划使用char1,所以我可以选择m,F,还有可能是第三个选项。你的问题是关于布尔状态,而性别不是布尔状态。你对此的评论与任何事情有什么关系?Siyual提到,如果我将tinyint用于任何超过0或1的东西,我应该小心。我提供了一个这样的例子,我用char来解决这个问题。