powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Так ли необходим уникальный ключ в зависимой таблице.
25 сообщений из 36, страница 1 из 2
Так ли необходим уникальный ключ в зависимой таблице.
    #37925145
аффтор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только что возник спор с "арихитектором", делать или нет ключ(ID) в зависимой таблице. Он утверждает что нафиг ненужно. А доводов за то что бы "делать" особо нет. Но мне разработчику так понятней. что есть ключ (ID) в таблице .. ну скажем ORDERS, есть ссылка на него из ORDER_ITEMS. И как бы уникальный ключ (ID) в таблице ORDER_ITEMS не нужен.
Архитектор аппелирует к тому что в ORDER_ITEMS уникальность соблюдается по двум полям ORDER_ID и GOOD_ID и этого как бы вполне достаточно.

Существуют ли доводы за то что бы использовать уникальный ключ в зависимой таблице и так ли он необходим?
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925171
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Только что возник спор с "арихитектором", делать или нет ключ(ID) в зависимой
> таблице. Он утверждает что нафиг ненужно. А доводов за то что бы "делать" особо
> нет. Но мне разработчику так понятней. что есть ключ (ID) в таблице .. ну скажем
> ORDERS, есть ссылка на него из ORDER_ITEMS. И как бы уникальный ключ (ID) в
> таблице ORDER_ITEMS не нужен.

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

> Архитектор аппелирует к тому что в ORDER_ITEMS уникальность соблюдается по двум
> полям ORDER_ID и GOOD_ID и этого как бы вполне достаточно.

он прав.

> Существуют ли доводы за то что бы использовать уникальный ключ в зависимой
> таблице и так ли он необходим?

Однозначных доводов нет. Поищи на эту тему, в принципе перетералось не раз.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925194
аффтор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>В смысле в подчинённой таблице есть уже уникальный ключ, вводить ли помимо него ещё один суррогатный ?

Ключа нет. Есть только Forein Key ссылающийся на родительскую таблицу, и свойство ID товара.
В паре эти два поля дают уникальность записей.
С этим я могу согласиться, что этого достаточно.

Еще одно утверждение которое я забыл написать, оно наверно главное: в дочерней таблице нельзя делать Primary Key даже по этим двум полям.
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925234
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аффторв дочерней таблице нельзя делать Primary Key даже по этим двум полям.
А это-то ещё почему?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925242
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аффторАрхитектор аппелирует к тому что в ORDER_ITEMS уникальность соблюдается по двум полям ORDER_ID и GOOD_ID и этого как бы вполне достаточно.Плохой пример. Ваш архитектор никогда не видел накладных с одним товаром в двух строчках? да еще с разными ценами (т.е. принудительно объединить нельзя)?
Первичный ключ тем-то и хорош, что может быть искусственным и позволяет не закладываться на неизменность внешнего мира или его модели в ТЗ.
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925311
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovаффторв дочерней таблице нельзя делать Primary Key даже по этим двум полям.
А это-то ещё почему?

Например, потому, что этот же товар может продаваться по другой цене:)
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925317
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аффторТолько что возник спор с "арихитектором", делать или нет ключ(ID) в зависимой таблице. Он утверждает что нафиг ненужно. А доводов за то что бы "делать" особо нет. Но мне разработчику так понятней. что есть ключ (ID) в таблице .. ну скажем ORDERS, есть ссылка на него из ORDER_ITEMS. И как бы уникальный ключ (ID) в таблице ORDER_ITEMS не нужен.
Архитектор аппелирует к тому что в ORDER_ITEMS уникальность соблюдается по двум полям ORDER_ID и GOOD_ID и этого как бы вполне достаточно.

