powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Стоит ли делать отдельное поле для PK?
96 сообщений из 96, показаны все 4 страниц
Стоит ли делать отдельное поле для PK?
    #39603587
Юзер 01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

При проектировании схемы базы использую суррогатный ключ (поле типа Int64).

Вопрос.
В случае, когда табличка лишь реализует связь типа "много::много", стоит ли для такой таблички создавать отдельное поле для PK, или обойтись парой полей, используемых для FK к связываемым табличкам?

Например, таблички:

USR - пользователи.
USR_GROUP - группы пользователей.

Табличка USR_IN_GROUP реализует связь многие-ко-многим, т.е., пользователь может принадлежать к нескольким группам.
Поля этой таблички- "USR_ID" и "USR_GROUP_ID" используются для FK к табличкам USR и USR_GROUP соответственно.
Вопрос: если ли смысл для добавления отдельного ID для таблички USR_IN_GROUP? Или просто наложить на пару полей USR_ID и USR_GROUP_ID ограничение первичного ключа?

Спасибо.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603598
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01В случае, когда табличка лишь реализует связь типа "много::много", стоит ли для такой таблички создавать отдельное поле для PK, или обойтись парой полей, используемых для FK к связываемым табличкам?

Нет конечно, не нужно этого делать. Нужен один единственный ключ, состоящий из двух полей — связей.


Юзер 01Или просто наложить на пару полей USR_ID и USR_GROUP_ID ограничение первичного ключа?

Да. Именно так.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603605
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01,

Если это чистая М:М связка, то нет конечно, не стоит - вы никогда не будете им пользоваться, скорее всего.

Другое дело, что если под этой таблицей развесистый кусок, и куча других таблиц ссылаются не нее, то тогда лучше сделать, чтобы не тянуть через FK два этих поля.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603620
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelЮзер 01,

Если это чистая М:М связка, то нет конечно, не стоит - вы никогда не будете им пользоваться, скорее всего.

Другое дело, что если под этой таблицей развесистый кусок, и куча других таблиц ссылаются не нее, то тогда лучше сделать, чтобы не тянуть через FK два этих поля.
+1
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603674
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelЮзер 01,

Если это чистая М:М связка, то нет конечно, не стоит - вы никогда не будете им пользоваться, скорее всего.

Другое дело, что если под этой таблицей развесистый кусок, и куча других таблиц ссылаются не нее, то тогда лучше сделать, чтобы не тянуть через FK два этих поля.

"что если под этой таблицей развесистый кусок" - а это всегда так, если это не курсовая
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603676
Юзер 01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ennor Tiegael...Другое дело, что если под этой таблицей развесистый кусок, и куча других таблиц ссылаются не нее, то тогда лучше сделать, чтобы не тянуть через FK два этих поля.

С одной стороны - накладные издержки на введение отдельного поля для PK минимальны.
С другой стороны - следует ли при проектировании учитывать то, что в данный момент не требуется?
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603819
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня репликация построена на условии, что все таблицы имеют одно поле-PK , так что у меня у всех таблиц есть
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603825
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бывают случаи когда удобно оперировать один полем. Например в проекте ведутся ссылки на документы/справочники и т.д. Обычно это одно целочисленное поле, на кот. удобно ссылаться.
И по сабжу может понадобиться иметь простую ссылку на запись в таблице (н-р для унифицированного поиска или прочих ссылок). В случае с составным ключом это неудобно или даже невозможно.
Если таблица среднебольшая то никаких накл. расходов на доп. поле нет.

по сабжу: Оба варианта имеют право на жизнь.
2 Ennor Tiegael: +500
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603871
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos"что если под этой таблицей развесистый кусок" - а это всегда так, если это не курсовая

Параметризованная связь М:М? Это уже не совсем связь, потому что таким образом можно абсолютно 100% любую таблицу, имеющую 2 и больше foreign key рассматривать, как «развесистый кусок». Основная проблема разработчиков, это уход от терминологии, навешивание и подмена своего смысла, а потом все страдают.

На примере у ТС именно М:М. Ну добавь туда ещё дату и автора создания, ещё номер ревизии и ещё 50 технических полей, чтобы это не выглядело как курсовая. Что изменится?

Создание в таблице связи отдельного поля PK приводит к необходимости создания и ведения дополнительного уникального индекса. Ради чего? Потому что кто-то там не может репликацию настроить? :)
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603872
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНа примере у ТС именно М:М.
Да, тут отдельное поле для PK не нужно.
А вот если бы это были строки заказа )
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603881
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bideveloperДа, тут отдельное поле для PK не нужно.
А вот если бы это были строки заказа )

Дык это уже тогда и не М:М :)
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603899
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01Ennor Tiegael...Другое дело, что если под этой таблицей развесистый кусок, и куча других таблиц ссылаются не нее, то тогда лучше сделать, чтобы не тянуть через FK два этих поля.

С одной стороны - накладные издержки на введение отдельного поля для PK минимальны.
С другой стороны - следует ли при проектировании учитывать то, что в данный момент не требуется?
При проектировании следует учитывать бизнес-логику: как данные запрашиваются, как изменяются.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603984
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создание в таблице связи отдельного поля PK приводит к необходимости создания и ведения дополнительного уникального индекса. Ради чего?Тебе, что жалко, бро ? :) Это мизерные накладные расходы. Никто и не заметит.
Если с т.з. разработки это поле действительно удобно/полезно, то его следует сделать.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39603988
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVСоздание в таблице связи отдельного поля PK приводит к необходимости создания и ведения дополнительного уникального индекса. Ради чего?Тебе, что жалко, бро ? :) Это мизерные накладные расходы. Никто и не заметит.
Если с т.з. разработки это поле действительно удобно/полезно, то его следует сделать.
Да, да, ещё и кластерный индекс на это поле залепить, а на другие обычный. Не жалко
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604001
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДа, да, ещё и кластерный индекс на это поле залепить, а на другие обычный. Не жалко Если в этом поле автоинкремент, то кластерный это норм.

