【发布时间】:2018-06-05 11:32:57
【问题描述】:
我正在为中美洲的一家小型诊所创建一个数据库。该数据库有一个“访问”表,其中包含一系列是或否问题的数十个字段。
我知道在 SQL 中存储二进制值的最佳(最简单、最有效)方法是使用位数据类型 (x),但是我知道我也可以将 char(1) 数据类型用于“Y”或"N" 以使用更多空间为代价 (x)。
最初,我计划使用 bit 数据类型并将 1 存储为是,将 0 存储为否,但是我不知道如何在 php.ini 中将此显示为 Y 或 N。
目前,在一个单独的表中,我将 HIV 和糖尿病的值存储为 0 或 1,并且我在 SQL 选择语句中对两个单独的表执行内部联接,分别为 1 到 Y 和 0 到 N。
如果我要继续使用这种技术,那么我将需要制作数十张将 1 与 Y 以及 0 与 N 相关联的表。这似乎效率低下且非常多余。
有没有办法将一个表的多个列关联到一个关联 1 到 Y 和 0 到 N 的表?我正在使用 PHPmyadmin。
【问题讨论】:
-
是的,您可以从尽可能多的表中获得尽可能多的列,以引用同一个“查找”表;不需要特殊的语法。也就是说,您也可以只使用简单的表达式来选择此类字段,而不是彻底解决二值查找表的麻烦。
SELECT CASE someField WHEN 1 THEN 'Y' ELSE 'N' END AS someFieldYN -
另外,我可能不会打扰 BIT 类型。 TINYINT 可能不会占用明显更多的空间(如果有的话),并且可能会更容易使用。
-
echo $row['field'] ? 'Y' : 'N'… -
如果您要创建
Y和N值的输出列,请不要。很难阅读。更好的是“是”和“否”——因为它们的宽度不同。或“是”和空白,或空白和“否”。或者...