|
Избавится от циклов в структуре БД.
|
|||
---|---|---|---|
#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?fid=20&msg=38454853&tid=1403677]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 186ms |
0 / 0 |