зы: и тебе жалко ? :)
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604017
Юзер 01С одной стороны - накладные издержки на введение отдельного поля для PK минимальны.
С другой стороны - следует ли при проектировании учитывать то, что в данный момент не требуется?
Великолепное описание фактического состояния. Поскольку никаких показателей ни к одному, ни к другому варианту не имеется, ровно так и надо делать. Как? Да как хочешь. Хоть монетку подбрось. В конце эксперимента появится немножко опыта, который позволит в следующий раз без подсказок че-нить порешать.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604038
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если говорить о чистой реляционной алгебре, то для связи N:N по определению достаточно двух полей, а третье без надобности.

Другое дело, что мало какие реальные проекты имеют счастье жить в рамках чистой реляционной алгебры. И со временем, столкнувшись с практическими требованиями, многие приходят к мысли, что в каждой таблице PK должен быть одним полем, даже в таком простом случае. Некоторые причины тут уже назвали - репликация, протоколирование изменений, единообразная работа со ссылками, всякие сторонние инструменты, которые хотят PK как одно поле.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604054
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat Fisher,
+500.

зы: применяю оба подхода, есличо.
Но если в таблице много полей, то предпочитаю добавлять автонумератор. Для удобства.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604261
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

мало плавал :)
лучше любую связь рассматривать как М:М и при нужде наложить ограничение для сужения
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604319
ultrasonic7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, почему для репликации так уж необходимо, чтобы первичный ключ был только на одном поле? Если репликация основана на инструкции MERGE, то какая разница, что там у неё в JOIN CONDITION: Field1 = Value1 или Field1 = Value1 AND Field2 = Value2 ?
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604367
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ultrasonic7,

Для МОЕЙ репликации так надо.
У меня есть таблица "лог изменений" вида (id таблицы, id записи, тип изменения i/u/d), по этим данным формируется пакет изменений.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604574
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

мало плавал :)
лучше любую связь рассматривать как М:М и при нужде наложить ограничение для сужения

Звучит отвратительно даже в теории. Так то, ограничения foreign key -- злющее зло. Индексы -- надо бросать на все поля вдоль и поперёк. Всегда можно наложить ограничение в запросе, так?
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604594
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVskyANAДа, да, ещё и кластерный индекс на это поле залепить, а на другие обычный. Не жалко Если в этом поле автоинкремент, то кластерный это норм.

зы: и тебе жалко ? :)для USR_IN_GROUP да
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604654
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений,

собственный велосипед для репликации? ))
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604659
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bideveloperДа, тут отдельное поле для PK не нужно.
А вот если бы это были строки заказа )

Насчёт строк заказа, так-то FK на позицию заказа это чисто дополнительная справочная информация. Заказ должен заморозить позицию, так, чтобы после того, как позиции товаров как-то менялись, это не повлияло на заказ. Либо записи товаров должны быть неизменными, любое изменение должно приводить к созданию новой записи. В общем, тут дело такое. Многие путают, не думая о системе в целом и обо всех аспектах функционирования системы.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604790
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЗвучит отвратительно даже в теории. Так то, ограничения foreign key -- злющее зло. Индексы -- надо бросать на все поля вдоль и поперёк. Всегда можно наложить ограничение в запросе, так?

Знавал одних чуваков, так когда у них с БД что-то не пошло и решили, что все из-за того, что при выборках слишком много джойнов, так они вообще все таблицы со всеми связали по FK
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604817
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Создание в таблице связи отдельного поля PK приводит к необходимости создания и ведения дополнительного уникального индекса. Ради чего? "
Необходимость создания и ведения уникального индекса состоит в том, чтобы в таблице USR_IN_GROUP не появились, например, такие строки
...
1000, 1, 1
...
2555, 1, 1
...

С реляционной точки зрения, это важнее всего остального.

Что касается заказов, то "Каждый заказ может содержать одну или несколько позиций, каждая позиция может принадлежать одному и только одному заказу". Где здесь М:М вместе с заморозкой позиций? FK всего лишь говорит, что ЭТА позиция принадлежит ЭТОМУ заказу, а не ТОМУ. Без всяких других аспектов функционирования системы.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604829
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01,

Смысл есть, но если Вам непонятно зачем это, то не нужно.)
В целом вопрос довольно странный.
Есть принципы построения реляционных баз, отступать от них можно, если понимаешь, в чем причина так делать в конкретном случае.
Если нет, то лучше следовать им.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604834
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз. Смысла нет, так как придется построить еще один потенциальный ключ!
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604838
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lЕще раз. Смысла нет, так как придется построить еще один потенциальный ключ!и в чём сложность?
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604846
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egorych,

В бессмысленности!
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604853
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lВ бессмысленности!пахнуло религиозным фанатизмом сейчас))
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604866
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egorychпахнуло религиозным фанатизмом сейчас))

Итак, у нас два потенциальных ключа: (USR_ID, USR_GROUP_ID) и (ID). Первый решает задачу уникальности пар USR_ID и USR_GROUP_ID. Второй эту задачу не решает. Где здесь фанатизм?

От двух потенциальных ключей веет религиозным фанатизмом ключ=одно поле таблицы!
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604897
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRoshVostt,

мало плавал :)
лучше любую связь рассматривать как М:М и при нужде наложить ограничение для сужения