Существуют ли доводы за то что бы использовать уникальный ключ в зависимой таблице и так ли он необходим?
Абсолютно необходим, так как Вам только кажется, что таблица "зависимая":) Таблицы совершенно равноправные, не говоря уже о том, что, в Вашей терминологии, таблица может стать "главной", если, например, потребуется детализация записи (партионный учет и др. причины). Ваша главная проблема - использование какого-то странного продукта вместо СУБД. СУБД - это такой программный продукт, в котором автоматически поддерживаются идентификаторы, не являющиеся характеристиками объекта (полями таблицы, в Вашей терминологии).
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925408
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аффтор Ключа нет . Есть только Forein Key ссылающийся на родительскую таблицу, и свойство ID товара.
В паре эти два поля дают уникальность записей .Так есть ключ или нет? Или два поля дают уникальность записей, потому что приложение данные правильно записывет? Или нет ключа, но есть уникальный констрейн?
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925440
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Он утверждает что нафиг ненужно.

Вообще-то тупит. Не нужно, если вы имеете относительно неизменное обособленное подмножество. Например, СИ включает в себя некоторые единицы измерений. Это достаточно редкий случай, здесь необходима только уникальность пар (система измерений, единица измерений).

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

> Существуют ли доводы

Разумеется. Самостоятельно сможете сформулировать?
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925515
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аффтор.........

Существуют ли доводы за то что бы использовать уникальный ключ в зависимой таблице и так ли он необходим?

У меня был дед, старый шахтёр, так он в багажнике своего жигулёнка всегда возил много всякого "ненужного" барахла. В самый неподходящий момент, где-нибудь в тайге, когда у нас или попутчиков возникали проблемы, он тяжело сопя лез в свой багажник и доставал одну из "ненужных" вещей, которая решала все проблемы.
Уникальный суррогатный ключ в таблице - это как раз та "ненужная" вешь, которая рано или поздно поможет.
Попробую проиллюстрировать. Предположим, Вы сделали, как захотел ваш архитектор, удовлетворились составным ключом в "подчинённой" таблице (слово подчинённая а кавычках, поскольку, как верно заметил Бредятина, подчинённость только в голове).
Через какое-то время вполне может возникнуть потребность в "подчинённой" таблице к вашей "подчинённой". Как тогда будете ссылаться, SELECT'том через два поля?
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925571
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аффторКлюча нет. Есть только Forein Key ссылающийся на родительскую таблицу, и свойство ID товара.
В паре эти два поля дают уникальность записей.
С этим я могу согласиться, что этого достаточно.


Чтобы они дали уникальность - надо об этом предупредить СУБД: объявить их ключем (т.е. сказать что они уникальны). Возможно, в некоторых СУБД это называется не ключем (уникальный индекс или еще как), но в теории РБД это называется ключем. Иначе одно и тоже можно занести в БД много раз. Суррогатный ключ, тоже не мешает нарушить уникальность других, которые должны быть уникальными: т.е. ключей в одной табле может быть несколько в общем случае. Если один тока суррогат записи, то что помешает внести одну и туже сущность нескока раз с разными ID?

Т.е., возиможно, в вашем случае следует оба ключа отъюзать. У вас нет показаний к ID эту таблу из-за отсутсвия у нее дочерних, а не наличия других уникальных. Но ради единообразия стиля. Это вседа содержит надежду на возможное упрощение как на этапе разработки и сопровождения
Например, в приложении в каких-то ситуациях запомнить запись по такому суррогату проще, поскольку уже многократно применялось. Ить он не меняется, а остальные то могли измениться в транзакции: поменяли порядок или отнесли к дугому товару.
ID таблы, то врядли поменяется када либо.
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925577
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имелоось в виду единообразие стиля: раз уже есть такие суррогаты у некотоых табл, то если они будут у всех, то стиль более однобразый, чем в разных таблах разые подходы.
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925654
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11... Через какое-то время вполне может возникнуть потребность в "подчинённой" таблице к вашей "подчинённой". Как тогда будете ссылаться, SELECT'том через два поля?
Еще один простой пример "подчиненной таблицы" - Бухгалтерские проводки:)
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925676
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
иногда важен порядок строк, вот номер строки + ссылка на главную таблицу и будет ключом таким
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925844
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11Как тогда будете ссылаться, SELECT'том через два поля?
А что, у какой-то СУБД с этим есть проблемы?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925988
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Ключа нет. Есть только Forein Key ссылающийся на родительскую таблицу, и
> свойство ID товара.
> В паре эти два поля дают уникальность записей.

