Естественный ключ для полярности знака

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

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

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

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

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

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

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

Являются ли голоса «против» и «близкие» голосованием потому, что это основано на мнении, или потому, что полярность не следует хранить в базе данных, или по какой-то другой причине? Спасибо

user1032531 24.03.2018 14:09

Три голоса по неясным. Разве вы не видите голосов по собственному вопросу?

Andreas 24.03.2018 15:15

@Andreas Я вижу close (3), но нет, я не вижу причины. Где ты это видишь? Я предприму шаги, чтобы прояснить ситуацию. Спасибо

user1032531 24.03.2018 15:31

@Andreas Я редактировал исходный вопрос. Как вы думаете, теперь это менее непонятно?

user1032531 24.03.2018 15:40

Я не голосовал, я просто ответил на ваш вопрос, каковы были близкие голоса.

Andreas 24.03.2018 18:21

@Andreas Не имел в виду, что вы это сделали. Тем не менее, спасибо за ваш ответ.

user1032531 24.03.2018 19:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я не являюсь поклонником 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 24.03.2018 16:56

@ user1032531. . . Я связываю с битами много накладных расходов из-за того, что приходится возиться с битами. Кроме того, в базах данных биты не обязательно экономят много места и определенно не время. Они часто являются признаком микрооптимизации, сфокусированной не на тех областях.

Gordon Linoff 26.03.2018 09:19

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

Другие вопросы по теме