Звучит отвратительно даже в теории. Так то, ограничения foreign key -- злющее зло. Индексы -- надо бросать на все поля вдоль и поперёк. Всегда можно наложить ограничение в запросе, так?

Смотря в какой теории.

Связь - всегда сама по себе.
Связь может иметь и имеет Собственные свойства, присущие только связи.
Ограничение на мощность связи легко создается и снимается.
Связь можно легко убить и добавить (жизнь в динамике).
...
Связь - мощная контекстобразующая метаструктура.
...

Всякие форинкейи, индексы и т.д. к связям никакого отношения не имеют.

Вощем, это пока не твой хлеб.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604908
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lНеобходимость создания и ведения уникального индекса состоит в том, чтобы в таблице USR_IN_GROUP не появились, например, такие строки
...
1000, 1, 1
...
2555, 1, 1
...

С реляционной точки зрения, это важнее всего остального.

Эммм.. и что? PK является таким индексом и хранится в таблице, не создаёт лишних накладных расходов. Я понимаю, когда без них никак. Но зачем нагружать БД тем, без чего прекрасно можно и нужно обходиться?


Wlr-lЧто касается заказов, то "Каждый заказ может содержать одну или несколько позиций, каждая позиция может принадлежать одному и только одному заказу". Где здесь М:М вместе с заморозкой позиций? FK всего лишь говорит, что ЭТА позиция принадлежит ЭТОМУ заказу, а не ТОМУ. Без всяких других аспектов функционирования системы.

Мозги не думать. Понятно.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604909
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatЗнавал одних чуваков, так когда у них с БД что-то не пошло и решили, что все из-за того, что при выборках слишком много джойнов, так они вообще все таблицы со всеми связали по FK

Ну, я же говорил, FK -- зло
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604915
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosСвязь - всегда сама по себе.

Проблема вот в этом утверждении. Как только связь становится «сама по себе» и создаётся на какой-нибудь отдельной вкладочке «Связи» — это колхоз и выливается 100% в систему, которую с какой стороны не тронь, всё пойдёт по п.....е.

Связь это отношение, т.е. характеристика конкретного объекта. С обоих сторон она должна выражаться определением этого объекта.

А то ты так свяжешь агрегат автомобиля с категорией холодильников, и всё выглядит здорово, только у пришедшего аналитика возникают вопросы, где взять канистру с бензином, чтобы всё нахрен сжечь и посадить на кол колхозников-разработчиков.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604918
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos,

"Связь - всегда сама по себе."

Связь - это нечто между чем-то и чем-то. Если не будет этих "чем-то" и "чем-то", то что есть "связь"?

Если все хорошо в многомерном пространстве, то как это будет в одномерном? Можно объяснить на примере заказа и позиции? Особенно в динамике, когда "связь сама по себе".
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604921
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lЕсли все хорошо в многомерном пространстве, то как это будет в одномерном? Можно объяснить на примере заказа и позиции? Особенно в динамике, когда "связь сама по себе".

Да у него в его системе для «всего и вся» связи ведутся и управляются отдельно.

Тем же колхозным путём пошли и разработчики Галактики.

К слову, на 3-х часовой демонстрации возможностей Галактики, самый главный эксперт уже через час, когда показывал самые простые вещи и азы, стал теряться и путаться, по десять минут лазая по вкладочкам, коих миллион и табличкам, коих миллион, чтобы сделать простейшие с точки зрения бизнеса вещи. Адище в общем.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604923
Wlr-l,

Заседание РАН в полном разгаре:
- Связь - это нечто между чем-то и чем-то. Если не будет этих "чем-то" и "чем-то", то что есть "связь"?
- Этот, как там, академик какой-то фигни, хватит нам всякое то об том, то об этом! Давайте что-то это.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604929
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

"PK является таким индексом и хранится в таблице, не создаёт лишних накладных расходов. Я понимаю, когда без них никак. Но зачем нагружать БД тем, без чего прекрасно можно и нужно обходиться?"

Как обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID?

Человека, вводящего данные, не предлагать!
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604933
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lКак обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID?

я как раз против дополнительного суррогатного ID.
в таблице связи он как третье колено.
и всякие «репликации» — очень плохая отмазка. очень.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604934
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-l
Как обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID?

Это хорошая заявка на номинацию "Самый бредовый вопрос форума", как минимум за 2018 год
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604942
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем же колхозным путём пошли и разработчики Галактики.Бро, ты не в теме. :)
Этим путем пошли почти все создатели взрослых ERP систем. Внезапно (с)
Я даже не знаю, есть ли среди ERP систем, где не применяют этот колхозный путь. Мне таковые неизвестны.
Мож ты знаешь ? :)

зы: Уже была недавно такая тема про ФК (нужны/не нужны).
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604951
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,
"Это хорошая заявка на номинацию "Самый бредовый вопрос форума", как минимум за 2018 год".

Спасибо за рекламу. Но я бы, как минимум, сначала понял бы, о чем идет речь!
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604973
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVЭтим путем пошли почти все создатели взрослых ERP систем. Внезапно (с)
Я даже не знаю, есть ли среди ERP систем, где не применяют этот колхозный путь. Мне таковые неизвестны.
Мож ты знаешь ? :)

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

у нас есть внедрение на федеральном уровне в сфере энергетики. и несколько региональных.

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


LSVзы: Уже была недавно такая тема про ФК (нужны/не нужны).

я говорил про то, что обычное FK выделяется в отдельную сложную многогранную, как душа неотёсанной девственницы, сущность. которую надо отдельно вести и поддерживать. это колхоз.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604979
hVostt,