Вот это и есть ключ.

> Еще одно утверждение которое я забыл написать, оно наверно главное: в дочерней
> таблице нельзя делать Primary Key даже по этим двум полям.

наоборот, НУЖНО. В любой таблице должнен быть PK.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925991
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Первичный ключ тем-то и хорош, что может быть искусственным и позволяет не
> закладываться на неизменность внешнего мира или его модели в ТЗ.

Первичный ключ тем хорош, что идентифицирует запись в таблице.
А тот, кто хорош тем, что ты назвал, это суррогатный первычный ключ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37925995
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>
> Абсолютно необходим, так как Вам только кажется, что таблица "зависимая":)
> Таблицы совершенно равноправные, не говоря уже о том, что, в Вашей терминологии,
> таблица может стать "главной", если, например, потребуется детализация записи

Ну, как говорится, дальше пошла Бредятина...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37926000
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Т.е., возиможно, в вашем случае следует оба ключа отъюзать. У вас нет показаний
> к ID эту таблу из-за отсутсвия у нее дочерних, а не наличия других уникальных.
> Но ради единообразия стиля. Это вседа содержит надежду на возможное упрощение
> как на этапе разработки и сопровождения
> Например, в приложении в каких-то ситуациях запомнить запись по такому суррогату
> проще, поскольку уже многократно применялось. Ить он не меняется, а остальные то
> могли измениться в транзакции: поменяли порядок или отнесли к дугому товару.
> ID таблы, то врядли поменяется када либо.


Про деда -- очень хорошо! Но вы все тут путаете свойства PK и суррогатного
PK. Ну и доводы типа "ради единообразия стиля" -- как-то ненаучно выглядит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37926009
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Имелоось в виду единообразие стиля: раз уже есть такие суррогаты у некотоых
> табл, то если они будут у всех, то стиль более однобразый, чем в разных таблах
> разые подходы.

Например ещё это лишнее поле, которое занимает место, 4-8 байт, а если таблица
по миллиарду записей ? 4 гига навыброс ? А ведь это 4-8-16 фильмов...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37926018
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНапример ещё это лишнее поле, которое занимает место, 4-8 байт, а если таблица
по миллиарду записей ? 4 гига навыброс ? А ведь это 4-8-16 фильмов...измерять объём БД в фильмах - это очень нОучно...
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37926025
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНапример ещё это лишнее поле, которое занимает место, 4-8 байт, а если таблица по
миллиарду записей ? 4 гига навыброс ? А ведь это 4-8-16 фильмов...

Правильно. Поэтому на вопрос "нет места на винте, как сжать базу" я всегда отвечаю "оставь
базу в покое, лучше порнушку сотри".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37926430
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
>
> Абсолютно необходим, так как Вам только кажется, что таблица "зависимая":)
> Таблицы совершенно равноправные, не говоря уже о том, что, в Вашей терминологии,
> таблица может стать "главной", если, например, потребуется детализация записи

Ну, как говорится, дальше пошла Бредятина...

Растете, но очень медленно:) В данном случае больно уж элементарные вещи не понимаете:)
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37926441
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv... Но вы все тут путаете свойства PK и суррогатного
PK.
Существенная неточность - при такой формулировке перед первым PK так же нужно употреблять прилагательное:)
...
Рейтинг: 0 / 0
Так ли необходим уникальный ключ в зависимой таблице.
    #37926457
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv> Имелоось в виду единообразие стиля: раз уже есть такие суррогаты у некотоых
> табл, то если они будут у всех, то стиль более однобразый, чем в разных таблах
> разые подходы.

Например ещё это лишнее поле, которое занимает место, 4-8 байт, а если таблица
по миллиарду записей ? 4 гига навыброс ? А ведь это 4-8-16 фильмов...

Это проблема "реляционных систем". В СУБД это вообще не поле. Так же полезно посмотреть на физические записи в "реляционных системах" для лучшего понимания:)
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Так ли необходим уникальный ключ в зависимой таблице.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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