172 похожих чатов

Всем привет) Есть таблица users и data Предполагается, что у каждого юзера

может быть несколько строчек из data
В таком случае же делается отдельная таблица для связки users => data?
Какой тогда primary key будет? Он же должен быть уникальным.
А тут один юзер будет иметь несколько строк с data.id

Или сделать наоборот
Primary key == data.id?

Какая практика вообще в таких случая приветствуется?
Cпасибо)

12 ответов

14 просмотров

отдельная таблица — это многие-ко-многим. в вашем случае достаточно в data добавить колонку user_id

на data_users будет композитный primary key например, если не добавлять дпоолнительных полей

Mikhail-Smolnikov Автор вопроса
Виктор Егоров
отдельная таблица — это многие-ко-многим. в вашем ...

Хорошо, а если предположим, что несколько юзеров будут иметь одну и ту же data?

Mikhail Smolnikov
Хорошо, а если предположим, что несколько юзеров б...

это дополнительное условие, или же полностью новое?

Mikhail-Smolnikov Автор вопроса
Mikhail-Smolnikov Автор вопроса
Dmitriy Sviridov
Поле data_id в таблице users

Грубо говоря каждый раз перед созданием data проверять, есть ли такое уже в таблице, и если есть, отсылать на эту строку?

Mikhail Smolnikov
Грубо говоря каждый раз перед созданием data прове...

Можно не проверять даже, достаточно внешний ключ повесить - PostgreSQL сам проверит

Mikhail Smolnikov
это который foreign key?

Да. Но, судя по тому, что вы выше написали "Первоначально заложить и такую возможность" - вам нужно всё же m2m

Mikhail-Smolnikov Автор вопроса
Dmitriy Sviridov
Да. Но, судя по тому, что вы выше написали "Первон...

т.е через отдельную реляционную таблицу?

Mikhail Smolnikov
т.е через отдельную реляционную таблицу?

Да, но даже так внешние ключи, естественно, нужны

Похожие вопросы

Обсуждают сегодня

Ребят в СИ можно реализовать ООП?
Николай
33
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
core\config\database\connections\default.php На всякий случай проверь всё же файл <?php return [ 'driver' => env('DB_TYPE', 'mysql'), //$database_type 'host' => env('D...
Andrey K
2
Всем доброго вечера. Разрабатываю 32 раз. приложение в Delphi. Столкнулся с тем, что стандартный  TFilestream  не работает с большим файлом > 2 ГБайт (после вызова функции see...
Vadim Gl
16
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
добрый день. Подскажите, есть сайт на 1.4.7 и я хочу обновиться, особо ничего не меняя. мне выбирать версию 1.4.35 или третью ветку? и можно ли обновлять "как есть", или нужно...
Digital Cat
12
народ, плиз хелп, всю голову сломал себе уже... разве может быть так, что GetProcAddress( GetModuleHandle( "kernel32.dll" ), "SetThreadDescription" ) вернёт ненулевое значение...
Iluha Companets
12
Кто кодит под Лазарем на винде, у вас аналогично VCL переопределяются CreateWnd и CreateParams для конкретных классов контролов и все заданные флаги влияют?
А Андрей
11
У меня задача: написать брокер сообщений. Очереди и потребители. Очереди поддерживают приоритеты. Очередь отдает сообщения, только обработчикам с соответствующими характеристи...
Aleksandr Filippov
2
Карта сайта