|
|
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток всем! Есть такой вопрос: Как сказывается на быстродействии то, что я стараюсь делать как можно меньше таблиц? Например: есть таблицы T1, T2, T3. Отношения между ними: T1#T2=M:M, T1#T3=M:M. То есть нужны еще две таблицы связей. Что лучше с точки зрения производительности: две таблицы связей или лучше иметь одну, но с флажком: в ней будет одно поле для id первой T1, затем еще одно поле - id записи одной из двух других и еще флажок, значение в котором будет показывать, какой же именно из вторых таблиц записано в таблице связей второе id? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 08:49 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Если свалить все свои шмотки посредине комнаты, то утром можно будет одеться значительно быстрее. Не надо лазить в шкаф. Верно до тех пор, пока шмоток не очень много. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 09:04 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Я бы не сказал что чем больше таблиц тем быстрее и наоброт, тут все зависит от задачи и что и как вы планируете выбирать/загружать потом из этих таблиц. Как всегда нужно выбрать золотую середину :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 09:15 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
То есть я так понял, что серверу значительно быстрее работать с одной таблицей связей и флажком, чем с десятком разных, но без флажка?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 09:16 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
INSERT и SELECT таблиц будет делаться на несколько порядков больше, чем UPDATE. Работа с таблицами связей, если их двое - разница невелика, меньше, чем на порядок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 09:17 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Простите. а как вы собираетесь заносить данные в таблицу связей + помечать нужные флажком?? это у вас получится?? Улыбайтесь чаще, людей это раздражает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 10:09 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEДоброго времени суток всем! Есть такой вопрос: Как сказывается на быстродействии то, что я стараюсь делать как можно меньше таблиц? Например: есть таблицы T1, T2, T3. Отношения между ними: T1#T2=M:M, T1#T3=M:M. То есть нужны еще две таблицы связей. Что лучше с точки зрения производительности: две таблицы связей или лучше иметь одну, но с флажком: в ней будет одно поле для id первой T1, затем еще одно поле - id записи одной из двух других и еще флажок, значение в котором будет показывать, какой же именно из вторых таблиц записано в таблице связей второе id?Проектировщик в последнюю очередь должен думать о количестве таблиц. В первую очередь -- о качестве проекта, о его сопровождаемости. Вопросы производительности следует решать тогда, когда это действительно необходимо. Причем для оптимизации производительности нужно обладать достаточно глубокими знаниями об особенностях работы СУБД в целом и конкретной СУБД в частности. Судя по вашему вопросу, вы начинающий проектировщик. Поэтому советую просто учиться проектировать правильно, а не пытаться дилетантски "оптимизировать" ваш проект, тем более, что я уверен на 100% -- никакой реальной проблемы производительности в вашем проекте у вас нет и не будет. IMHO, к вашему случаю отлично подходят известные слова Дональда Кнута "Premature optimization is the root of all evil". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 10:37 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEКак сказывается на быстродействии то, что я стараюсь делать как можно меньше таблиц? Скорее - плохо сказывается, хотя это изрядно бессмысленный вопрос. Его "бытовая" аналогия примерно такова - "как сказывается на безопасности движения то, что я стараюсь всегда ехать в левом ряду". Таблиц нужно делать не "как можно меньше", а "столько, сколько нужно, и не больше". В том же примере с флажком легко построить примеры ситуаций, когда каждый из ответов будет правильным. В общем случае, совершенно правильную аналогию со шмотками я бы дополнил следующей фразой: если Вы живете в комнате вдвоем с супругой, две кучи "своих" вещей как правило будут удобнее, чем одна смешанная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 10:39 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
MelaniПростите. а как вы собираетесь заносить данные в таблицу связей + помечать нужные флажком?? это у вас получится?? Улыбайтесь чаще, людей это раздражает. Получится, это ведь несложно, в таблице будут строки: id1-id-T2 {T1.id1-T2.id} - id1 - из первой таблицы, id - из второй id1-id-T3 {T1.id1-T3.id} - id1 - из первой таблицы, id - из третьей id1-id-T3 {T1.id1-T3.id} - id1 - из первой таблицы, id - из третьей id1-id-T3 {T1.id1-T3.id} - id1 - из первой таблицы, id - из третьей id1-id-T2 {T1.id1-T2.id} - id1 - из первой таблицы, id - из второй Третье поле - это флажок, показывающий, какой таблице принадлежит id2: либо T2, либо T3 Но наверное я действительно в какую-то ерунду здесь полез... P.S. я вспомнил, почему задал этот вопрос - я где-то на форуме давно читал, что использование INNER JOIN для связки таблиц, вместо WHERE t1.id=t2.id замедляет выполнение запроса минимум в два раза. Меня это тогда поразило, так как считал, что это одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 10:48 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
насколько я помню INNER в операторе Join указывает, что надо выбирать неповторяющиеся записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:17 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
если нужны таблички связей, то лучше делать их отдельно и независимо друг от друга. по-моему больше замороки с таблицей в которой есть значения из 2-х таблиц в одном поле + ещё флажок. ты замучаешься с такой организацией. Улыбайтесь чаще, людей это раздражает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:24 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Melaniнасколько я помню INNER в операторе Join указывает, что надо выбирать неповторяющиеся записи. Неповторяющиеся - это DISTINCT А INNER JOIN, как написано в справочниках, осуществляет полное объединение таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:28 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Melaniесли нужны таблички связей, то лучше делать их отдельно и независимо друг от друга. по-моему больше замороки с таблицей в которой есть значения из 2-х таблиц в одном поле + ещё флажок. ты замучаешься с такой организацией. Улыбайтесь чаще, людей это раздражает. Понятно... Спасибо. Буду разбирать тщательно собранные таблицы с флажками обратно)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:30 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
вот тебе и ответ - 2 разные кучи шмоток. одна твоя, другая твоей супруги. а живёте в одной комнате. ))) пример более, чем наглядный. Улыбайтесь чаще, людей это раздражает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:33 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Melaniвот тебе и ответ - 2 разные кучи шмоток. одна твоя, другая твоей супруги. а живёте в одной комнате. ))) пример более, чем наглядный. Улыбайтесь чаще, людей это раздражает. Ну что за пример... Я еще маленький, чтобы у меня была супруга. А кроме того - люди ведь не индексируют свои вещи)) А компьютер ведь может найти нужную запись из миллиона записей за десяток шагов)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:47 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEА кроме того - люди ведь не индексируют свои вещи)) Ошибаешься. Вещи в куче как раз хорошо проиндексированы, в небольшой куче эффективность как у хэш-индекса (увидел нужную - взял). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:51 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
softwarer AXAEА кроме того - люди ведь не индексируют свои вещи)) Ошибаешься. Вещи в куче как раз хорошо проиндексированы, в небольшой куче эффективность как у хэш-индекса (увидел нужную - взял). тем более какждая вещь уникальная и её ни с какой другой не спутаешь. на то он и пример, чтобы приводить его из реальной жизни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:53 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Поднятая тема не нова, но не мог бы автор озвучить предметную область ? Кажется, недавно я слушал подобный разговор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:55 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
softwarer AXAEА кроме того - люди ведь не индексируют свои вещи)) Ошибаешься. Вещи в куче как раз хорошо проиндексированы, в небольшой куче эффективность как у хэш-индекса (увидел нужную - взял). Это в маленькой, а у меня куча большая. Там выше пост, про то, что общая куча эффективна, пока она маленькая. А если куча большая - даже человек в сотне вещей будет перебирать практически все вещи по порядку, прежде чем найдет нужное - вот и нету индекса. Он ведь в куче не выбирает сначала все носки, потом все красные, потом левый. Он вроде схватит более или менее похожие носки, потом просмотрит их поочередно)) А вообще должен признаться, не знаю, как работают индексы. Нам показывали, как каким-то хитрым образом идет за четыре шага выборка одной записи из ста тысяч, но я пока не понял, как так получается(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:57 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
chronПоднятая тема не нова, но не мог бы автор озвучить предметную область ? Кажется, недавно я слушал подобный разговор. Предметная область - одна флажечная таблица или лучше несколько отдельных таблиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 11:58 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAE chronПоднятая тема не нова, но не мог бы автор озвучить предметную область ? Кажется, недавно я слушал подобный разговор. Предметная область - одна флажечная таблица или лучше несколько отдельных таблиц Под предметной областью имеют в виду прикладную задачу. Например: учет вещей в комнате (зверей в зоопарке/товара на складе). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 12:16 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Ginas AXAE chronПоднятая тема не нова, но не мог бы автор озвучить предметную область ? Кажется, недавно я слушал подобный разговор. Предметная область - одна флажечная таблица или лучше несколько отдельных таблиц Под предметной областью имеют в виду прикладную задачу. Например: учет вещей в комнате (зверей в зоопарке/товара на складе). У меня учет карт профосмотров... Карты пациентов, обследования на ней, атрибуты карты, атрибуты обследования, варианты заполнения атрибутов...(( Атрибуты карты и атрибуты обследования на карте, а так же варианты заполнения их - переплетаются. Я назвал сейчас две и еще две сущности - поэтому связок будет четыре... Поэтому разобью свою одну таблицу связок на четыре таблицы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 12:22 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEА если куча большая - даже человек в сотне вещей будет перебирать практически все вещи по порядку, Да ладно тебе. Он просто развалит ее по принципу половина-направо, половина-налево и снова увидит нужное :) Но именно поэтому начиная с определенного размера кучи человек раскладывает ее по полкам в шкафу (читай - по большему количеству тех же куч). Для малоселективных критериев (а твой флаг - из таких) партиционирование - один из вариантов эффективного выбора. А на тему "не понял" - я бы советовал всерьез разобраться прежде, чем начинать серьезно работать, а до тех пор, пока не разобрался - не пытаться думать о сложных вещах, делать "так как естественнее". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 12:23 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
softwarer AXAEА если куча большая - даже человек в сотне вещей будет перебирать практически все вещи по порядку, Да ладно тебе. Он просто развалит ее по принципу половина-направо, половина-налево и снова увидит нужное :) Но именно поэтому начиная с определенного размера кучи человек раскладывает ее по полкам в шкафу (читай - по большему количеству тех же куч). Для малоселективных критериев (а твой флаг - из таких) партиционирование - один из вариантов эффективного выбора. А на тему "не понял" - я бы советовал всерьез разобраться прежде, чем начинать серьезно работать, а до тех пор, пока не разобрался - не пытаться думать о сложных вещах, делать "так как естественнее". Да понятно... Но раз уж я взялся - работать надо(( Я делал "как естественней" - я запутался... Таблицы появляются как грибы по мере того, как появляются все новые и новые условия задачи.(( Просто здесь на предприятии никто до конца не может объяснить, что собственно надо от базы данных (причем упоминается, что сейчас одно, а завтра может быть другое), поэтому я трепыхаюсь с ее структурой... Я видел где-то здесь на форумах мысль, что таблицы с динамически изменяемым набором атрибутов не нужны, что если появляются такие мысли - предметная область не до конца определена. Я согласен с этим - если полностью определенная предметная область, то проблемы вряд ли могут быть - но считаю так: к сожалению то, что если предметная область до конца не определена - это не является уважительной причиной отказа от разработки... (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 12:30 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEНо раз уж я взялся - работать надо Безусловно. Хотя стоит оценить, по силам ли задача - пытаться "до последнего" поднять неподъемное тоже нехорошо. AXAEЯ делал "как естественней" - я запутался... Нормально. Но в таких ситуациях нужно быть очень аккуратным вот с какой точки зрения: если есть проблема, нужно искать, как ее "правильно" решить. Не так уж редко люди ради решения мелкой и несложной в общем-то проблемы принимают "глобально неверные" решения, закладывают глобальную кривизну. Об этом - о том, что каждую проблему нужно решать на своем уровне, не эскалировать ее - всегда нужно помнить. AXAEТаблицы появляются как грибы по мере того, как появляются все новые и новые условия задачи. Само по себе "как грибы" - нестрашно. Системы с десятками тысяч таблиц отлично работают (хотя их пишет как правило не один человек). Важно адекватно контролировать их, не создавать лишних и дублирующихся итп. AXAEПросто здесь на предприятии никто до конца не может объяснить, что собственно надо от базы данных (причем упоминается, что сейчас одно, а завтра может быть другое), поэтому я трепыхаюсь с ее структурой... Работа при определении требований на ходу - отдельная большая тема. Я бы посоветовал создать топик на эту тему в подходящем форме, например в "разработке ИС" - думаю, люди скажут очень много, в том числе и полезного, тема больная. В любом случае, главное - самому управлять процессом, не давать ему захлестывать, начинать управлять тобой. Задача решаема, две методики я могу назвать сходу, ну а вообще - читайте, оценивайте, и главное - старайтесь верно оценивать масштаб встающих проблем. То самое "как работать при меняющихся требованиях" - куда более важный вопрос, чем "сколько таблиц делать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 12:46 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
OraDen AXAE softwarer AXAEА если куча большая - даже человек в сотне вещей будет перебирать практически все вещи по порядку, Да ладно тебе. Он просто развалит ее по принципу половина-направо, половина-налево и снова увидит нужное :) Но именно поэтому начиная с определенного размера кучи человек раскладывает ее по полкам в шкафу (читай - по большему количеству тех же куч). Для малоселективных критериев (а твой флаг - из таких) партиционирование - один из вариантов эффективного выбора. А на тему "не понял" - я бы советовал всерьез разобраться прежде, чем начинать серьезно работать, а до тех пор, пока не разобрался - не пытаться думать о сложных вещах, делать "так как естественнее". Да понятно... Но раз уж я взялся - работать надо(( Я делал "как естественней" - я запутался... Таблицы появляются как грибы по мере того, как появляются все новые и новые условия задачи.(( Просто здесь на предприятии никто до конца не может объяснить, что собственно надо от базы данных (причем упоминается, что сейчас одно, а завтра может быть другое), поэтому я трепыхаюсь с ее структурой... Я видел где-то здесь на форумах мысль, что таблицы с динамически изменяемым набором атрибутов не нужны, что если появляются такие мысли - предметная область не до конца определена. Я согласен с этим - если полностью определенная предметная область, то проблемы вряд ли могут быть - но считаю так: к сожалению то, что если предметная область до конца не определена - это не является уважительной причиной отказа от разработки... (( В такой ситуации поможет только бюрократия :), все требования к системе только в письменном виде как минимум с подписью специалиста из предметной области и его начальника, никчему брать на себя ответственность за предметную область. А насчет "(причем упоминается, что сейчас одно, а завтра может быть другое)" заказчик должен четко понимать что система пишется под конкретную задачу с конкретными требованиями, если требования не определены четко то SAP им в помощь :-) По поводу таблиц, как уже писали их должно быть столько сколько нужно, при сливании таблиц связи в одну решающую роль должно играть на сколько эти связи совместимы, если остальные аттрибуты и ограничения на них одинаковы то можно и слить а если разные, то ты просто не сможешь реализовать ограничения стандартными средствами СУБД. аверное тоже стать придется бюрократом: эта система разрабатывалась как раз под такой бюрократией - три года... Пока я маленький штатный единственный программист и меня раздражают подписи - для меня лишь бы работала система... Да НИКТО(!!!) там ни в жизнь не сможет написать, что им собственно нужно и никто не будет разбираться еще минимум года два в этом. У меня нет начальника. Я сам по себе там - типа героя-одиночки. Я новичок в базах данных. Меня не интересуют деньги, меня не интересует правильность их требований - для меня лишь бы эта система работала так, чтобы удовлетворить их требования и чтобы люди имели к ней минимальное отношение в управлении ею. Пока мне нравится разработка и платят достаточные для меня деньги (а мне очень немного нужно...) - я буду заниматься этим, естественно безрезультатно... ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 19:21 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
Viktorianka AXAEкод пишется практически один и тот же, разница только в паре строк. Например поиск по одному полю и поиск по другому полю - вроде один и тот же алгоритм, код будет похожим, но с парой измененных строк. Код у вас на сервере БД или отдельно? Сервер БД какой? Можно юзать динамические запросы для таких целей. Можно взять кодогенерилку, типа CodeSmith и настроить шаблоны для стандартных операций. Можно вообще взять какой-нибудь ORM И не заморачиваться способом хранения данных, если это вызывает такие трудности. У меня код только в программе, хотя сервер MySQL (да, это сервер MySQL, который я использую в качестве промышленного, а не WEB-сервера. Потому что MySQL самая простая) я стараюсь нагрузить как можно больше: если бы не надо было форматировать документ, то я бы в SQL запрос затолкал бы вообще все отчеты полностью с простейшим форматированием - возвраты каретки, табуляции и пр... Я неопытный новичок, для меня и CodeSmith и ORM - уже что-то нереальное(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 19:26 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEПока я .. Да НИКТО(!!!) .. никто не будет .. У меня .. Я сам по себе там - типа героя-одиночки ... Я новичок ... Меня не интересуют ... меня не интересует ... для меня ... Пока мне нравится ... - я буду Хм. Понимаешь ли в чем дело, стоит понимать, что всякие мудрые технологии придумывали не только для того, чтобы безмерно осложнить жизнь простому честному трудяге, но еще и как способ решения некоторых вполне реальных задач, как ответы на некоторые вполне реальные вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 19:29 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
гм...очень интересное, интригующее, причудливое изложение ... если чесно - ничо не понял :( раскройте тему поподробнее ? Пожалуйста - простой пример. Есть обследования, кучи обследований, диагностика, лабораторное исследование... Сложите их все, разделите на десять и возьмите одну часть. Что же это будет, угадайте?! Естественно, гинеколог... Все из-за того, что люди имеют пол (черт бы их побрал, но это личное мнение). И только из-за этого в таблице "обследования" будет поле "пол", для подавляющего большинства обследований это поле будет в NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 19:40 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven Я маленький опус как-то написал по борьбе с индексированием, настолько это меня поразило... "...EXPLAIN SELECT раз за разом, словно издеваясь, показывал [ALL] напротив главной таблицы в моей базе данных, в которой должны были быть сотни тысяч записей. Хотя запрос уже работал правильно, но при таких объемах мой сервер просто остановится. Мир за три часа сузился до одного экрана, одного окна на экране и виртуальной клавиатуры (я печатаю вслепую). EXPLAIN показывал четырнадцать строк, в одной из которых я в который раз видел ALL... Эти три буквы, раз за разом с досадой звучали у меня в сознании тремя буквами общеизвестного слова... ...до обеда оставалось пять минут, когда я наконец нашел нужную комбинацию слов JOIN... В очередной раз запустив запрос, я увидел на месте ругательного [ALL] желанное слово [ref]. Вокруг, естественно, ничего не изменилось, только в мозгу прошептало "Откат...". В голову пришла дурацкая фраза, услышанная мной от моего бывшего начальника "да здравствует победа ума над разумом!". И я отправился на обед..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 19:44 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
012345Создавайте для каждой сущности предметной области отдельную таблицу и Ваши волосы будут густыми и шелковистыми :) Проблема в том, что они переплетаются в дурацких сочетаниях: диагнозы могут принадлежать как обследованию на карте (причем далеко не все обследования могут назначать диагнозы), так и самой карте. Диагнозы могут быть простыми, а может быть профзаболеванием. Профзаболеванием могут быть далеко не все диагнозы. Отдельные обследования назначают разные диагнозы, хотя могут и одни и те же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 19:48 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
softwarer AXAEПока я .. Да НИКТО(!!!) .. никто не будет .. У меня .. Я сам по себе там - типа героя-одиночки ... Я новичок ... Меня не интересуют ... меня не интересует ... для меня ... Пока мне нравится ... - я буду Хм. Понимаешь ли в чем дело, стоит понимать, что всякие мудрые технологии придумывали не только для того, чтобы безмерно осложнить жизнь простому честному трудяге, но еще и как способ решения некоторых вполне реальных задач, как ответы на некоторые вполне реальные вопросы. Не понял сути вашей реплики... P.S. Суть - мать шизофрении)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2007, 19:51 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAE 012345Создавайте для каждой сущности предметной области отдельную таблицу и Ваши волосы будут густыми и шелковистыми :) Проблема в том, что они переплетаются в дурацких сочетаниях: диагнозы могут принадлежать как обследованию на карте (причем далеко не все обследования могут назначать диагнозы), так и самой карте. Диагнозы могут быть простыми, а может быть профзаболеванием. Профзаболеванием могут быть далеко не все диагнозы. Отдельные обследования назначают разные диагнозы, хотя могут и одни и те же. Ох, как мне близка когда-то была эта проблема :) . Только были ещё и характеристики больниц и санаторно-курортных организаций, и оценки, могут ли они лечить те или иные заболевания, и состояние больных до и после лечения. И врачи, замечательные люди, принимающие правильные решения не по логике, а по наитию и подобию... Это сложная предметная область. Но в 3НФ укладывается всё. Даже медицина. В крайнем случае призывайте призрак EAV :). Просто не спешите, лучше день думать, чем месяц исправлять неправильное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2007, 00:04 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AlexTheRaven AXAE 012345Создавайте для каждой сущности предметной области отдельную таблицу и Ваши волосы будут густыми и шелковистыми :) Проблема в том, что они переплетаются в дурацких сочетаниях: диагнозы могут принадлежать как обследованию на карте (причем далеко не все обследования могут назначать диагнозы), так и самой карте. Диагнозы могут быть простыми, а может быть профзаболеванием. Профзаболеванием могут быть далеко не все диагнозы. Отдельные обследования назначают разные диагнозы, хотя могут и одни и те же. Ох, как мне близка когда-то была эта проблема :) . Только были ещё и характеристики больниц и санаторно-курортных организаций, и оценки, могут ли они лечить те или иные заболевания, и состояние больных до и после лечения. И врачи, замечательные люди, принимающие правильные решения не по логике, а по наитию и подобию... Это сложная предметная область. Но в 3НФ укладывается всё. Даже медицина. В крайнем случае призывайте призрак EAV :). Просто не спешите, лучше день думать, чем месяц исправлять неправильное решение. Месяц - это мало будет для исправления... А над структурой таблиц я уже четвертый день думаю. Это вообще прикольно выглядит: парень сидит целыми днями над листочком бумаги и рисует, рисует диаграммы, квадратики, кружочки, стрелочки, надписи... Уже листов двадцать изрисовал. Пришлось остановиться на компромиссном варианте, который в общих чертах сможет описать все, что мне нужно с некоторыми приблудами для особо вредных сущностей. Я кстати дальше, чем третья нормальная форма не знаю. Что такое НФ Бойса-Кодда я уже не знаю, а уж дальше, сколько их там? Около девяти или двенадцати? Я даже не могу сказать, что такое первые-то три... Я совершенно не понимаю того, о чем пишут в книжках по базам данных, даже тех, которые считаются, что они понятнее некуда. Для третьей НФ я думаю достаточно интуиции)) А что такое EAV? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2007, 07:26 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAEЯ кстати дальше, чем третья нормальная форма не знаю. Что такое НФ Бойса-Кодда я уже не знаю, а уж дальше, сколько их там? Около девяти или двенадцати? Я даже не могу сказать, что такое первые-то три... Я совершенно не понимаю того, о чем пишут в книжках по базам данных, даже тех, которые считаются, что они понятнее некуда. Для третьей НФ я думаю достаточно интуиции)) А что такое EAV?Чем дальше, тем больше у меня крепнет ощущение, что вы своим невежеством гордитесь, а не стыдитесь его. Вот мол, какой я парень от сохи, простой да работящий. А все эти ваши теории-де от лукавого. Ишь, напридумывали аж девять или двенадцать нормальных форм, теоретики клятые, да книг пухлых настрочили, в которых и понять ничего нельзя нормальному человеку. Так что ли? P.S. Нормальных форм всего шесть (1NF,2NF,3NF,BCNF,4NF,5NF), да пара-тройка чисто экспериментальных (ДКНФ, (3,3)НФ, 6НФ, описаны у Дейта, например). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2007, 11:40 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
mir AXAEЯ кстати дальше, чем третья нормальная форма не знаю. Что такое НФ Бойса-Кодда я уже не знаю, а уж дальше, сколько их там? Около девяти или двенадцати? Я даже не могу сказать, что такое первые-то три... Я совершенно не понимаю того, о чем пишут в книжках по базам данных, даже тех, которые считаются, что они понятнее некуда. Для третьей НФ я думаю достаточно интуиции)) А что такое EAV?Чем дальше, тем больше у меня крепнет ощущение, что вы своим невежеством гордитесь, а не стыдитесь его. Вот мол, какой я парень от сохи, простой да работящий. А все эти ваши теории-де от лукавого. Ишь, напридумывали аж девять или двенадцать нормальных форм, теоретики клятые, да книг пухлых настрочили, в которых и понять ничего нельзя нормальному человеку. Так что ли? Скорее всего((( Но это не стоит обсуждать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2007, 13:51 |
|
||
|
Таблиц: чем больше, тем лучше или наоборот?
|
|||
|---|---|---|---|
|
#18+
AXAE 012345Создавайте для каждой сущности предметной области отдельную таблицу и Ваши волосы будут густыми и шелковистыми :) Проблема в том, что они переплетаются в дурацких сочетаниях: диагнозы могут принадлежать как обследованию на карте (причем далеко не все обследования могут назначать диагнозы), так и самой карте. Диагнозы могут быть простыми, а может быть профзаболеванием. Профзаболеванием могут быть далеко не все диагнозы. Отдельные обследования назначают разные диагнозы, хотя могут и одни и те же. > Проблема в том, что они переплетаются в дурацких сочетаниях: Когда Вы как следует разберетесь в этих сочетаниях, они не будут казаться таковыми. > диагнозы могут принадлежать как обследованию на карте (причем далеко не все обследования > могут назначать диагнозы) Значит, принадлежность диагноза состоит из двух полей: № карты, № обследования. Второе из них может быт пустым. > Диагнозы могут быть простыми, а может быть профзаболеванием. Профзаболеванием могут быть > далеко не все диагнозы. И в чем тут проблема? Логическое поле (Да/Нет) > Отдельные обследования назначают разные диагнозы, хотя могут и одни и те же Не совсем понятно, что Вам нужно из этого получить, но с этим тоже можно сладить. Не думаю, что диагноз будет ставить программа в зависимости от результатов обследования :) PS Я не гарантирую, что это всё правильно, так как не знаю деталей, но думаю, Вы уловили подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2007, 12:00 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1544621]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 319ms |

| 0 / 0 |