автору нас есть внедрение на федеральном уровне в сфере энергетики. и несколько региональных.
И небольшой проэкт в сфере рекламы.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39604981
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lНо я бы, как минимум, сначала понял бы, о чем идет речь!
Но почему-то Вы этого не сделали (как можно заметить, Ваш собеседник тоже усомнился в адекватности именно этого вопроса именно ему). Т.е. вопрос не просто бредов сам по себе, но и в контекст дискуссии попадает не очень.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605004
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мы разработали такую систему, решающую задачи уровня галактики.Это глубоко внутренний проект в 1-м экземпляре.

Попробуй написать что-нить тиражируемое и активно эволюционирующее.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605008
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот МатроскинWlr-lНо я бы, как минимум, сначала понял бы, о чем идет речь!
Но почему-то Вы этого не сделали (как можно заметить, Ваш собеседник тоже усомнился в адекватности именно этого вопроса именно ему). Т.е. вопрос не просто бредов сам по себе, но и в контекст дискуссии попадает не очень.

Исходный вопрос "Стоит ли делать отдельное поле для PK?".

hVostt, Cane Cat Fisher и я сказали, что нет, не надо.

У тех, кто говорит, что надо, я и спросил "Как обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID?".

Еще раз, Вы потеряли нить беседы.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605015
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lКот Матроскинпропущено...

Но почему-то Вы этого не сделали (как можно заметить, Ваш собеседник тоже усомнился в адекватности именно этого вопроса именно ему). Т.е. вопрос не просто бредов сам по себе, но и в контекст дискуссии попадает не очень.

Исходный вопрос "Стоит ли делать отдельное поле для PK?".

hVostt, Cane Cat Fisher и я сказали, что нет, не надо.

У тех, кто говорит, что надо, я и спросил "Как обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID?".
Еще раз, Вы потеряли нить беседы.

1. Вы спросили это не у "тех, кто говорит, что надо", а у hVostt (это к вопросу о нити беседы).
2. Вы-таки действительно не знаете ответа на этот вопрос?
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605030
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,
"2. Вы-таки действительно не знаете ответа на этот вопрос?"

Повторюсь.
Вопрос (не мой, а ТС): "Стоит ли делать отдельное поле для PK?". Это для отношения М:М, если Вы не помните первоначальную задачу.

Я (если Вы не прочли этот мой ответ): "Итак, у нас два потенциальных ключа: (USR_ID, USR_GROUP_ID) и (ID). Первый решает задачу уникальности пар USR_ID и USR_GROUP_ID. Второй эту задачу не решает."

Есть и другие способы обеспечения этой уникальности, например, найти внимательного оператора, который прежде чем начнет вводить данные, удостоверится, что ЭТОГО пользователя в Этой группе нет.

Конечно, можно мне задавать вопросы, но лучше ответить на вопрос ТС.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605039
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRosСвязь - всегда сама по себе.

Проблема вот в этом утверждении. Как только связь становится «сама по себе» и создаётся на какой-нибудь отдельной вкладочке «Связи» — это колхоз и выливается 100% в систему, которую с какой стороны не тронь, всё пойдёт по п.....е.

Связь это отношение, т.е. характеристика конкретного объекта. С обоих сторон она должна выражаться определением этого объекта.

А то ты так свяжешь агрегат автомобиля с категорией холодильников, и всё выглядит здорово, только у пришедшего аналитика возникают вопросы, где взять канистру с бензином, чтобы всё нахрен сжечь и посадить на кол колхозников-разработчиков.

Связь не характеристика объекта.
Это объект, который связывает объекты.

Ты тут можешь все что угодно нафантазировать, но пока не поймешь что такое связь - ты не разработчик.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605048
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos,

"Связь не характеристика объекта." Согласен!
"Это объект, который связывает объекты." Значит можно связывать связи!

Я тоже не понял Вашей мысли. Можно на простом примере заказа и позиции объяснить нам связь между этими объектами?
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605053
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, учитывая второй раз повторенный довод про оператора - похоже-таки не знаете.
А на вопрос ТС-а ответил давным-давно Cane Cat Fisher, исчерпывающе.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605056
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lViPRos,
"Это объект, который связывает объекты." Значит можно связывать связи!

Фундаментальный вопрос.
Интерпретация не всегда очевидна.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605057
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка кроется в небрежном определение - объект.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605101
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lУ тех, кто говорит, что надо, я и спросил "Как обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID?"
PK + уникальный индекс из 2 полей, в чем проблема?
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605240
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosСвязь не характеристика объекта.
Это объект, который связывает объекты.

именно про это я и говорю. когда не получается описать отношения объектов в рамках самих объектов, выделяются вот такие костыли и суррогаты. это просто банальная неспособность спроектировать систему описания и определения объектов.


ViPRosТы тут можешь все что угодно нафантазировать, но пока не поймешь что такое связь - ты не разработчик.

мне не надо фантазировать, у меня есть готовая и внедрённая реализация, убедительно доказывающая, что отдельно выделенные связи как костыли -- это нафиг не нужная лишняя концепция-костыль.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605314
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня есть готовая и внедрённая реализация, убедительно доказывающая....Она в одном экземпляре и навечно замкнута на 1-2-3 разработчиков. И ее почти никто не видел. :)

"уровня Галактики" это какбе лол... На экселях при желании/умении тоже можно вести учет "уровня Галактики" (многие так и делают). Т.е. пока этот тезис ниачомъ... :)

зы: Да, можно удалять гланды через ж*пу. Но успешность такой операции никак не доказывает, что именно так всегда следует делать.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605328
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер 01Вопрос: если ли смысл для добавления отдельного ID для таблички USR_IN_GROUP? Или просто наложить на пару полей USR_ID и USR_GROUP_ID ограничение первичного ключа?

