Таблица «многие ко многим» объединяет две таблицы сущностей. Мне нужен дополнительный столбец в таблице «многие ко многим» для представления полярности, и он должен иметь только два значения, где одно представляет положительное, а второе — отрицательное.
Чтобы реализовать это, я планирую добавить таблицу под названием sign
который будет иметь один столбец с именем sign
(который также является первичным ключом таблицы), и таблица будет содержать только два значения, где одно представляет положительное, а другое — отрицательное.
Вышеупомянутая таблица «многие ко многим» может затем включать sign.sign
в качестве внешних ключей, и только два значения будут разрешены.
Если это плохое решение, пожалуйста, прокомментируйте, почему вы так думаете, и что может быть лучшим решением.
Если приемлемое решение, то какими должны быть эти два значения? Возможные ответы:
Я специально включил php
тег, указывающий, что я буду использовать PHP на случай, если одно решение поверх другого может упростить реализацию PHP.
Я не совсем фанат 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 может быть лучшим выбором.