|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Здравствуйте. При проектировании схемы базы использую суррогатный ключ (поле типа 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 ограничение первичного ключа? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2018, 01:14 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Юзер 01В случае, когда табличка лишь реализует связь типа "много::много", стоит ли для такой таблички создавать отдельное поле для PK, или обойтись парой полей, используемых для FK к связываемым табличкам? Нет конечно, не нужно этого делать. Нужен один единственный ключ, состоящий из двух полей — связей. Юзер 01Или просто наложить на пару полей USR_ID и USR_GROUP_ID ограничение первичного ключа? Да. Именно так. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2018, 02:50 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Юзер 01, Если это чистая М:М связка, то нет конечно, не стоит - вы никогда не будете им пользоваться, скорее всего. Другое дело, что если под этой таблицей развесистый кусок, и куча других таблиц ссылаются не нее, то тогда лучше сделать, чтобы не тянуть через FK два этих поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2018, 05:24 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Ennor TiegaelЮзер 01, Если это чистая М:М связка, то нет конечно, не стоит - вы никогда не будете им пользоваться, скорее всего. Другое дело, что если под этой таблицей развесистый кусок, и куча других таблиц ссылаются не нее, то тогда лучше сделать, чтобы не тянуть через FK два этих поля. +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2018, 10:58 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Ennor TiegaelЮзер 01, Если это чистая М:М связка, то нет конечно, не стоит - вы никогда не будете им пользоваться, скорее всего. Другое дело, что если под этой таблицей развесистый кусок, и куча других таблиц ссылаются не нее, то тогда лучше сделать, чтобы не тянуть через FK два этих поля. "что если под этой таблицей развесистый кусок" - а это всегда так, если это не курсовая ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2018, 14:33 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Ennor Tiegael...Другое дело, что если под этой таблицей развесистый кусок, и куча других таблиц ссылаются не нее, то тогда лучше сделать, чтобы не тянуть через FK два этих поля. С одной стороны - накладные издержки на введение отдельного поля для PK минимальны. С другой стороны - следует ли при проектировании учитывать то, что в данный момент не требуется? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2018, 14:44 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
У меня репликация построена на условии, что все таблицы имеют одно поле-PK , так что у меня у всех таблиц есть ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2018, 22:20 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Бывают случаи когда удобно оперировать один полем. Например в проекте ведутся ссылки на документы/справочники и т.д. Обычно это одно целочисленное поле, на кот. удобно ссылаться. И по сабжу может понадобиться иметь простую ссылку на запись в таблице (н-р для унифицированного поиска или прочих ссылок). В случае с составным ключом это неудобно или даже невозможно. Если таблица среднебольшая то никаких накл. расходов на доп. поле нет. по сабжу: Оба варианта имеют право на жизнь. 2 Ennor Tiegael: +500 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2018, 22:29 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
ViPRos"что если под этой таблицей развесистый кусок" - а это всегда так, если это не курсовая Параметризованная связь М:М? Это уже не совсем связь, потому что таким образом можно абсолютно 100% любую таблицу, имеющую 2 и больше foreign key рассматривать, как «развесистый кусок». Основная проблема разработчиков, это уход от терминологии, навешивание и подмена своего смысла, а потом все страдают. На примере у ТС именно М:М. Ну добавь туда ещё дату и автора создания, ещё номер ревизии и ещё 50 технических полей, чтобы это не выглядело как курсовая. Что изменится? Создание в таблице связи отдельного поля PK приводит к необходимости создания и ведения дополнительного уникального индекса. Ради чего? Потому что кто-то там не может репликацию настроить? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 02:29 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVosttНа примере у ТС именно М:М. Да, тут отдельное поле для PK не нужно. А вот если бы это были строки заказа ) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 02:47 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
bideveloperДа, тут отдельное поле для PK не нужно. А вот если бы это были строки заказа ) Дык это уже тогда и не М:М :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 05:25 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Юзер 01Ennor Tiegael...Другое дело, что если под этой таблицей развесистый кусок, и куча других таблиц ссылаются не нее, то тогда лучше сделать, чтобы не тянуть через FK два этих поля. С одной стороны - накладные издержки на введение отдельного поля для PK минимальны. С другой стороны - следует ли при проектировании учитывать то, что в данный момент не требуется? При проектировании следует учитывать бизнес-логику: как данные запрашиваются, как изменяются. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 07:40 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Создание в таблице связи отдельного поля PK приводит к необходимости создания и ведения дополнительного уникального индекса. Ради чего?Тебе, что жалко, бро ? :) Это мизерные накладные расходы. Никто и не заметит. Если с т.з. разработки это поле действительно удобно/полезно, то его следует сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 10:25 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
LSVСоздание в таблице связи отдельного поля PK приводит к необходимости создания и ведения дополнительного уникального индекса. Ради чего?Тебе, что жалко, бро ? :) Это мизерные накладные расходы. Никто и не заметит. Если с т.з. разработки это поле действительно удобно/полезно, то его следует сделать. Да, да, ещё и кластерный индекс на это поле залепить, а на другие обычный. Не жалко ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 10:28 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
skyANAДа, да, ещё и кластерный индекс на это поле залепить, а на другие обычный. Не жалко Если в этом поле автоинкремент, то кластерный это норм. зы: и тебе жалко ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 10:42 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Юзер 01С одной стороны - накладные издержки на введение отдельного поля для PK минимальны. С другой стороны - следует ли при проектировании учитывать то, что в данный момент не требуется? Великолепное описание фактического состояния. Поскольку никаких показателей ни к одному, ни к другому варианту не имеется, ровно так и надо делать. Как? Да как хочешь. Хоть монетку подбрось. В конце эксперимента появится немножко опыта, который позволит в следующий раз без подсказок че-нить порешать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 10:56 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Если говорить о чистой реляционной алгебре, то для связи N:N по определению достаточно двух полей, а третье без надобности. Другое дело, что мало какие реальные проекты имеют счастье жить в рамках чистой реляционной алгебры. И со временем, столкнувшись с практическими требованиями, многие приходят к мысли, что в каждой таблице PK должен быть одним полем, даже в таком простом случае. Некоторые причины тут уже назвали - репликация, протоколирование изменений, единообразная работа со ссылками, всякие сторонние инструменты, которые хотят PK как одно поле. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 11:31 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Cane Cat Fisher, +500. зы: применяю оба подхода, есличо. Но если в таблице много полей, то предпочитаю добавлять автонумератор. Для удобства. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 11:56 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVostt, мало плавал :) лучше любую связь рассматривать как М:М и при нужде наложить ограничение для сужения ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 15:07 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Извините, почему для репликации так уж необходимо, чтобы первичный ключ был только на одном поле? Если репликация основана на инструкции MERGE, то какая разница, что там у неё в JOIN CONDITION: Field1 = Value1 или Field1 = Value1 AND Field2 = Value2 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 15:52 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
ultrasonic7, Для МОЕЙ репликации так надо. У меня есть таблица "лог изменений" вида (id таблицы, id записи, тип изменения i/u/d), по этим данным формируется пакет изменений. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2018, 16:40 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
ViPRoshVostt, мало плавал :) лучше любую связь рассматривать как М:М и при нужде наложить ограничение для сужения Звучит отвратительно даже в теории. Так то, ограничения foreign key -- злющее зло. Индексы -- надо бросать на все поля вдоль и поперёк. Всегда можно наложить ограничение в запросе, так? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 09:40 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
LSVskyANAДа, да, ещё и кластерный индекс на это поле залепить, а на другие обычный. Не жалко Если в этом поле автоинкремент, то кластерный это норм. зы: и тебе жалко ? :)для USR_IN_GROUP да ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 10:08 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Шавлюк Евгений, собственный велосипед для репликации? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 11:10 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
bideveloperДа, тут отдельное поле для PK не нужно. А вот если бы это были строки заказа ) Насчёт строк заказа, так-то FK на позицию заказа это чисто дополнительная справочная информация. Заказ должен заморозить позицию, так, чтобы после того, как позиции товаров как-то менялись, это не повлияло на заказ. Либо записи товаров должны быть неизменными, любое изменение должно приводить к созданию новой записи. В общем, тут дело такое. Многие путают, не думая о системе в целом и обо всех аспектах функционирования системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 11:15 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVosttЗвучит отвратительно даже в теории. Так то, ограничения foreign key -- злющее зло. Индексы -- надо бросать на все поля вдоль и поперёк. Всегда можно наложить ограничение в запросе, так? Знавал одних чуваков, так когда у них с БД что-то не пошло и решили, что все из-за того, что при выборках слишком много джойнов, так они вообще все таблицы со всеми связали по FK ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 13:50 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
"Создание в таблице связи отдельного поля PK приводит к необходимости создания и ведения дополнительного уникального индекса. Ради чего? " Необходимость создания и ведения уникального индекса состоит в том, чтобы в таблице USR_IN_GROUP не появились, например, такие строки ... 1000, 1, 1 ... 2555, 1, 1 ... С реляционной точки зрения, это важнее всего остального. Что касается заказов, то "Каждый заказ может содержать одну или несколько позиций, каждая позиция может принадлежать одному и только одному заказу". Где здесь М:М вместе с заморозкой позиций? FK всего лишь говорит, что ЭТА позиция принадлежит ЭТОМУ заказу, а не ТОМУ. Без всяких других аспектов функционирования системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 14:18 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Юзер 01, Смысл есть, но если Вам непонятно зачем это, то не нужно.) В целом вопрос довольно странный. Есть принципы построения реляционных баз, отступать от них можно, если понимаешь, в чем причина так делать в конкретном случае. Если нет, то лучше следовать им. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 14:24 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Еще раз. Смысла нет, так как придется построить еще один потенциальный ключ! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 14:29 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Wlr-lЕще раз. Смысла нет, так как придется построить еще один потенциальный ключ!и в чём сложность? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 14:36 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
egorych, В бессмысленности! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 14:42 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Wlr-lВ бессмысленности!пахнуло религиозным фанатизмом сейчас)) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 14:49 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
egorychпахнуло религиозным фанатизмом сейчас)) Итак, у нас два потенциальных ключа: (USR_ID, USR_GROUP_ID) и (ID). Первый решает задачу уникальности пар USR_ID и USR_GROUP_ID. Второй эту задачу не решает. Где здесь фанатизм? От двух потенциальных ключей веет религиозным фанатизмом ключ=одно поле таблицы! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 15:06 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVosttViPRoshVostt, мало плавал :) лучше любую связь рассматривать как М:М и при нужде наложить ограничение для сужения Звучит отвратительно даже в теории. Так то, ограничения foreign key -- злющее зло. Индексы -- надо бросать на все поля вдоль и поперёк. Всегда можно наложить ограничение в запросе, так? Смотря в какой теории. Связь - всегда сама по себе. Связь может иметь и имеет Собственные свойства, присущие только связи. Ограничение на мощность связи легко создается и снимается. Связь можно легко убить и добавить (жизнь в динамике). ... Связь - мощная контекстобразующая метаструктура. ... Всякие форинкейи, индексы и т.д. к связям никакого отношения не имеют. Вощем, это пока не твой хлеб. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 15:44 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Wlr-lНеобходимость создания и ведения уникального индекса состоит в том, чтобы в таблице USR_IN_GROUP не появились, например, такие строки ... 1000, 1, 1 ... 2555, 1, 1 ... С реляционной точки зрения, это важнее всего остального. Эммм.. и что? PK является таким индексом и хранится в таблице, не создаёт лишних накладных расходов. Я понимаю, когда без них никак. Но зачем нагружать БД тем, без чего прекрасно можно и нужно обходиться? Wlr-lЧто касается заказов, то "Каждый заказ может содержать одну или несколько позиций, каждая позиция может принадлежать одному и только одному заказу". Где здесь М:М вместе с заморозкой позиций? FK всего лишь говорит, что ЭТА позиция принадлежит ЭТОМУ заказу, а не ТОМУ. Без всяких других аспектов функционирования системы. Мозги не думать. Понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 15:51 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
fkthatЗнавал одних чуваков, так когда у них с БД что-то не пошло и решили, что все из-за того, что при выборках слишком много джойнов, так они вообще все таблицы со всеми связали по FK Ну, я же говорил, FK -- зло ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 15:52 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
ViPRosСвязь - всегда сама по себе. Проблема вот в этом утверждении. Как только связь становится «сама по себе» и создаётся на какой-нибудь отдельной вкладочке «Связи» — это колхоз и выливается 100% в систему, которую с какой стороны не тронь, всё пойдёт по п.....е. Связь это отношение, т.е. характеристика конкретного объекта. С обоих сторон она должна выражаться определением этого объекта. А то ты так свяжешь агрегат автомобиля с категорией холодильников, и всё выглядит здорово, только у пришедшего аналитика возникают вопросы, где взять канистру с бензином, чтобы всё нахрен сжечь и посадить на кол колхозников-разработчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 15:56 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
ViPRos, "Связь - всегда сама по себе." Связь - это нечто между чем-то и чем-то. Если не будет этих "чем-то" и "чем-то", то что есть "связь"? Если все хорошо в многомерном пространстве, то как это будет в одномерном? Можно объяснить на примере заказа и позиции? Особенно в динамике, когда "связь сама по себе". ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 15:57 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Wlr-lЕсли все хорошо в многомерном пространстве, то как это будет в одномерном? Можно объяснить на примере заказа и позиции? Особенно в динамике, когда "связь сама по себе". Да у него в его системе для «всего и вся» связи ведутся и управляются отдельно. Тем же колхозным путём пошли и разработчики Галактики. К слову, на 3-х часовой демонстрации возможностей Галактики, самый главный эксперт уже через час, когда показывал самые простые вещи и азы, стал теряться и путаться, по десять минут лазая по вкладочкам, коих миллион и табличкам, коих миллион, чтобы сделать простейшие с точки зрения бизнеса вещи. Адище в общем. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 15:59 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Wlr-l, Заседание РАН в полном разгаре: - Связь - это нечто между чем-то и чем-то. Если не будет этих "чем-то" и "чем-то", то что есть "связь"? - Этот, как там, академик какой-то фигни, хватит нам всякое то об том, то об этом! Давайте что-то это. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 16:00 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVostt, "PK является таким индексом и хранится в таблице, не создаёт лишних накладных расходов. Я понимаю, когда без них никак. Но зачем нагружать БД тем, без чего прекрасно можно и нужно обходиться?" Как обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID? Человека, вводящего данные, не предлагать! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 16:03 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Wlr-lКак обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID? я как раз против дополнительного суррогатного ID. в таблице связи он как третье колено. и всякие «репликации» — очень плохая отмазка. очень. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 16:09 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Wlr-l Как обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID? Это хорошая заявка на номинацию "Самый бредовый вопрос форума", как минимум за 2018 год ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 16:11 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Тем же колхозным путём пошли и разработчики Галактики.Бро, ты не в теме. :) Этим путем пошли почти все создатели взрослых ERP систем. Внезапно (с) Я даже не знаю, есть ли среди ERP систем, где не применяют этот колхозный путь. Мне таковые неизвестны. Мож ты знаешь ? :) зы: Уже была недавно такая тема про ФК (нужны/не нужны). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 16:19 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Кот Матроскин, "Это хорошая заявка на номинацию "Самый бредовый вопрос форума", как минимум за 2018 год". Спасибо за рекламу. Но я бы, как минимум, сначала понял бы, о чем идет речь! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 16:28 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
LSVЭтим путем пошли почти все создатели взрослых ERP систем. Внезапно (с) Я даже не знаю, есть ли среди ERP систем, где не применяют этот колхозный путь. Мне таковые неизвестны. Мож ты знаешь ? :) мы разработали такую систему, решающую задачи уровня галактики. у нас ни намёка ни на какие отдельно стоящие «Связи». если какая-то бизнес-сущность имеет связь с другой, это непосредственно её характеристика. у нас есть внедрение на федеральном уровне в сфере энергетики. и несколько региональных. но мы не конкурируем ни с випросами, ни с галактиками, так как у нас нет и никогда не было цели написать комбайнер, решающий все задачи в мире. это глупо и наивно, хотя до сих пор в этой топке сжигаются миллионы советских рублей и усилий. LSVзы: Уже была недавно такая тема про ФК (нужны/не нужны). я говорил про то, что обычное FK выделяется в отдельную сложную многогранную, как душа неотёсанной девственницы, сущность. которую надо отдельно вести и поддерживать. это колхоз. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 17:04 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVostt, автору нас есть внедрение на федеральном уровне в сфере энергетики. и несколько региональных. И небольшой проэкт в сфере рекламы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 17:10 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Wlr-lНо я бы, как минимум, сначала понял бы, о чем идет речь! Но почему-то Вы этого не сделали (как можно заметить, Ваш собеседник тоже усомнился в адекватности именно этого вопроса именно ему). Т.е. вопрос не просто бредов сам по себе, но и в контекст дискуссии попадает не очень. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 17:11 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
мы разработали такую систему, решающую задачи уровня галактики.Это глубоко внутренний проект в 1-м экземпляре. Попробуй написать что-нить тиражируемое и активно эволюционирующее. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 17:34 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Кот МатроскинWlr-lНо я бы, как минимум, сначала понял бы, о чем идет речь! Но почему-то Вы этого не сделали (как можно заметить, Ваш собеседник тоже усомнился в адекватности именно этого вопроса именно ему). Т.е. вопрос не просто бредов сам по себе, но и в контекст дискуссии попадает не очень. Исходный вопрос "Стоит ли делать отдельное поле для PK?". hVostt, Cane Cat Fisher и я сказали, что нет, не надо. У тех, кто говорит, что надо, я и спросил "Как обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID?". Еще раз, Вы потеряли нить беседы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 17:37 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Wlr-lКот Матроскинпропущено... Но почему-то Вы этого не сделали (как можно заметить, Ваш собеседник тоже усомнился в адекватности именно этого вопроса именно ему). Т.е. вопрос не просто бредов сам по себе, но и в контекст дискуссии попадает не очень. Исходный вопрос "Стоит ли делать отдельное поле для PK?". hVostt, Cane Cat Fisher и я сказали, что нет, не надо. У тех, кто говорит, что надо, я и спросил "Как обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID?". Еще раз, Вы потеряли нить беседы. 1. Вы спросили это не у "тех, кто говорит, что надо", а у hVostt (это к вопросу о нити беседы). 2. Вы-таки действительно не знаете ответа на этот вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 17:44 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Кот Матроскин, "2. Вы-таки действительно не знаете ответа на этот вопрос?" Повторюсь. Вопрос (не мой, а ТС): "Стоит ли делать отдельное поле для PK?". Это для отношения М:М, если Вы не помните первоначальную задачу. Я (если Вы не прочли этот мой ответ): "Итак, у нас два потенциальных ключа: (USR_ID, USR_GROUP_ID) и (ID). Первый решает задачу уникальности пар USR_ID и USR_GROUP_ID. Второй эту задачу не решает." Есть и другие способы обеспечения этой уникальности, например, найти внимательного оператора, который прежде чем начнет вводить данные, удостоверится, что ЭТОГО пользователя в Этой группе нет. Конечно, можно мне задавать вопросы, но лучше ответить на вопрос ТС. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 18:01 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVosttViPRosСвязь - всегда сама по себе. Проблема вот в этом утверждении. Как только связь становится «сама по себе» и создаётся на какой-нибудь отдельной вкладочке «Связи» — это колхоз и выливается 100% в систему, которую с какой стороны не тронь, всё пойдёт по п.....е. Связь это отношение, т.е. характеристика конкретного объекта. С обоих сторон она должна выражаться определением этого объекта. А то ты так свяжешь агрегат автомобиля с категорией холодильников, и всё выглядит здорово, только у пришедшего аналитика возникают вопросы, где взять канистру с бензином, чтобы всё нахрен сжечь и посадить на кол колхозников-разработчиков. Связь не характеристика объекта. Это объект, который связывает объекты. Ты тут можешь все что угодно нафантазировать, но пока не поймешь что такое связь - ты не разработчик. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 18:10 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
ViPRos, "Связь не характеристика объекта." Согласен! "Это объект, который связывает объекты." Значит можно связывать связи! Я тоже не понял Вашей мысли. Можно на простом примере заказа и позиции объяснить нам связь между этими объектами? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 18:19 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Да, учитывая второй раз повторенный довод про оператора - похоже-таки не знаете. А на вопрос ТС-а ответил давным-давно Cane Cat Fisher, исчерпывающе. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 18:24 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Wlr-lViPRos, "Это объект, который связывает объекты." Значит можно связывать связи! Фундаментальный вопрос. Интерпретация не всегда очевидна. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 18:31 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Ошибка кроется в небрежном определение - объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 18:32 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Wlr-lУ тех, кто говорит, что надо, я и спросил "Как обеспечить уникальность пар USR_ID и USR_GROUP_ID, если есть ключ по ID?" PK + уникальный индекс из 2 полей, в чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2018, 20:01 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
ViPRosСвязь не характеристика объекта. Это объект, который связывает объекты. именно про это я и говорю. когда не получается описать отношения объектов в рамках самих объектов, выделяются вот такие костыли и суррогаты. это просто банальная неспособность спроектировать систему описания и определения объектов. ViPRosТы тут можешь все что угодно нафантазировать, но пока не поймешь что такое связь - ты не разработчик. мне не надо фантазировать, у меня есть готовая и внедрённая реализация, убедительно доказывающая, что отдельно выделенные связи как костыли -- это нафиг не нужная лишняя концепция-костыль. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 08:09 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
у меня есть готовая и внедрённая реализация, убедительно доказывающая....Она в одном экземпляре и навечно замкнута на 1-2-3 разработчиков. И ее почти никто не видел. :) "уровня Галактики" это какбе лол... На экселях при желании/умении тоже можно вести учет "уровня Галактики" (многие так и делают). Т.е. пока этот тезис ниачомъ... :) зы: Да, можно удалять гланды через ж*пу. Но успешность такой операции никак не доказывает, что именно так всегда следует делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 10:30 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Юзер 01Вопрос: если ли смысл для добавления отдельного ID для таблички USR_IN_GROUP? Или просто наложить на пару полей USR_ID и USR_GROUP_ID ограничение первичного ключа? Если из USR_IN_GROUP нужно будет ссылку делать в другие места, то лучше сделать суррогатный ключ, иначе эта сладкая парочка (а вообще ведь в ключе может быть и больше полей) транзитом разъедется по связанным таблицам, что не очень удобно. Если из USR_IN_GROUP никаких FK не будет, то можно оставить в ключе парочку, а суррогатный ключ не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 10:43 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
LSVОна в одном экземпляре и навечно замкнута на 1-2-3 разработчиков. И ее почти никто не видел. :) ща разбежался кому-то чёто доказывать. учитывая что все твои аргументы сводятся к «а смотри как там у больших дядек сделано, крупные ERP бла-бла-бла, ко-ко-ко» — если это всё, что ты можешь сказать, то с какого перепугу мои утверждение, что клал я на эти «крупные ERP» с их колхозными костылями, чем-то уступают твоим? LSV"уровня Галактики" это какбе лол... На экселях при желании/умении тоже можно вести учет "уровня Галактики" (многие так и делают). Т.е. пока этот тезис ниачомъ... :) как бе лол не лол, но с галактикой мы сотрудничаем. а при желании,.. да мне плевать , можешь хоть на деревянных счётах вести учёт ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 12:03 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 12:30 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Сталкивался со схожими проблемами при разработке ряда известных систем различного масштаба для некоторых секретных служб сомнительных заказов. Данная концепция оказалась сложно реализуемой в блокноте. В совсем запущенных случаях (легаси говнокод на калькуляторе) приходилось прибегать к функциональным возможностям пэйнта и рисовать здоровый красный крестик для обозначения ошибки. Последующий опыт интеграции с внедрением и запуском различных файлов с расширением "exe" позволяет рассуждать о данных коллизиях не понаслышке, коллега. Это ведь не означает что теперь можно и не доказывать кому-то, но кому? Вот и наша команда, базирующаяся в Калифорнии штат Воронеж затрудняется переводить на русский, но не согласна в корне. А это вообще не дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 12:47 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
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. Вы осознаете, что через несколько лет Вам за эти опусы будет стыдно? Интернет ведь такая штука, написано клавиатурой - не вырубишь рубильником. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 13:20 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Кот МатроскинПойдем в Вашей логике дальше - "давайте сделаем" прямо в таблице USER из Иванова Ивана Ивановича - Петрова Петра Петровича. И пользователь будет говорить, что сегодня у этого договора контрагент не тот, что был вчера! Вот тебе и целостность! Поэтому ни в коем, ни в коем случае нельзя в таблице USER полагаться на ключ USR_ID - надо обязательно включить в ключ фамилию, имя, отчество... да вообще все поля таблицы. Иначе неправильно!!!!111! P.S. Вы осознаете, что через несколько лет Вам за эти опусы будет стыдно? Интернет ведь такая штука, написано клавиатурой - не вырубишь рубильником. Насчет USER_ID и фамилии. Пусть у нас есть форма T1 при приеме на работу. При приеме на работу у сотрудника была фамилия A, после нескольких лет фамилия стала B (почему-то захотел поменять фамилию) Так вот какая фамилия должна быть при печати формы T1? Какая фамилия должна быть при печати отчета принятых на работу за N год? И это самый простой case. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 13:51 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Кот Матроскин, 1. Да осознаю, не только через несколько лет, но и прямо сейчас, мне абсолютно фиолетово. 2. «Написано клавиатурой - не вырубишь рубильником» - золотые слова, Вы не пробовали понять, что Вы сами-то написали? 3. «Пойдем в Вашей логике дальше …». Вы, наверно, восхитились собой, какой Вы креативный человек? Нет, Вы всего лишь сморозили глупость и радуетесь этому. 4. Мне почему-то показалось, что «Но почему-то Вы этого» и Вы это один и тот же человек. 5. Последнее, Ваш пост прочитает много людей. Как Вы думаете, что они подумают о Вас? Удачи всем! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 14:06 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
mad_nazgulНасчет USER_ID и фамилии. Пусть у нас есть форма T1 при приеме на работу. При приеме на работу у сотрудника была фамилия A, после нескольких лет фамилия стала B (почему-то захотел поменять фамилию) Так вот какая фамилия должна быть при печати формы T1? Какая фамилия должна быть при печати отчета принятых на работу за N год? И это самый простой case. :-)У документа есть дата. У юзера можно (даже нужно) вести логгирование фамилии и вообще всего важного, что может меняться во времени. Вытаскиваем из лога ФИО на нужную дату. (профит) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 14:21 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVostt, ты можешь упереться сколько хочешь, но вроде бы ты не такой и ожидаемо придешь куда надо как только задача нормальная подвернется (или кто нить фетву даст в виде паттерна "M&MRules") ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 15:15 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
круто замесили... мне лично понравился вот этот ответ: накладные издеВеликолепное описание фактического состояния. Поскольку никаких показателей ни к одному, ни к другому варианту не имеется, ровно так и надо делать. Как? Да как хочешь. Хоть монетку подбрось. В конце эксперимента появится немножко опыта , который позволит в следующий раз без подсказок че-нить порешать. у меня все это в прошлом и всяко было, и очень часто жалел что нету тут хотя бы индексированного нумератора, а то и его же в качестве ключа... - то действительно на связующую таблицу позже вешается паровоз и потом вешалка, когда нихрена вообще нету - любая автоматизация устраивает, а потом входят во вкус и на первое ТЗ валится второе, потом третье... - то сцуко кому то в голову потом придет - а давайте мля введем графики работы юзеров, то есть не просто Иванов админ, а Иванов админ 25 мая, 26 мая он просто юзер, при наличии ID вруливаем в таблицу дату, номер приказа и проблема решена... - пока ситуация простая и туманная как у ТС, можно сделать индексированный счетчик, а ключ сделать составной, зато потом можно переиграть куда хош и как хош и нарастить и расширить, в общем больше свобод при минимуме затрат... ХЗ... в общем когда я создаю любую таблицу, то первое поле в ней FK и уже лет 10 не жалею ни о чем... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 20:00 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
vmagХЗ... в общем когда я создаю любую таблицу, то первое поле в ней FK и уже лет 10 не жалею ни о чем... Естественно первичный ключ... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 20:22 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
ViPRoshVostt, ты можешь упереться сколько хочешь, но вроде бы ты не такой и ожидаемо придешь куда надо как только задача нормальная подвернется (или кто нить фетву даст в виде паттерна "M&MRules") Я следую простому принципу: не плоди сущностей (читай, лишней херни). И всё будет норм. Борьба со сложностью продолжается :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 21:09 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVostt, не в обиду (берегу тебя :)), просто вы пока детские одноразовые задачи решаете отбой ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 22:01 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
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. Ничего не понял из этого трактата :( ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2018, 13:53 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
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. Ничего не понял из этого трактата :( Вы столь безапелляционно заявляете со ссылкой на Иванова Ивана Ивановича или Петрова Петра Петровича? Однако же, было замечено что агрегатное состояние сей изоморфной химеры столь неустойчиво, что от вас потребуется максимально точный момент времени вышеупомянутого заявления для корректного определения смещения по линейке ИвановоИваноИвановичей-ПетровыхПетровПетровичей. Затем и оценим степень достоверности вашего мнения. Может все наоборот! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2018, 14:23 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
из этого трактатаВы столь безапелляционно заявляете со ссылкой на Иванова Ивана Ивановича или Петрова Петра Петровича? Однако же, было замечено что агрегатное состояние сей изоморфной химеры столь неустойчиво, что от вас потребуется максимально точный момент времени вышеупомянутого заявления для корректного определения смещения по линейке ИвановоИваноИвановичей-ПетровыхПетровПетровичей. Затем и оценим степень достоверности вашего мнения. Может все наоборот! Извините, но вы так витиевато изъясняетесь, так что я по прежнему не понимаю о чем вы. Опасения, что Иванова Ивана Ивановича и Петрова Петра Петровича можно перепутать беспочвенны. Ничего там не перепутывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2018, 15:11 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
В вакууме соществует Юзер1 в группе1. USER_IN_GROUP В жизни существует Юзер1 в группе1 с 1 янв. по 20 фев. и в группе 2 с 21 фев по 31 мая. User_Id, Group_Id, Date_from,Date_to PK будет уже минимум три поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2018, 15:22 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2018, 15:31 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2018, 16:28 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Ivan DurakВ вакууме соществует Юзер1 в группе1. USER_IN_GROUP В жизни существует Юзер1 в группе1 с 1 янв. по 20 фев. и в группе 2 с 21 фев по 31 мая. В жизни можно набрать воды в ванную, залезть туда, помыться, сразу там же помыть посуду и кофейку заварить в этой же воде. Сколько живу, до сих пор поражают до глубины души люди, обожающие смешать мух с котлетами и с удовольствием чавкать. Какая проблема вести историю, аудит отдельно? Если не религия, то отсутствие способности к мышлению ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2018, 21:14 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVosttIvan DurakВ вакууме соществует Юзер1 в группе1. USER_IN_GROUP В жизни существует Юзер1 в группе1 с 1 янв. по 20 фев. и в группе 2 с 21 фев по 31 мая. В жизни можно набрать воды в ванную, залезть туда, помыться, сразу там же помыть посуду и кофейку заварить в этой же воде. Сколько живу, до сих пор поражают до глубины души люди, обожающие смешать мух с котлетами и с удовольствием чавкать. Какая проблема вести историю, аудит отдельно? Если не религия, то отсутствие способности к мышлению Если бы не отчеты и документы, то было бы все замечательно. А так приходится "изгаляться", чтобы отчет на дату показывал, что было тогда, а не непонятно что. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2018, 05:38 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVostt, В жизни можно набрать воды в ванную, залезть туда, помыться, сразу там же помыть посуду и кофейку заварить в этой же воде. Ключевое тут "в этой же воде" По сути вы предлагаете тащить к дому минимум три водопровода с одной и той же водой - отдельно на помыться, отдельно на посудомойку, отдельно на какаю, а если еще какая потребность вылезет, то наши руки не для скуки. Любой каприз лечится тупо новыми таблицами без ключей и связей и это все под флагом "ничего лишнего". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2018, 13:18 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
mad_nazgulЕсли бы не отчеты и документы, то было бы все замечательно. А так приходится "изгаляться", чтобы отчет на дату показывал, что было тогда, а не непонятно что. Не понятно, о чём конкертно говорим, давайте на примерах? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2018, 23:36 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
с какой стороны смотретьПо сути вы предлагаете тащить к дому минимум три водопровода с одной и той же водой - отдельно на помыться, отдельно на посудомойку, отдельно на какаю, а если еще какая потребность вылезет, то наши руки не для скуки. Любой каприз лечится тупо новыми таблицами без ключей и связей и это все под флагом "ничего лишнего". Ну технически, во многих домах именно так и есть. В ванной один кран, на кухне два: один посуды мыть, другой с чистой питьевой водой. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2018, 23:39 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVostt, Ну технически, во многих домах именно так и есть. В ванной один кран, на кухне два: один посуды мыть, другой с чистой питьевой водой. И это называется разводка, - использование одного подключения воды к дому для многих целей, еще раз акцентирую вашу же ключевую мысль "одна и та же вода". В вашем примере после принятия ванны, в ванне - уже другая вода, после мытья в ней посуды - это уже третья вода, пример ваш не совсем был к месту ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2018, 23:57 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
с какой стороны смотретьИ это называется разводка, - использование одного подключения воды к дому для многих целей, еще раз акцентирую вашу же ключевую мысль "одна и та же вода". В вашем примере после принятия ванны, в ванне - уже другая вода, после мытья в ней посуды - это уже третья вода, пример ваш не совсем был к месту Открою вам секрет, ключевая мысль с водой никак не связана. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 13:57 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVostt, ну тогда, в том посте вообще нет ни одной ключевой мысли, просто лишний пост, с горяча ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 18:36 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
с какой стороны смотретьhVostt, ну тогда, в том посте вообще нет ни одной ключевой мысли, просто лишний пост, с горяча Ключевая мысль простая: разделяй и властвуй. Нехрен в одну таблицу пихать разные по смыслу данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 09:21 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVosttКлючевая мысль простая: разделяй и властвуй. Нехрен в одну таблицу пихать разные по смыслу данные.ОК. Встречный вапроз: Нахрен создавать для каждого "смысла" отдельную таблицу ? Допустим этих "смыслов" многие сотни. Н-р параметры товаров в магазине техники. Только у смартфона их неск. десятков. А в итоге - многие тысячи. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 10:29 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
LSVНахрен создавать для каждого "смысла" отдельную таблицу ? Допустим этих "смыслов" многие сотни. Н-р параметры товаров в магазине техники. Только у смартфона их неск. десятков. А в итоге - многие тысячи. Не вижу никаких разных смыслов. В таблице "Товары" хранятся товары. Если наборы характеристик разные, решается несколькими способами, от EAV, до XML/JSON/P. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 11:06 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVosttLSVНахрен создавать для каждого "смысла" отдельную таблицу ? Допустим этих "смыслов" многие сотни. Н-р параметры товаров в магазине техники. Только у смартфона их неск. десятков. А в итоге - многие тысячи. Не вижу никаких разных смыслов. В таблице "Товары" хранятся товары. Если наборы характеристик разные, решается несколькими способами, от EAV, до XML/JSON/P. вы, товарищ, как я понимаю, хотите иметь и таблицу связи: user_id, group_id и отдельно к ней таблицу истории, вида user_id, group_id (эти поля FK на первую таблицу), date_from, date_to Я ничего не перепутал? Такая задумка да?? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 17:53 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Ivan DurakЯ ничего не перепутал? Такая задумка да?? Вариантов хранить историю отдельно -- много. Вам все привести, или сами нагуглите? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 13:36 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVosttIvan DurakЯ ничего не перепутал? Такая задумка да?? Вариантов хранить историю отдельно -- много. Вам все привести, или сами нагуглите? ok. Будем считать это за подтверждение. Теперь следующий вопрос: Будете ли вы хранить в первой таблице (user_id, group_id) связи для уже устаревших групп?? тех которые не актуальны??? Если нет - на что тогда ссылаться таблице с историей?? FK то у нее есть. Если да - как же тогда отличить в таблице связей актуальную связь от неактуальной? Придется для ЛЮБОГО построения связей еще и в таблицу истории лазить, так? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 15:51 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Ivan Durak, Ivan DurakБудете ли вы хранить в первой таблице (user_id, group_id) связи для уже устаревших групп?? Нет. Ivan Durakтех которые не актуальны??? Нет. Ivan DurakЕсли нет - на что тогда ссылаться таблице с историей?? FK то у нее есть. У исторических таблиц ФК на исторические таблицы. Ivan DurakЕсли да - как же тогда отличить в таблице связей актуальную связь от неактуальной? Придется для ЛЮБОГО построения связей еще и в таблицу истории лазить, так? Вот именно для того, чтобы не ипсти никому мозг, и не изворачиваться ужом, чтобы построить банальнейшие запросы, надо всё лишнее из актуальных таблиц убрать. И поберечь нервы других разработчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 16:07 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
hVosttУ исторических таблиц ФК на исторические таблицы. WAT ?????? Боюсь вы страшно далеки от реального датамоделинга ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2018, 22:40 |
|
Стоит ли делать отдельное поле для PK?
|
|||
---|---|---|---|
#18+
Ivan DurakhVosttУ исторических таблиц ФК на исторические таблицы. WAT ?????? Боюсь вы страшно далеки от реального датамоделинга Вы видимо нормального датамоделинга в глаза не видели, отсюда такие смешные заявления. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2018, 01:14 |
|
|
start [/forum/topic.php?all=1&fid=32&tid=1540075]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
108ms |
get tp. blocked users: |
2ms |
others: | 235ms |
total: | 563ms |
0 / 0 |