|
|
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAE, можно предположить, что карты заполняются не каждый день, общее количество карт -тысячи ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 12:48 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAE softwarer AXAEА если куча большая - даже человек в сотне вещей будет перебирать практически все вещи по порядку, Да ладно тебе. Он просто развалит ее по принципу половина-направо, половина-налево и снова увидит нужное :) Но именно поэтому начиная с определенного размера кучи человек раскладывает ее по полкам в шкафу (читай - по большему количеству тех же куч). Для малоселективных критериев (а твой флаг - из таких) партиционирование - один из вариантов эффективного выбора. А на тему "не понял" - я бы советовал всерьез разобраться прежде, чем начинать серьезно работать, а до тех пор, пока не разобрался - не пытаться думать о сложных вещах, делать "так как естественнее". Да понятно... Но раз уж я взялся - работать надо(( Я делал "как естественней" - я запутался... Таблицы появляются как грибы по мере того, как появляются все новые и новые условия задачи.(( Просто здесь на предприятии никто до конца не может объяснить, что собственно надо от базы данных (причем упоминается, что сейчас одно, а завтра может быть другое), поэтому я трепыхаюсь с ее структурой... Я видел где-то здесь на форумах мысль, что таблицы с динамически изменяемым набором атрибутов не нужны, что если появляются такие мысли - предметная область не до конца определена. Я согласен с этим - если полностью определенная предметная область, то проблемы вряд ли могут быть - но считаю так: к сожалению то, что если предметная область до конца не определена - это не является уважительной причиной отказа от разработки... (( В такой ситуации поможет только бюрократия :), все требования к системе только в письменном виде как минимум с подписью специалиста из предметной области и его начальника, никчему брать на себя ответственность за предметную область. А насчет "(причем упоминается, что сейчас одно, а завтра может быть другое)" заказчик должен четко понимать что система пишется под конкретную задачу с конкретными требованиями, если требования не определены четко то SAP им в помощь :-) По поводу таблиц, как уже писали их должно быть столько сколько нужно, при сливании таблиц связи в одну решающую роль должно играть на сколько эти связи совместимы, если остальные аттрибуты и ограничения на них одинаковы то можно и слить а если разные, то ты просто не сможешь реализовать ограничения стандартными средствами СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 13:03 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAE Melaniнасколько я помню INNER в операторе Join указывает, что надо выбирать неповторяющиеся записи. Неповторяющиеся - это DISTINCT А INNER JOIN, как написано в справочниках, осуществляет полное объединение таблиц. полное объединение это ведь full join. наверное я чего-то подзабыла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 13:05 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
А что ссылочную целостность уже отменили или как вы ее собрались поддерживать с одной таблицей связей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 13:42 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEP.S. я вспомнил, почему задал этот вопрос - я где-то на форуме давно читал, что использование INNER JOIN для связки таблиц, вместо WHERE t1.id=t2.id замедляет выполнение запроса минимум в два раза. Меня это тогда поразило, так как считал, что это одно и то же.Ах вот в чем дело... Поверьте, вас ввели в заблуждение (если говорить грубее, то это написал какой-то кретин). Вы были правы, это действительно одно и то же, просто разные формы записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 14:03 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
ViktoriankaА что ссылочную целостность уже отменили или как вы ее собрались поддерживать с одной таблицей связей?Присоединяюсь. В "решении" с одной "отфлажкованной" таблицей связности не задашь декларативно внешние ключи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 14:11 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
mir ViktoriankaА что ссылочную целостность уже отменили или как вы ее собрались поддерживать с одной таблицей связей?Присоединяюсь. В "решении" с одной "отфлажкованной" таблицей связности не задашь декларативно внешние ключи. А это почему, можно примерчик? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 14:16 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Требований было меньше и все казалось простым. И я действительно один работаю... Но политики предприятия наверное здесь не стоит касаться, а то если так все рассудить - я должен буду остаться без работы.(( Есть такая глобальная проблема, которая меня все чаще беспокоит: код пишется практически один и тот же, разница только в паре строк. Например поиск по одному полю и поиск по другому полю - вроде один и тот же алгоритм, код будет похожим, но с парой измененных строк. Ладно если эти мне удастся "объединить", а если допустим в условии еще и добавится "за исключением тех, где в таком-то поле есть..." - это же еще умотаться кода будет - а алгоритм не изменится. Копируешь код, добавляешь пару строк и вот все работает.. А если так много раз сделать - запутаться запросто... Да и неприятно - один и тот же код копируешь и меняешь, добавляешь пару строк...(( А отдельная проблема на отдельном уровне и десятки тысяч таблиц... Тут дурацкая закономерность: девять к одному. Это означает, что девяносто процентов однородной информации обрабатывается одним способом, а десять - другим (это в смысле вдобавок(!!!), а не взамен, к способу обработки тех 90 процентов), и в других местах учитываются. Причем эти десять в свою очередь могут еще распадаться на 9:1 и причудливо переплетаться с вышестоящими уровнями... ((( Ну самый простой пример - очень не хочется делать таблицы с однородной информацией, где лишь в десяти строках из ста заполнено какое-то поле только потому, что эти десять строк нужно обрабатывать еще и по-другому... P.S. Выговорился... Я просто уже четыре дня не могу вообразить удовлетворяющую меня структуру базы из двух десятков таблиц. База данных с тридцатью уже есть, которая делает то же самое - но ей так неудобно управлять, изменять, модифицировать... Потому что там просто не предусматривал я этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 14:31 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEкод пишется практически один и тот же, разница только в паре строк. Например поиск по одному полю и поиск по другому полю - вроде один и тот же алгоритм, код будет похожим, но с парой измененных строк. Код у вас на сервере БД или отдельно? Сервер БД какой? Можно юзать динамические запросы для таких целей. Можно взять кодогенерилку, типа CodeSmith и настроить шаблоны для стандартных операций. Можно вообще взять какой-нибудь ORM И не заморачиваться способом хранения данных, если это вызывает такие трудности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 14:55 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEДоброго времени суток всем! Есть такой вопрос: Как сказывается на быстродействии то, что я стараюсь делать как можно меньше таблиц? Например: есть таблицы T1, T2, T3. Отношения между ними: T1#T2=M:M, T1#T3=M:M. То есть нужны еще две таблицы связей. Что лучше с точки зрения производительности: две таблицы связей или лучше иметь одну, но с флажком: в ней будет одно поле для id первой T1, затем еще одно поле - id записи одной из двух других и еще флажок, значение в котором будет показывать, какой же именно из вторых таблиц записано в таблице связей второе id? Надо стараться избегать большого количества таблиц с отношением М:М и в промежуточной таблица всегда добавлять поле с первичным ключем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 14:55 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
sergey888Надо стараться избегать большого количества таблиц с отношением М:М и в промежуточной таблица всегда добавлять поле с первичным ключем.Оба утверждения являются голословными, как минимум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 15:04 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
OraDen mir ViktoriankaА что ссылочную целостность уже отменили или как вы ее собрались поддерживать с одной таблицей связей?Присоединяюсь. В "решении" с одной "отфлажкованной" таблицей связности не задашь декларативно внешние ключи. А это почему, можно примерчик?Потому, что внешний ключ по определению ссылается на ключ конкретной таблицы. Явно указанной таблицы. И его нельзя декларативно задать так, чтобы он ссылался на ключи разных таблиц. Синтаксис: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 15:08 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
ChA sergey888Надо стараться избегать большого количества таблиц с отношением М:М и в промежуточной таблица всегда добавлять поле с первичным ключем.Оба утверждения являются голословными, как минимум.+1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 15:09 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEТребований было меньше и все казалось простым. И я действительно один работаю... Но политики предприятия наверное здесь не стоит касаться, а то если так все рассудить - я должен буду остаться без работы.(( Есть такая глобальная проблема, которая меня все чаще беспокоит: код пишется практически один и тот же, разница только в паре строк. Например поиск по одному полю и поиск по другому полю - вроде один и тот же алгоритм, код будет похожим, но с парой измененных строк. Ладно если эти мне удастся "объединить", а если допустим в условии еще и добавится "за исключением тех, где в таком-то поле есть..." - это же еще умотаться кода будет - а алгоритм не изменится. Копируешь код, добавляешь пару строк и вот все работает.. А если так много раз сделать - запутаться запросто... Да и неприятно - один и тот же код копируешь и меняешь, добавляешь пару строк...(( А отдельная проблема на отдельном уровне и десятки тысяч таблиц... Тут дурацкая закономерность: девять к одному. Это означает, что девяносто процентов однородной информации обрабатывается одним способом, а десять - другим (это в смысле вдобавок(!!!), а не взамен, к способу обработки тех 90 процентов), и в других местах учитываются. Причем эти десять в свою очередь могут еще распадаться на 9:1 и причудливо переплетаться с вышестоящими уровнями... ((( Ну самый простой пример - очень не хочется делать таблицы с однородной информацией, где лишь в десяти строках из ста заполнено какое-то поле только потому, что эти десять строк нужно обрабатывать еще и по-другому... P.S. Выговорился... Я просто уже четыре дня не могу вообразить удовлетворяющую меня структуру базы из двух десятков таблиц. База данных с тридцатью уже есть, которая делает то же самое - но ей так неудобно управлять, изменять, модифицировать... Потому что там просто не предусматривал я этого. очень интересное, интригующее, причудливое изложение ... если чесно - ничо не понял :( раскройте тему поподробнее ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 15:32 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
mirПотому, что внешний ключ по определению ссылается на ключ конкретной таблицы. Явно указанной таблицы. И его нельзя декларативно задать так, чтобы он ссылался на ключи разных таблиц. Синтаксис: Код: plaintext 1. 2. Так два же поля одно на одну таблицу ссылается, другое на другую, какие проблемы то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 15:36 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
OraDen mirПотому, что внешний ключ по определению ссылается на ключ конкретной таблицы. Явно указанной таблицы. И его нельзя декларативно задать так, чтобы он ссылался на ключи разных таблиц. Синтаксис: Код: plaintext 1. 2. Так два же поля одно на одну таблицу ссылается, другое на другую, какие проблемы то?Специально для ваc скопировал исходную постановку задачи. Жирным я выделил ключевой момент: AXAEесть таблицы T1, T2, T3. Отношения между ними: T1#T2=M:M, T1#T3=M:M. То есть нужны еще две таблицы связей. Что лучше с точки зрения производительности: две таблицы связей или лучше иметь одну, но с флажком: в ней будет одно поле для id первой T1, затем еще одно поле - id записи одной из двух других и еще флажок, значение в котором будет показывать, какой же именно из вторых таблиц записано в таблице связей второе id? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 15:40 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
mir OraDen mirПотому, что внешний ключ по определению ссылается на ключ конкретной таблицы. Явно указанной таблицы. И его нельзя декларативно задать так, чтобы он ссылался на ключи разных таблиц. Синтаксис: Код: plaintext 1. 2. Так два же поля одно на одну таблицу ссылается, другое на другую, какие проблемы то?Специально для ваc скопировал исходную постановку задачи. Жирным я выделил ключевой момент: AXAEесть таблицы T1, T2, T3. Отношения между ними: T1#T2=M:M, T1#T3=M:M. То есть нужны еще две таблицы связей. Что лучше с точки зрения производительности: две таблицы связей или лучше иметь одну, но с флажком: в ней будет одно поле для id первой T1, затем еще одно поле - id записи одной из двух других и еще флажок, значение в котором будет показывать, какой же именно из вторых таблиц записано в таблице связей второе id? Извиняюсь, я тот пост не очень внимательно прочитал, запихнуть в одно поле ссылку на все таблицы, у меня это даже в голове не укладывается... Хотя когда то давно я прикидывал что любую базу можно запихнуть всего в несколько таблиц, только работать то потом как с ней... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 15:49 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEДоброго времени суток всем! Есть такой вопрос: Как сказывается на быстродействии то, что я стараюсь делать как можно меньше таблиц? Неоднозначно сказывается. С одной стороны - пока денормализованная результирующая таблица AB небольшая (сотни тыс. строк, сотни Мб), выборка из неё быстрее, чем взятие произведения A JOIN B ON... С другой стороны - при увеличении объёма данных общий объём таблиц A и B растёт строго как A+B, а денормализованной AB - не медленнее, чем A+B, вплоть до A*B. И тут начинает иметь значение скорость дисковой подсистемы, объём ОЗУ и т.д. С третьей стороны - правильное индексирование может значительно ускорить чтение (а с четвёртой переиндексирование - замедлить изменение/добавление). С пятой стороны - поддержка целостности данных при добавлении и изменении в случае AB может потребовать дополнительных накладных расходов. С шестой стороны - есть особенности конкретных СУБД. И таких сторон - великое множество. Мой Вам совет - на занимайтесь ранней оптимизацией: старайтесь соблюдать 3НФ. AXAE Например: есть таблицы T1, T2, T3. Отношения между ними: T1#T2=M:M, T1#T3=M:M. То есть нужны еще две таблицы связей. Что лучше с точки зрения производительности: две таблицы связей или лучше иметь одну, но с флажком: в ней будет одно поле для id первой T1, затем еще одно поле - id записи одной из двух других и еще флажок, значение в котором будет показывать, какой же именно из вторых таблиц записано в таблице связей второе id? Лучше 2 таблицы связей. Одна таблица с флажком - явно значительно более сложное решение. Для поддержки целостности средствами СУБД нужно будет долго писать и поддерживать ХП вместо того, чтобы декларативно сказать что-нибудь наподобие "add constraint... references... on delete cascade on update cascade", или того проще - пару раз щёлкнуть мышкой в CASE-средстве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 15:56 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAE<...> Есть такая глобальная проблема, которая меня все чаще беспокоит: код пишется практически один и тот же, разница только в паре строк. <...> Модульность Вас спасёт! :) Если не хотите ОО модульности - используйте функциональную. AXAE <...>Копируешь код, добавляешь пару строк и вот все работает.. А если так много раз сделать - запутаться запросто... Да и неприятно - один и тот же код копируешь и меняешь, добавляешь пару строк...((<...> Copy/Paste больше двух раз нельзя. На 3-й (максимум 4-й) раз нужно выносить в отдельный модуль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 16:03 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AlexTheRavenМой Вам совет - на занимайтесь ранней оптимизацией: старайтесь соблюдать 3НФ. +1 to AXAE А то дойдете до того что нужно всего четыре таблицы - таблицу типов, таблицу объектов, таблицу связей между объектами и таблицу связей между связями и все с рекурсией )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 16:06 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Создавайте для каждой сущности предметной области отдельную таблицу и Ваши волосы будут густыми и шелковистыми :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 16:40 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
OraDenА то дойдете до того что нужно всего четыре таблицы - таблицу типов, таблицу объектов, таблицу связей между объектами и таблицу связей между связями и все с рекурсией )) Возможно, дурацкий вопрос: а почему нельзя именно так сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 17:13 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
De GuestВозможно, дурацкий вопрос: а почему нельзя именно так сделать? Сделать можно. Получите богатый опыт разработки собственной СУБД. Потратите массу времени, и, возможно, станете гуру. Но денег, скорее всего, не заработаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 19:05 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven De GuestВозможно, дурацкий вопрос: а почему нельзя именно так сделать? Сделать можно. Получите богатый опыт разработки собственной СУБД. Потратите массу времени, и, возможно, станете гуру. Но денег, скорее всего, не заработаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 19:07 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
chronAXAE, можно предположить, что карты заполняются не каждый день, общее количество карт -тысячи ? Карты заполняются каждый день, карт действительно тысячи, на них кучи диагнозов, рекомендаций, каких-то полей специализированных для обследования... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 19:15 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34443800&tid=1544621]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
150ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 432ms |

| 0 / 0 |
