|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Нужен дельный совет. Как обновлять поле Measurement в таблице Waybills? Каскадное обновление не возможно, из-за циклических ссылок. Выкинуть это поле из таблицы нельзя. Так как Mesurement в таблице Nomenclature Waybills могут не совпадать. Вижу только один выход - написать триггер "При изменение в таблице Mesurement" и программно прописать изменения в Waybills. Но может есть еще какие варианты?? Поделитесь .... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 10:08 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Tanya_0306, это не относится к .NET ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:03 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Я бы руки отрывал за такие наименования id-полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:04 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
если поле measurement есть в таблице nomenclature, то нафига оно в waybills? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:05 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
measurement это литры/килограммы/метры или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:09 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Pallarisесли поле measurement есть в таблице nomenclature, то нафига оно в waybills?Такое бывает. Например, по нормативу некий строительный материал измеряется в тоннах, а в прайс-листе какой-нибудь конторы он в килограммах. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:13 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Ну да. Тогда чего хочет Таня, о каком обновлении речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:23 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyЯ бы руки отрывал за такие наименования id-полей.Нормальное именование. "Я бы руки отрывал" за именование ключей в стиле CustomerID, OrderID и т. п. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:23 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Tanya_0306Как обновлять поле Measurement в таблице Waybills? Каскадное обновление не возможно, из-за циклических ссылок.Накой тут каскадное обновление? Поле Measurements.Id может изменяться? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:25 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Алексей КAntonariyЯ бы руки отрывал за такие наименования id-полей.Нормальное именование. "Я бы руки отрывал" за именование ключей в стиле CustomerID, OrderID и т. п.Да ну? Ну скажи, к какой таблице относится каждое из полей: id id id ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:30 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Или попробуй догадаться, не заглядывая в начало топика, какие поля тут являются внешними ключами. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:33 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyАлексей Кпропущено... Нормальное именование. "Я бы руки отрывал" за именование ключей в стиле CustomerID, OrderID и т. п.Да ну? Ну скажи, к какой таблице относится каждое из полей: id id id ?Вопрос в отрыве от контекста не имеет смысла. Требуется уточнение вопроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:35 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyИли попробуй догадаться, не заглядывая в начало топика, какие поля тут являются внешними ключами.Мы говорим про первичные ключи. Причём тут внешние? Не нужно уходить от темы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:35 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Алексей КAntonariyпропущено... Да ну? Ну скажи, к какой таблице относится каждое из полей: id id id ?Вопрос в отрыве от контекста не имеет смысла. Требуется уточнение вопроса.В этом и проблема. Никаких уточнений не потребовалось бы, если бы они назывались WaybillsID, MeasurementID и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:39 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Алексей КAntonariyИли попробуй догадаться, не заглядывая в начало топика, какие поля тут являются внешними ключами.Мы говорим про первичные ключи. Причём тут внешние? Не нужно уходить от темы.При том, что внешние будут назваться точно так же и однозначно указывать на таблицу с первичными. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:40 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyАлексей Кпропущено... Вопрос в отрыве от контекста не имеет смысла. Требуется уточнение вопроса.В этом и проблема. Никаких уточнений не потребовалось бы, если бы они назывались WaybillsID, MeasurementID и т.д.Ты работаешь с полями в отрыве от таблицы? Что за бред. Приведи жизненную ситуацию, где именование первичных ключей в стиле ID мешает жить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:42 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Алексей КAntonariyпропущено... В этом и проблема. Никаких уточнений не потребовалось бы, если бы они назывались WaybillsID, MeasurementID и т.д.Ты работаешь с полями в отрыве от таблицы? Что за бред. Приведи жизненную ситуацию, где именование первичных ключей в стиле ID мешает жить.Это — представление. Как ты узнаешь, к какой таблице относится поле ID, не заглядывая в его код? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 11:50 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyАлексей Кпропущено... Ты работаешь с полями в отрыве от таблицы? Что за бред. Приведи жизненную ситуацию, где именование первичных ключей в стиле ID мешает жить.Это — представление. Как ты узнаешь, к какой таблице относится поле ID, не заглядывая в его код?А мне пофиг, из какой таблицы берётся поле, если я смотрю на контракт представления. Представление - это абстракция, которая скрывает реализацию. А если смотреть шире - поле ID в представлении должно браться из центральной таблицы "звёздочки" (корень агрегации). На эту центральную таблицу должно указывать имя представления. Так что мимо... Ещё варианты будут? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 12:06 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Алексей КА если смотреть шире - поле ID в представлении должно браться из центральной таблицы "звёздочки" (корень агрегации). На эту центральную таблицу должно указывать имя представления. Так что мимо...Должно, значит. Аж дважды должно. Получается, ты заменяешь одно интуитивное правило двумя другими не интуитивными. Алексей КЕщё варианты будут?А будет объяснение, почему CustomerID хуже id? Понимаешь, мне часто дают разные базы с указанием перелить инфу в нашу. Как правило у этих баз нет никакой документации, и в их структуре никто не разбирается. Так вот разобрать базу, в которой ключевые поля называются CustomerID, на порядок проще, чем id. А если в ней нет даже связей между таблицам (а это не редкость, взять хотя бы широко распространенную библиотечную базу МАРК-SQL), или база предоставляется в виде прилинкованного сервера, где есть разрешения только на селекты, то еще сложнее. Алексей КА мне пофиг, из какой таблицы берётся поле, если я смотрю на контракт представления.То есть ты смотришь с точки зрения клиентского быдлокодера, не занимающегося разработкой БД. В принципе, на этом можно обсуждение закончить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 12:34 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyАлексей Кпропущено... Нормальное именование. "Я бы руки отрывал" за именование ключей в стиле CustomerID, OrderID и т. п.Да ну? Ну скажи, к какой таблице относится каждое из полей: id id id ? И чем этот вопрос "страшней" вопроса - Ну скажи, к какой таблице относится каждое из полей: CustomerID CustomerID CustomerID ? Более того, в первом случае мы хоть знаем, что это ПК, во втором случае и этого не знаем: AntonariyПри том, что внешние будут назваться точно так же и однозначно указывать на таблицу с первичными. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 12:35 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
LRAntonariyпропущено... Да ну? Ну скажи, к какой таблице относится каждое из полей: id id id ? И чем этот вопрос "страшней" вопроса - Ну скажи, к какой таблице относится каждое из полей: CustomerID CustomerID CustomerID ? Более того, в первом случае мы хоть знаем, что это ПК, во втором случае и этого не знаем: AntonariyПри том, что внешние будут назваться точно так же и однозначно указывать на таблицу с первичными.Мы говорим вообще-то о первичном ключе. Если он во всех таблицах называется id (см первый пост), мой вопрос имеет право на существование. Если он он во всех таблицах называется CustomerID, то автор базы упорот. Если же задать вопрос в виде "в какой таблице CustomerID является первичным ключем" или "на какую таблицу ссылается внешний ключ CustomerID", то ответ очевиден. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 12:43 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyМы говорим вообще-то о первичном ключе. Если он во всех таблицах называется id (см первый пост), мой вопрос имеет право на существование. Если он он во всех таблицах называется CustomerID, то автор базы упорот. Если же задать вопрос в виде "в какой таблице CustomerID является первичным ключем" или "на какую таблицу ссылается внешний ключ CustomerID", то ответ очевиден. У меня лично так: первичный ключ всегда ID, все внешние ключи к другим таблицам в этой таблице - ТаблицаID. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 12:49 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
LRБолее того, в первом случае мы хоть знаем, что это ПКВ какой таблице id является первичным ключом? Во всех. Офигенно полезный ответ. Сравниваем с MesurementID — ответ искать не надо. LR во втором случае и этого не знаем:Mesurement это внешний ключ или просто поле? Х.з., авось найдем таблицу с подходящим по смыслу наименованием. Или раскурим отношения (если есть). Сравниваем с MesurementID — ответ искать не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 12:52 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
HawkmoonУ меня лично так: первичный ключ всегда ID, все внешние ключи к другим таблицам в этой таблице - ТаблицаID.Это еще туда-сюда. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 12:55 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyМы говорим вообще-то о первичном ключе. Если он во всех таблицах называется id (см первый пост), мой вопрос имеет право на существование.Ну и я говорю о первичном ключе, "при том, что внешние будут назваться точно так же и однозначно указывать на таблицу с первичными." AntonariyЕсли же задать вопрос в виде "в какой таблице CustomerID является первичным ключем" или "на какую таблицу ссылается внешний ключ CustomerID", то ответ очевиден.Аналогичные очевидные ответы на аналогичные вопросы существуют и для наименования "ID" Вообще-то я спокойно отношусь и к первому и ко второму варианту, но сам предпочитаю Customer.ID вместо Customer.CustomerID ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 13:04 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyHawkmoonУ меня лично так: первичный ключ всегда ID, все внешние ключи к другим таблицам в этой таблице - ТаблицаID. Аналогично. Ранее добавлял префикс имени таблицы ко всем полям. Все было идеально, за исключением случаев, когда джойн таблицы был с ней же самой. Это запутывало ситуацию, т.к. два алиаса имели полностью одинаковые имена полей (и, естественно, ключей) В результате пришел к нотации: Все PK - Id Все ForeignKey: TableId Все остальные поля: по смыслу, например, LastUpdate, DateOfReg и так далее ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 13:16 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyАлексей КА если смотреть шире - поле ID в представлении должно браться из центральной таблицы "звёздочки" (корень агрегации). На эту центральную таблицу должно указывать имя представления. Так что мимо...Должно, значит. Аж дважды должно. Получается, ты заменяешь одно интуитивное правило двумя другими не интуитивными. А будет объяснение, почему CustomerID хуже id? Будет. Я убираю избыточность: Код: sql 1. 2. 3. 4. 5.
По псевдониму таблицы в запросе и так понятно, к какой таблице относится данное поле. Накой мне в запросе два раза писать имя таблицы, к которой относится данное поле? AntonariyПонимаешь, мне часто дают разные базы с указанием перелить инфу в нашу. Как правило у этих баз нет никакой документации, и в их структуре никто не разбирается. Так вот разобрать базу, в которой ключевые поля называются CustomerID, на порядок проще, чем id. А если в ней нет даже связей между таблицам (а это не редкость, взять хотя бы широко распространенную библиотечную базу МАРК-SQL), или база предоставляется в виде прилинкованного сервера, где есть разрешения только на селекты, то еще сложнее.И что это меняет? AntonariyАлексей КА мне пофиг, из какой таблицы берётся поле, если я смотрю на контракт представления.То есть ты смотришь с точки зрения клиентского быдлокодера, не занимающегося разработкой БД. В принципе, на этом можно обсуждение закончить.Утипутимоязайка... Ты у нас типа субдист старой закалки... Ну ну... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 13:23 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Arm79Все было идеально, за исключением случаев, когда джойн таблицы был с ней же самой. Это запутывало ситуацию, т.к. два алиаса имели полностью одинаковые имена полей (и, естественно, ключей)А если изменить поле с таблицаID на просто ID, то эта ситуация будет менее запутанной? Алексей КНакой мне в запросе два раза писать имя таблицы, к которой относится данное поле?В блокноте пишешь? Иначе я не вижу смысла в этой еврейской экономии на буквах — за меня среда разработки буквы подставляет. Лучше мизерная избыточность в этом одном случае, чем информационная недостаточность, пожирающая время, в куче других. Алексей КИ что это меняет?Всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 13:46 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Pallarisчего хочет Таня....?как видно из ответов - срача о наименовании полей ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 13:55 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyА если изменить поле с таблицаID на просто ID, то эта ситуация будет менее запутанной? Разумеется: Код: sql 1.
vs Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 14:00 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Arm79, Без расшифровки алиасов стало непонятно, что это за id. Других отличий в плане запутанности не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 14:04 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
А если id нужны для представления то ) Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 16:06 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
AntonariyИначе я не вижу смысла в этой еврейской экономии на буквах — за меня среда разработки буквы подставляет. Большая проблема состоит из множества маленьких. Это как раз одна из тех маленьких проблем. Избыточность - это всегда плохо. Её добавляют от безысходности, только в крайнем случае. А это не тот случай. AntonariyЛучше мизерная избыточность в этом одном случае, чем информационная недостаточность, пожирающая время, в куче других.Нет никакой недостаточности. Она только в твоём сознании. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 16:47 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Tanya_0306, Если в структуре БД такие циклы, значит БД спроектирована неправильно. Пока не поздно пересмотрите. Потом всё будет гораздо хуже. Что-бы не быть голословным, попробую помочь. 1. в путевом листе Вы храните информацию о товаре. Замечательно. А теперь предположите, что в машину положили не одно наименование товара, а например, два. Реально? Реально! И что будете делать? Срочно создавать поля Nomenclature1, Measurement1 и т.д.? 2.Что можно сделать: В таблице WayBills хранить только общую информацию о путевом листе: номер, дату, кем и кому выдан.Ну, если хотите, то и общий вес груза, хотя это уже не правильно. Создайте таблицу WayBillRecords, где храните информацию о том, к какому путевому листу относится запись, ссылку на товар, количество этого товара, ссылку на ед. измерения этого товара, стоимость товара и т.п. Итого у Вас будет 4 таблицы для случая, что Вы представили: Журнал путевых листов Записи путевого листа Справочник номенклатуры Справочник ед. измерения Да, и по наименованию первичных и внешних ключей. Когда я не знал, что такое SQL, я вообще не использовал первичный ключ, а если использовал,то то-же называл его Id во всех таблицах. После того, как познакомился с SQL и стал его использовать постоянно, как-то само пришло понимание, что расширенное именование полей более удобно. Сравним один и тот-же запрос: Код: plsql 1. 2.
Во втором случае я точно знаю, что правильно связал две таблицы по ключевому полю, т.к. с левой и правой части знака "=" находится одинаковое название "Waybillsid" и пишу этот запрос на "автомате". В первом-же случае, мне нужны определённые умственные усилия, меня терзают сомнения, а правильно-ли я связал эти таблицы,действительно-ли поле "id" соответствует полю "Waybills"? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 17:02 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
zeon11Во втором случае я точно знаю, что правильно связал две таблицы по ключевому полю, т.к. с левой и правой части знака "=" находится одинаковое название "Waybillsid" и пишу этот запрос на "автомате". В первом-же случае, мне нужны определённые умственные усилия, меня терзают сомнения, а правильно-ли я связал эти таблицы,действительно-ли поле "id" соответствует полю "Waybills"?От этих проблем спасают LINQ2SQL (или другой ORM) и ассоциации. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 17:07 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Алексей К...От этих проблем спасают LINQ2SQL (или другой ORM) и ассоциации.Не ORM-ом единым жив человек... По теме: Покуда Таня не даст более подробную информацию о связях таблиц, все здешние споры - всего-лишь споры. Налицо корявость в проектировании базы данных...(IMHO). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2013, 19:55 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
А если не цепляться к названиям столбцов. Вот упрощу и приведу пример базы из трех таблиц Номенклатура, Ед.измерения, Накладная. По названиям полей вроде понятно как они связанны. На мой взгляд зацикливания по полям нет. Но каскадное обновление обновление настроить не удается. Как это обойти?? В номенклатуре есть Ед.Изм. И в Накладной есть Ед.Измерения. Значения может не совпадать. В других системах 1с и навижен такого рода связи без ошибок создаются. Почему в SQL не проходят??? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2013, 08:14 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Tanya_0306Почему в SQL не проходят??? А кто сказал, что не проходят? DDL в студию ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2013, 17:37 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2013, 18:36 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Если Поля именуются TableId то в построителе запросов нужные связи делаются автоматически ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2013, 18:39 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Cat2Связь между таблицами Ед.Изм и накладная лишняя Лишняя не связь, а само поле ) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2013, 19:02 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Зайцев ФёдорCat2Связь между таблицами Ед.Изм и накладная лишняя Лишняя не связь, а само поле ) Да, конечно ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2013, 19:35 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Сделала через промежуточную таблицу связь"многие- ко многим". Работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2013, 20:37 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Tanya_0306Сделала через промежуточную таблицу связь"многие- ко многим". Работает. Где? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2013, 22:09 |
|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#18+
Связь работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2013, 00:45 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1403677]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 199ms |
0 / 0 |