Если из USR_IN_GROUP нужно будет ссылку делать в другие места, то лучше сделать суррогатный ключ, иначе эта сладкая парочка (а вообще ведь в ключе может быть и больше полей) транзитом разъедется по связанным таблицам, что не очень удобно.

Если из USR_IN_GROUP никаких FK не будет, то можно оставить в ключе парочку, а суррогатный ключ не нужен.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605392
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVОна в одном экземпляре и навечно замкнута на 1-2-3 разработчиков. И ее почти никто не видел. :)

ща разбежался кому-то чёто доказывать. учитывая что все твои аргументы сводятся к «а смотри как там у больших дядек сделано, крупные ERP бла-бла-бла, ко-ко-ко» — если это всё, что ты можешь сказать, то с какого перепугу мои утверждение, что клал я на эти «крупные ERP» с их колхозными костылями, чем-то уступают твоим?

LSV"уровня Галактики" это какбе лол... На экселях при желании/умении тоже можно вести учет "уровня Галактики" (многие так и делают). Т.е. пока этот тезис ниачомъ... :)

как бе лол не лол, но с галактикой мы сотрудничаем. а при желании,.. да мне плевать , можешь хоть на деревянных счётах вести учёт
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605422
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serguei, и не только.

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

Пусть у нас будет ID первичным PK и будет уникальный индекс (USR_ID, USR_GROUP_ID). Пусть в таблице USR_IN_GROUP будет строка (5, 1, 1) и из некоторой другой таблицы мы ссылаемся на эту строку.

Давайте сделаем из этой строки такую строку (5, 2, 2), не изменив PK и не нарушив уникальности.

Т.е. мы ссылались на Иванова Ивана Ивановича из группы 1, а стали ссылаться на Петрова Петра Петровича из группы 2.

Видим, что глобальные вещи (уникальность, целостность) приносятся в жертву мифической удобности. Сначала нужно говорить о правильности и, если она достигнута, можно говорить о задаче удобства в рамках этой "правильности".

Правильным решением для связи двух таблиц отношением М:М будет создание первичного ключа (уникального индекса) (USR_ID, USR_GROUP_ID) и, может быть, создание индекса (USR_GROUP_ID, USR_ID).

Замечу, что ключ, состоящий из двух полей, один, а не два.
Конечно, можно похвастаться, что наша система состоит из 100500 объектов, а ваша всего из 100.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605440
Сталкивался со схожими проблемами при разработке ряда известных систем различного масштаба для некоторых секретных служб сомнительных заказов.

Данная концепция оказалась сложно реализуемой в блокноте. В совсем запущенных случаях (легаси говнокод на калькуляторе) приходилось прибегать к функциональным возможностям пэйнта и рисовать здоровый красный крестик для обозначения ошибки.

Последующий опыт интеграции с внедрением и запуском различных файлов с расширением "exe" позволяет рассуждать о данных коллизиях не понаслышке, коллега. Это ведь не означает что теперь можно и не доказывать кому-то, но кому? Вот и наша команда, базирующаяся в Калифорнии штат Воронеж затрудняется переводить на русский, но не согласна в корне. А это вообще не дело.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605471
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lОб уникальности я уже сказал (это когда пользователь говорит о задвоении данных), теперь о целостности (это когда пользователь говорит, что сегодня у этого договора контрагент не тот, что был вчера).

Пусть у нас будет ID первичным PK и будет уникальный индекс (USR_ID, USR_GROUP_ID). Пусть в таблице USR_IN_GROUP будет строка (5, 1, 1) и из некоторой другой таблицы мы ссылаемся на эту строку.

Давайте сделаем из этой строки такую строку (5, 2, 2), не изменив PK и не нарушив уникальности.

Т.е. мы ссылались на Иванова Ивана Ивановича из группы 1, а стали ссылаться на Петрова Петра Петровича из группы 2.
Видим, что глобальные вещи (уникальность, целостность) приносятся в жертву мифической удобности. Сначала нужно говорить о правильности и, если она достигнута, можно говорить о задаче удобства в рамках этой "правильности".

Правильным решением для связи двух таблиц отношением М:М будет создание первичного ключа (уникального индекса) (USR_ID, USR_GROUP_ID) и, может быть, создание индекса (USR_GROUP_ID, USR_ID).


Пойдем в Вашей логике дальше - "давайте сделаем" прямо в таблице USER из Иванова Ивана Ивановича - Петрова Петра Петровича. И пользователь будет говорить, что сегодня у этого договора контрагент не тот, что был вчера!
Вот тебе и целостность! Поэтому ни в коем, ни в коем случае нельзя в таблице USER полагаться на ключ USR_ID - надо обязательно включить в ключ фамилию, имя, отчество... да вообще все поля таблицы. Иначе неправильно!!!!111!

P.S. Вы осознаете, что через несколько лет Вам за эти опусы будет стыдно? Интернет ведь такая штука, написано клавиатурой - не вырубишь рубильником.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605509
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинПойдем в Вашей логике дальше - "давайте сделаем" прямо в таблице USER из Иванова Ивана Ивановича - Петрова Петра Петровича. И пользователь будет говорить, что сегодня у этого договора контрагент не тот, что был вчера!
Вот тебе и целостность! Поэтому ни в коем, ни в коем случае нельзя в таблице USER полагаться на ключ USR_ID - надо обязательно включить в ключ фамилию, имя, отчество... да вообще все поля таблицы. Иначе неправильно!!!!111!

P.S. Вы осознаете, что через несколько лет Вам за эти опусы будет стыдно? Интернет ведь такая штука, написано клавиатурой - не вырубишь рубильником.

