Как отобразить значения как Y или N в SQL?

0

Я создаю базу данных для небольшой клиники в Центральной Америке. В базе данных есть таблица "посещения" с десятками полей для серии вопросов "да" или "нет".

Я знаю, что лучший (самый простой и эффективный способ хранения двоичных значений в SQL) использует бит-тип данных (x), однако я знаю, что я мог бы также использовать типы данных char (1) для "Y" или "N" на компромисс использования большего пространства (x).

Первоначально я планировал использовать бит типа данных и хранить 1 для да и 0 для нет, однако я не знаю, как сделать этот дисплей как Y или N в php.

В настоящее время в отдельной таблице у меня есть значения для ВИЧ и диабета, хранящиеся как 0 или 1, и я выполняю внутреннее соединение в своем операторе выбора SQL в двух отдельных таблицах, относящихся от 1 до Y и от 0 до N.

Если бы я продолжил эту технику, мне нужно было бы сделать десятки таблиц, связанных 1 с Y и 0 до N. Это кажется неэффективным и очень избыточным.

Есть ли способ связать несколько столбцов таблицы с одной таблицей, связывающей 1 с Y и от 0 до N? Я использую PHPmyadmin.

Теги:
mariadb

2 ответа

1
Лучший ответ

С уважением, вам не нужно бороться, чтобы сохранить табличное пространство для небольшой клиники. Напишите свою программу таким образом, чтобы ее было проще всего поддерживать.

Экономия, которую вы достигнете, используя биты вместо более простых типов столбцов, составляет, вероятно, десятки тысяч байтов. (= ничего не измеримо).

Если вы используете любой вкус int (tinyint?), Вы можете перевести текст в свой запрос.

 SELECT IF(column=1,'Sí','No') column

например.

0

Я бы использовал тип данных boolean для сохранения состояния (если вы не хотите изменять, что вы можете использовать 1 и 0 тоже) и использовать php для преобразования истинного или ложного значения для отображения для истинного Y и для ложного N, когда пользователь хочет увидеть результат следующим образом:

<?php

 $stateFromDB; //Get it from db
 if($stateFromDB == true){
    echo "Y";
 }else{
    echo "N";
 }

?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню