Таблица "многие ко многим" объединяет две таблицы сущностей. Мне нужен дополнительный столбец в таблице «многие ко многим» для представления полярности, и он должен иметь только два значения, где одно представляет положительное, а второе - отрицательное.
Чтобы реализовать это, я планирую добавить таблицу с именем sign, в которой будет один столбец с именем sign (который также является первичным ключом таблицы), а таблица будет содержать только два значения, одно из которых представляет положительное, а другое - отрицательное.
Вышеупомянутая таблица «многие ко многим» может затем включать sign.sign в качестве внешних ключей, и будут разрешены только два значения.
Если это плохое решение, прокомментируйте, почему вы так считаете, и что может быть лучшим решением.
Если приемлемое решение, то какими должны быть эти два значения? Возможные ответы:
Я намеренно включил тег php, чтобы указать, что я буду использовать PHP, если одно решение может упростить реализацию PHP.
Три голоса по неясным. Разве вы не видите голосов по собственному вопросу?
@Andreas Я вижу close (3), но нет, я не вижу причины. Где ты это видишь? Я предприму шаги, чтобы прояснить ситуацию. Спасибо
@Andreas Я редактировал исходный вопрос. Как вы думаете, теперь это менее непонятно?
Я не голосовал, я просто ответил на ваш вопрос, каковы были близкие голоса.
@Andreas Не имел в виду, что вы это сделали. Тем не менее, спасибо за ваш ответ.






Я не являюсь поклонником 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 ('+', '-'))
)
Лично я считаю лучшими символами «положительный» и «отрицательный» и + и -.
Есть какие-то конкретные причины, по которым вам не нравится bit? Кроме того, вы рекомендуете check вместо моего решения с внешним ключом? Да, использование + и - определенно интуитивно понятно (не знаю, почему я не подумал о них!), И я, скорее всего, воспользуюсь ими. Спасибо
@ user1032531. . . Я связываю с битами много накладных расходов из-за того, что приходится возиться с битами. Кроме того, в базах данных биты не обязательно экономят много места и определенно не время. Они часто являются признаком микрооптимизации, сфокусированной не на тех областях.
Если кто-то хочет использовать знаковую арифметику в запросе, то 1 / -1 может быть лучшим выбором.
Являются ли голоса «против» и «близкие» голосованием потому, что это основано на мнении, или потому, что полярность не следует хранить в базе данных, или по какой-то другой причине? Спасибо