Натуральный ключ для полярности знака

Таблица «многие ко многим» объединяет две таблицы сущностей. Мне нужен дополнительный столбец в таблице «многие ко многим» для представления полярности, и он должен иметь только два значения, где одно представляет положительное, а второе — отрицательное.

Чтобы реализовать это, я планирую добавить таблицу под названием sign который будет иметь один столбец с именем sign (который также является первичным ключом таблицы), и таблица будет содержать только два значения, где одно представляет положительное, а другое — отрицательное.

Вышеупомянутая таблица «многие ко многим» может затем включать sign.sign в качестве внешних ключей, и только два значения будут разрешены.

Если это плохое решение, пожалуйста, прокомментируйте, почему вы так думаете, и что может быть лучшим решением.

Если приемлемое решение, то какими должны быть эти два значения? Возможные ответы:

  • положительный и отрицательный (не буду использовать)
  • р и н (вероятно, нет)
  • 1 и 0
  • 1 и -1

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

-1

Решение

Я не совсем фанат bit, но что-то вроде этого должно делать то, что вы хотите, и быть ясно:

create table . . . (
. . .
sign_is_positive bit(1) not null,
. . .
)

Другой метод заключается в использовании check ограничение, которое поддерживают более свежие версии MariaDB. Я мог бы быть склонен сделать:

create table . . . (
. . .
sign char(1) not null,
. . .
constraint chk_t_sign check sign (sign in ('+', '-'))
)

Лично я считаю, что лучшие символы для «положительного» и «отрицательного» и + а также -,

1

Другие решения

Если кто-то хочет использовать арифметику знака в запросе, то 1 / -1 может быть лучшим выбором.

1

По вопросам рекламы [email protected]