powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Избавится от циклов в структуре БД.
21 сообщений из 46, страница 2 из 2
Избавится от циклов в структуре БД.
    #38454364
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyHawkmoonУ меня лично так: первичный ключ всегда ID, все внешние ключи к другим таблицам в этой таблице - ТаблицаID.

Аналогично.

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

В результате пришел к нотации:

Все PK - Id
Все ForeignKey: TableId
Все остальные поля: по смыслу, например, LastUpdate, DateOfReg и так далее
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38454377
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyАлексей КА если смотреть шире - поле ID в представлении должно браться из центральной таблицы "звёздочки" (корень агрегации). На эту центральную таблицу должно указывать имя представления. Так что мимо...Должно, значит. Аж дважды должно. Получается, ты заменяешь одно интуитивное правило двумя другими не интуитивными.

А будет объяснение, почему CustomerID хуже id?
Будет. Я убираю избыточность:
Код: sql
1.
2.
3.
4.
5.
select c.ID from Customers c

vs

select c.CustomerID from Customers c

По псевдониму таблицы в запросе и так понятно, к какой таблице относится данное поле. Накой мне в запросе два раза писать имя таблицы, к которой относится данное поле?

AntonariyПонимаешь, мне часто дают разные базы с указанием перелить инфу в нашу. Как правило у этих баз нет никакой документации, и в их структуре никто не разбирается. Так вот разобрать базу, в которой ключевые поля называются CustomerID, на порядок проще, чем id. А если в ней нет даже связей между таблицам (а это не редкость, взять хотя бы широко распространенную библиотечную базу МАРК-SQL), или база предоставляется в виде прилинкованного сервера, где есть разрешения только на селекты, то еще сложнее.И что это меняет?

AntonariyАлексей КА мне пофиг, из какой таблицы берётся поле, если я смотрю на контракт представления.То есть ты смотришь с точки зрения клиентского быдлокодера, не занимающегося разработкой БД. В принципе, на этом можно обсуждение закончить.Утипутимоязайка... Ты у нас типа субдист старой закалки... Ну ну... :-)
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38454433
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Все было идеально, за исключением случаев, когда джойн таблицы был с ней же самой. Это запутывало ситуацию, т.к. два алиаса имели полностью одинаковые имена полей (и, естественно, ключей)А если изменить поле с таблицаID на просто ID, то эта ситуация будет менее запутанной?

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

Алексей КИ что это меняет?Всё.
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38454451
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarisчего хочет Таня....?как видно из ответов - срача о наименовании полей
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38454469
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА если изменить поле с таблицаID на просто ID, то эта ситуация будет менее запутанной?

Разумеется:

Код: sql
1.
select parent.Id, child.Id



vs

Код: c#
1.
select parent.CustomerId, child.CustomerId
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38454478
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,

Без расшифровки алиасов стало непонятно, что это за id. Других отличий в плане запутанности не вижу.
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38454743
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если id нужны для представления то )
Код: sql
1.
2.
3.
4.
5.
select c.ID As CustomerID, p.ID As ProductID From

vs

select c.CustomerID, p.ProductID From
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38454833
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyИначе я не вижу смысла в этой еврейской экономии на буквах — за меня среда разработки буквы подставляет.
Большая проблема состоит из множества маленьких. Это как раз одна из тех маленьких проблем. Избыточность - это всегда плохо. Её добавляют от безысходности, только в крайнем случае. А это не тот случай.
AntonariyЛучше мизерная избыточность в этом одном случае, чем информационная недостаточность, пожирающая время, в куче других.Нет никакой недостаточности. Она только в твоём сознании.
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38454853
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tanya_0306,

Если в структуре БД такие циклы, значит БД спроектирована неправильно. Пока не поздно пересмотрите.
Потом всё будет гораздо хуже.
Что-бы не быть голословным, попробую помочь.
1. в путевом листе Вы храните информацию о товаре. Замечательно.
А теперь предположите, что в машину положили не одно наименование товара, а например, два. Реально?
Реально!
И что будете делать? Срочно создавать поля Nomenclature1, Measurement1 и т.д.?

2.Что можно сделать:

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

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

Итого у Вас будет 4 таблицы для случая, что Вы представили:
Журнал путевых листов
Записи путевого листа
Справочник номенклатуры
Справочник ед. измерения

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

Сравним один и тот-же запрос:

Код: plsql
1.
2.
1. select * from Waybills w, WaybillRecords wr where w.id=wr.Waybills
2. select * from Waybills w, WaybillRecords wr where w.Waybillsid=wr.Waybillsid




Во втором случае я точно знаю, что правильно связал две таблицы по ключевому полю, т.к. с левой и правой части знака "=" находится одинаковое название "Waybillsid" и пишу этот запрос на "автомате".
В первом-же случае, мне нужны определённые умственные усилия, меня терзают сомнения, а правильно-ли я связал эти таблицы,действительно-ли поле "id" соответствует полю "Waybills"?
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38454863
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11Во втором случае я точно знаю, что правильно связал две таблицы по ключевому полю, т.к. с левой и правой части знака "=" находится одинаковое название "Waybillsid" и пишу этот запрос на "автомате".
В первом-же случае, мне нужны определённые умственные усилия, меня терзают сомнения, а правильно-ли я связал эти таблицы,действительно-ли поле "id" соответствует полю "Waybills"?От этих проблем спасают LINQ2SQL (или другой ORM) и ассоциации.
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38458937
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К...От этих проблем спасают LINQ2SQL (или другой ORM) и ассоциации.Не ORM-ом единым жив человек...

По теме: Покуда Таня не даст более подробную информацию о связях таблиц, все здешние споры - всего-лишь споры.
Налицо корявость в проектировании базы данных...(IMHO).
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38464430
Tanya_0306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если не цепляться к названиям столбцов. Вот упрощу и приведу пример базы из трех таблиц
Номенклатура, Ед.измерения, Накладная.

По названиям полей вроде понятно как они связанны.
На мой взгляд зацикливания по полям нет. Но каскадное обновление обновление настроить не удается.
Как это обойти??

В номенклатуре есть Ед.Изм. И в Накладной есть Ед.Измерения.
Значения может не совпадать.
В других системах 1с и навижен такого рода связи без ошибок создаются. Почему в SQL не проходят???
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38465434
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tanya_0306Почему в SQL не проходят???
А кто сказал, что не проходят?
DDL в студию
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38465535
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Tanya_0306

Связь между таблицами Ед.Изм и накладная лишняя
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38465540
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Если Поля именуются TableId то в построителе запросов нужные связи делаются автоматически
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38465565
Зайцев Фёдор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Связь между таблицами Ед.Изм и накладная лишняя
Лишняя не связь, а само поле )
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38465606
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Зайцев ФёдорCat2Связь между таблицами Ед.Изм и накладная лишняя
Лишняя не связь, а само поле )
Да, конечно
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38465668
Tanya_0306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделала через промежуточную таблицу связь"многие- ко многим". Работает.
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38465734
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Tanya_0306Сделала через промежуточную таблицу связь"многие- ко многим". Работает.
Где?
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38465835
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Связь работает?
...
Рейтинг: 0 / 0
Избавится от циклов в структуре БД.
    #38465975
Tanya_0306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Да. Обновляется все нормально.
...
Рейтинг: 0 / 0
21 сообщений из 46, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Избавится от циклов в структуре БД.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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