Насчет USER_ID и фамилии.
Пусть у нас есть форма T1 при приеме на работу.
При приеме на работу у сотрудника была фамилия A, после нескольких лет фамилия стала B (почему-то захотел поменять фамилию)
Так вот какая фамилия должна быть при печати формы T1?
Какая фамилия должна быть при печати отчета принятых на работу за N год?

И это самый простой case. :-)
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605519
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

1. Да осознаю, не только через несколько лет, но и прямо сейчас, мне абсолютно фиолетово.

2. «Написано клавиатурой - не вырубишь рубильником» - золотые слова, Вы не пробовали понять, что Вы сами-то написали?

3. «Пойдем в Вашей логике дальше …». Вы, наверно, восхитились собой, какой Вы креативный человек? Нет, Вы всего лишь сморозили глупость и радуетесь этому.

4. Мне почему-то показалось, что «Но почему-то Вы этого» и Вы это один и тот же человек.

5. Последнее, Ваш пост прочитает много людей. Как Вы думаете, что они подумают о Вас?

Удачи всем!
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605538
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulНасчет USER_ID и фамилии.
Пусть у нас есть форма T1 при приеме на работу.
При приеме на работу у сотрудника была фамилия A, после нескольких лет фамилия стала B (почему-то захотел поменять фамилию)
Так вот какая фамилия должна быть при печати формы T1?
Какая фамилия должна быть при печати отчета принятых на работу за N год?

И это самый простой case. :-)У документа есть дата.
У юзера можно (даже нужно) вести логгирование фамилии и вообще всего важного, что может меняться во времени.
Вытаскиваем из лога ФИО на нужную дату.
(профит)
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605577
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

ты можешь упереться сколько хочешь, но вроде бы ты не такой и ожидаемо придешь куда надо как только задача нормальная подвернется (или кто нить фетву даст в виде паттерна "M&MRules")
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605750
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
круто замесили...
мне лично понравился вот этот ответ:

накладные издеВеликолепное описание фактического состояния. Поскольку никаких показателей ни к одному, ни к другому варианту не имеется, ровно так и надо делать. Как? Да как хочешь. Хоть монетку подбрось. В конце эксперимента появится немножко опыта , который позволит в следующий раз без подсказок че-нить порешать.

у меня все это в прошлом и всяко было, и очень часто жалел что нету тут хотя бы индексированного нумератора, а то и его же в качестве ключа...
- то действительно на связующую таблицу позже вешается паровоз и потом вешалка, когда нихрена вообще нету - любая автоматизация устраивает, а потом входят во вкус и на первое ТЗ валится второе, потом третье...
- то сцуко кому то в голову потом придет - а давайте мля введем графики работы юзеров, то есть не просто Иванов админ, а Иванов админ 25 мая, 26 мая он просто юзер, при наличии ID вруливаем в таблицу дату, номер приказа и проблема решена...
- пока ситуация простая и туманная как у ТС, можно сделать индексированный счетчик, а ключ сделать составной, зато потом можно переиграть куда хош и как хош и нарастить и расширить, в общем больше свобод при минимуме затрат...

ХЗ... в общем когда я создаю любую таблицу, то первое поле в ней FK и уже лет 10 не жалею ни о чем...
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605760
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagХЗ... в общем когда я создаю любую таблицу, то первое поле в ней FK и уже лет 10 не жалею ни о чем...

Естественно первичный ключ...
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605804
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

ты можешь упереться сколько хочешь, но вроде бы ты не такой и ожидаемо придешь куда надо как только задача нормальная подвернется (или кто нить фетву даст в виде паттерна "M&MRules")

Я следую простому принципу: не плоди сущностей (читай, лишней херни). И всё будет норм. Борьба со сложностью продолжается :)
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39605835
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

не в обиду (берегу тебя :)), просто вы пока детские одноразовые задачи решаете
отбой
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606113
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wlr-lОб уникальности я уже сказал (это когда пользователь говорит о задвоении данных), теперь о целостности (это когда пользователь говорит, что сегодня у этого договора контрагент не тот, что был вчера).

Пусть у нас будет ID первичным PK и будет уникальный индекс (USR_ID, USR_GROUP_ID). Пусть в таблице USR_IN_GROUP будет строка (5, 1, 1) и из некоторой другой таблицы мы ссылаемся на эту строку.

Давайте сделаем из этой строки такую строку (5, 2, 2), не изменив PK и не нарушив уникальности.

Т.е. мы ссылались на Иванова Ивана Ивановича из группы 1, а стали ссылаться на Петрова Петра Петровича из группы 2.

Видим, что глобальные вещи (уникальность, целостность) приносятся в жертву мифической удобности. Сначала нужно говорить о правильности и, если она достигнута, можно говорить о задаче удобства в рамках этой "правильности".

Правильным решением для связи двух таблиц отношением М:М будет создание первичного ключа (уникального индекса) (USR_ID, USR_GROUP_ID) и, может быть, создание индекса (USR_GROUP_ID, USR_ID).

Замечу, что ключ, состоящий из двух полей, один, а не два.
Конечно, можно похвастаться, что наша система состоит из 100500 объектов, а ваша всего из 100.

Ничего не понял из этого трактата :(
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606145
SergueiWlr-lОб уникальности я уже сказал (это когда пользователь говорит о задвоении данных), теперь о целостности (это когда пользователь говорит, что сегодня у этого договора контрагент не тот, что был вчера).

Пусть у нас будет ID первичным PK и будет уникальный индекс (USR_ID, USR_GROUP_ID). Пусть в таблице USR_IN_GROUP будет строка (5, 1, 1) и из некоторой другой таблицы мы ссылаемся на эту строку.

Давайте сделаем из этой строки такую строку (5, 2, 2), не изменив PK и не нарушив уникальности.

Т.е. мы ссылались на Иванова Ивана Ивановича из группы 1, а стали ссылаться на Петрова Петра Петровича из группы 2.

Видим, что глобальные вещи (уникальность, целостность) приносятся в жертву мифической удобности. Сначала нужно говорить о правильности и, если она достигнута, можно говорить о задаче удобства в рамках этой "правильности".

Правильным решением для связи двух таблиц отношением М:М будет создание первичного ключа (уникального индекса) (USR_ID, USR_GROUP_ID) и, может быть, создание индекса (USR_GROUP_ID, USR_ID).

Замечу, что ключ, состоящий из двух полей, один, а не два.
Конечно, можно похвастаться, что наша система состоит из 100500 объектов, а ваша всего из 100.

Ничего не понял из этого трактата :(

Вы столь безапелляционно заявляете со ссылкой на Иванова Ивана Ивановича или Петрова Петра Петровича?

Однако же, было замечено что агрегатное состояние сей изоморфной химеры столь неустойчиво, что от вас потребуется максимально точный момент времени вышеупомянутого заявления для корректного определения смещения по линейке ИвановоИваноИвановичей-ПетровыхПетровПетровичей. Затем и оценим степень достоверности вашего мнения. Может все наоборот!
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606188
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из этого трактатаВы столь безапелляционно заявляете со ссылкой на Иванова Ивана Ивановича или Петрова Петра Петровича?

Однако же, было замечено что агрегатное состояние сей изоморфной химеры столь неустойчиво, что от вас потребуется максимально точный момент времени вышеупомянутого заявления для корректного определения смещения по линейке ИвановоИваноИвановичей-ПетровыхПетровПетровичей. Затем и оценим степень достоверности вашего мнения. Может все наоборот!

Извините, но вы так витиевато изъясняетесь, так что я по прежнему не понимаю о чем вы.
Опасения, что Иванова Ивана Ивановича и Петрова Петра Петровича можно перепутать беспочвенны. Ничего там не перепутывается.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606196
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В вакууме соществует Юзер1 в группе1. USER_IN_GROUP
В жизни существует Юзер1 в группе1 с 1 янв. по 20 фев. и в группе 2 с 21 фев по 31 мая.

User_Id, Group_Id, Date_from,Date_to

PK будет уже минимум три поля.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606212
Ivan DurakВ вакууме соществует Юзер1 в группе1. USER_IN_GROUP
В жизни существует Юзер1 в группе1 с 1 янв. по 20 фев. и в группе 2 с 21 фев по 31 мая.

User_Id, Group_Id, Date_from,Date_to

PK будет уже минимум три поля.
Код: sql
1.
User_Id, Group_Id, Date_from,Date_to, Is_IvanovIvanIvanovich, Is_PetrovPetrPetrovich
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606246
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakВ вакууме соществует Юзер1 в группе1. USER_IN_GROUP
В жизни существует Юзер1 в группе1 с 1 янв. по 20 фев. и в группе 2 с 21 фев по 31 мая.

User_Id, Group_Id, Date_from,Date_to

PK будет уже минимум три поля.

В постановке ТС такого требования не было. Ну если нужно во времени отслеживать- не вижу никаких проблем.
Делается суррогатный ключ ID и все- им ссылаться можно куда угодно (хотя в данном примере я даже не могу придумать куда можно было бы ссылаться именно из это таблицы):
SergueiЕсли из USR_IN_GROUP нужно будет ссылку делать в другие места, то лучше сделать суррогатный ключ, иначе эта сладкая парочка (а вообще ведь в ключе может быть и больше полей) транзитом разъедется по связанным таблицам, что не очень удобно.


Дополнительно, чтобы контролировать целостность данных на этой табличке нужен уникальный индекс и все.
Код: sql
1.
 *ID(PK), User_Id, Group_Id, Date_from,Date_to
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606375
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakВ вакууме соществует Юзер1 в группе1. USER_IN_GROUP
В жизни существует Юзер1 в группе1 с 1 янв. по 20 фев. и в группе 2 с 21 фев по 31 мая.

В жизни можно набрать воды в ванную, залезть туда, помыться, сразу там же помыть посуду и кофейку заварить в этой же воде.

Сколько живу, до сих пор поражают до глубины души люди, обожающие смешать мух с котлетами и с удовольствием чавкать.

Какая проблема вести историю, аудит отдельно? Если не религия, то отсутствие способности к мышлению
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606435
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttIvan DurakВ вакууме соществует Юзер1 в группе1. USER_IN_GROUP
В жизни существует Юзер1 в группе1 с 1 янв. по 20 фев. и в группе 2 с 21 фев по 31 мая.

В жизни можно набрать воды в ванную, залезть туда, помыться, сразу там же помыть посуду и кофейку заварить в этой же воде.

Сколько живу, до сих пор поражают до глубины души люди, обожающие смешать мух с котлетами и с удовольствием чавкать.

Какая проблема вести историю, аудит отдельно? Если не религия, то отсутствие способности к мышлению

Если бы не отчеты и документы, то было бы все замечательно.
А так приходится "изгаляться", чтобы отчет на дату показывал, что было тогда, а не непонятно что.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606518
hVostt,

В жизни можно набрать воды в ванную, залезть туда, помыться, сразу там же помыть посуду и кофейку заварить в этой же воде.
Ключевое тут "в этой же воде"
По сути вы предлагаете тащить к дому минимум три водопровода с одной и той же водой - отдельно на помыться, отдельно на посудомойку, отдельно на какаю, а если еще какая потребность вылезет, то наши руки не для скуки. Любой каприз лечится тупо новыми таблицами без ключей и связей и это все под флагом "ничего лишнего".
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606634
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulЕсли бы не отчеты и документы, то было бы все замечательно.
А так приходится "изгаляться", чтобы отчет на дату показывал, что было тогда, а не непонятно что.

Не понятно, о чём конкертно говорим, давайте на примерах?
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606635
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с какой стороны смотретьПо сути вы предлагаете тащить к дому минимум три водопровода с одной и той же водой - отдельно на помыться, отдельно на посудомойку, отдельно на какаю, а если еще какая потребность вылезет, то наши руки не для скуки. Любой каприз лечится тупо новыми таблицами без ключей и связей и это все под флагом "ничего лишнего".

Ну технически, во многих домах именно так и есть. В ванной один кран, на кухне два: один посуды мыть, другой с чистой питьевой водой.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606643
hVostt,

Ну технически, во многих домах именно так и есть. В ванной один кран, на кухне два: один посуды мыть, другой с чистой питьевой водой.

И это называется разводка, - использование одного подключения воды к дому для многих целей, еще раз акцентирую вашу же ключевую мысль "одна и та же вода". В вашем примере после принятия ванны, в ванне - уже другая вода, после мытья в ней посуды - это уже третья вода, пример ваш не совсем был к месту
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606728
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с какой стороны смотретьИ это называется разводка, - использование одного подключения воды к дому для многих целей, еще раз акцентирую вашу же ключевую мысль "одна и та же вода". В вашем примере после принятия ванны, в ванне - уже другая вода, после мытья в ней посуды - это уже третья вода, пример ваш не совсем был к месту

Открою вам секрет, ключевая мысль с водой никак не связана.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39606766
hVostt,
ну тогда, в том посте вообще нет ни одной ключевой мысли, просто лишний пост, с горяча
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39607125
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с какой стороны смотретьhVostt,
ну тогда, в том посте вообще нет ни одной ключевой мысли, просто лишний пост, с горяча

Ключевая мысль простая: разделяй и властвуй.
Нехрен в одну таблицу пихать разные по смыслу данные.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39607178
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКлючевая мысль простая: разделяй и властвуй.
Нехрен в одну таблицу пихать разные по смыслу данные.ОК. Встречный вапроз:
Нахрен создавать для каждого "смысла" отдельную таблицу ? Допустим этих "смыслов" многие сотни.
Н-р параметры товаров в магазине техники. Только у смартфона их неск. десятков. А в итоге - многие тысячи.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39607198
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVНахрен создавать для каждого "смысла" отдельную таблицу ? Допустим этих "смыслов" многие сотни.
Н-р параметры товаров в магазине техники. Только у смартфона их неск. десятков. А в итоге - многие тысячи.

Не вижу никаких разных смыслов. В таблице "Товары" хранятся товары. Если наборы характеристик разные, решается несколькими способами, от EAV, до XML/JSON/P.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39607427
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttLSVНахрен создавать для каждого "смысла" отдельную таблицу ? Допустим этих "смыслов" многие сотни.
Н-р параметры товаров в магазине техники. Только у смартфона их неск. десятков. А в итоге - многие тысячи.

Не вижу никаких разных смыслов. В таблице "Товары" хранятся товары. Если наборы характеристик разные, решается несколькими способами, от EAV, до XML/JSON/P.
вы, товарищ, как я понимаю, хотите иметь и таблицу связи:
user_id, group_id

и отдельно к ней таблицу истории, вида
user_id, group_id (эти поля FK на первую таблицу), date_from, date_to

Я ничего не перепутал? Такая задумка да??
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39607842
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakЯ ничего не перепутал? Такая задумка да??

Вариантов хранить историю отдельно -- много. Вам все привести, или сами нагуглите?
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39607953
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttIvan DurakЯ ничего не перепутал? Такая задумка да??

Вариантов хранить историю отдельно -- много. Вам все привести, или сами нагуглите?
ok. Будем считать это за подтверждение.
Теперь следующий вопрос:
Будете ли вы хранить в первой таблице (user_id, group_id) связи для уже устаревших групп??
тех которые не актуальны???
Если нет - на что тогда ссылаться таблице с историей?? FK то у нее есть.
Если да - как же тогда отличить в таблице связей актуальную связь от неактуальной? Придется для ЛЮБОГО построения связей еще и в таблицу истории лазить, так?
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39607963
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durak,


Ivan DurakБудете ли вы хранить в первой таблице (user_id, group_id) связи для уже устаревших групп??

Нет.


Ivan Durakтех которые не актуальны???

Нет.


Ivan DurakЕсли нет - на что тогда ссылаться таблице с историей?? FK то у нее есть.

У исторических таблиц ФК на исторические таблицы.


Ivan DurakЕсли да - как же тогда отличить в таблице связей актуальную связь от неактуальной? Придется для ЛЮБОГО построения связей еще и в таблицу истории лазить, так?

Вот именно для того, чтобы не ипсти никому мозг, и не изворачиваться ужом, чтобы построить банальнейшие запросы, надо всё лишнее из актуальных таблиц убрать. И поберечь нервы других разработчиков.
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39608190
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttУ исторических таблиц ФК на исторические таблицы.

WAT ??????

Боюсь вы страшно далеки от реального датамоделинга
...
Рейтинг: 0 / 0
Стоит ли делать отдельное поле для PK?
    #39608238
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakhVosttУ исторических таблиц ФК на исторические таблицы.

WAT ??????

Боюсь вы страшно далеки от реального датамоделинга

Вы видимо нормального датамоделинга в глаза не видели, отсюда такие смешные заявления.
...
Рейтинг: 0 / 0
96 сообщений из 96, показаны все 4 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Стоит ли делать отдельное поле для PK?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]