powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реализация справочников
41 сообщений из 41, показаны все 2 страниц
Реализация справочников
    #35521692
beresa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В базе данных с главной таблицей связано много таблиц-справочников, которые имеют одинаковую структуру (рис. 1 в аттаче). Не будет ошибкой, если я все справочники помещу в одну таблицу и сделаю такую связь, как на рис. 2? Соответственно в этом случае справочники буду разделять по полю Flag в таблице all_table.
Второй способ кажется привлекательнее, т.к. в этом случае сокращается число таблиц.

Использую СУБД Firebird 2.
...
Рейтинг: 0 / 0
Реализация справочников
    #35521702
ЯпСтам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дык, вапщето так и надо
...
Рейтинг: 0 / 0
Реализация справочников
    #35521703
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beresaВторой способ кажется привлекательнее, т.к. в этом случае сокращается число таблиц.А смысл ? Как я понимаю, у вас отдельные сущности, ссылочная целостность будет легко контролироваться стандартным функционалом СУБД.
...
Рейтинг: 0 / 0
Реализация справочников
    #35521736
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beresa в этом случае сокращается число таблиц. Использую СУБД Firebird 2.
А чем в СУБД Firebird привлекательно сокращение числа таблиц? Какие выгоды от этого?
...
Рейтинг: 0 / 0
Реализация справочников
    #35521811
beresa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChAА смысл ? Как я понимаю, у вас отдельные сущности, ссылочная целостность будет легко контролироваться стандартным функционалом СУБД.

В каждом из справочнике, который я хочу создать, будет не более 20 записей. И я так подумал, что «плодить» кучу справочников в базе данных это не есть хорошо (ведь же лучше иметь 1 таблицу чем 20 однотипных). Но вот с другой стороны, снизится ли производительность клиентского приложение при работе с базой данной при 2-ом способе реализации?
...
Рейтинг: 0 / 0
Реализация справочников
    #35521838
beresa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bogdanov Andrey
А чем в СУБД Firebird привлекательно сокращение числа таблиц? Какие выгоды от этого?
Первое, и самое главное, это удобство работы с базой данной.
А вот насчёт остального, честно, не в курсе.
...
Рейтинг: 0 / 0
Реализация справочников
    #35521865
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beresaВ каждом из справочнике, который я хочу создать, будет не более 20 записей. И я так подумал, что «плодить» кучу справочников в базе данных это не есть хорошо (ведь же лучше иметь 1 таблицу чем 20 однотипных). Но вот с другой стороны, снизится ли производительность клиентского приложение при работе с базой данной при 2-ом способе реализации?Да хоть по 2. Никаких преимуществ в "стаскивании" разнородных, скорее всего, по смыслу данных лично я не вижу. Только недостатки. И главный из них в том, что вещи, которые уже реализованы в СУБД на уровне ядра, вы будете вынуждены реализовывать сами. Например, ту же самую ссылочную целостность. Зачем усложнять себе и другим жизнь ?
...
Рейтинг: 0 / 0
Реализация справочников
    #35521935
beresa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChAДа хоть по 2. Никаких преимуществ в "стаскивании" разнородных, скорее всего, по смыслу данных лично я не вижу. Только недостатки. И главный из них в том, что вещи, которые уже реализованы в СУБД на уровне ядра, вы будете вынуждены реализовывать сами. Например, ту же самую ссылочную целостность. Зачем усложнять себе и другим жизнь ?

ОК! Спасибо большое. Последую вашему совету и сделаю всё "классическим способом"
...
Рейтинг: 0 / 0
Реализация справочников
    #35521939
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дискуссия по теме: тынць
...
Рейтинг: 0 / 0
Реализация справочников
    #35522820
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beresaПервое, и самое главное, это удобство работы с базой данной.
Я пока не понял в чем это удобство заключается. Придется вместо select * from table писать select * from all_tables where flag=xxx, да еще и помнить значения флагов.
Ну а сделать унифицированную форму для редактирования однотипных справочников, хранящихся в разных таблицах ничуть не сложнее (если не проще), чем то же самое для одной таблицы с флагом.
...
Рейтинг: 0 / 0
Реализация справочников
    #35523557
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Придется вместо select * from table писать select * from all_tables where
>> flag=xxx, да еще и помнить значения флагов.
Достаточно вспомнить однажды, написав представление соответствующее


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Реализация справочников
    #35523797
Goffman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И смысл тогда все это городить, вместо N таблиц получаем, N представлений + 1 таблица, да еще в пассиве отсутсвие ссыл. целостности и возможные проблемы при (возможном в будущем) расширении некоторых справочников
...
Рейтинг: 0 / 0
Реализация справочников
    #35523843
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> ...И смысл тогда все это городить...
Ну, это, как и все остальное на усмотрение разработчика остается...


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Реализация справочников
    #35523889
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kirill Razuvaev>> ...И смысл тогда все это городить...
Ну, это, как и все остальное на усмотрение разработчика остается... Это понятно - каждый делает как хочет. Я просто пытаюсь понять откуда вообще возникают мысли все свалить в одну таблицу. Ведь любой человек сам себе не враг и придумывать реализацию, которая не имеет никаких положительных моментов, наверное, не будет.
...
Рейтинг: 0 / 0
Реализация справочников
    #35524039
Фотография ilias1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goffman да еще в пассиве отсутсвие ссыл. целостности

С чего бы это?
PK и FK могут быть составными то есть состоять из 2 и более полей. Поэтому проблем здесь нет.
...
Рейтинг: 0 / 0
Реализация справочников
    #35524277
Kirill Razuvaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Я просто пытаюсь понять откуда вообще возникают мысли все свалить в одну
>> таблицу.
Мотивов минимум два:
1. Нравится так. :-)
2. Если таких справочников из двух полей - полсотни или больше, так волей не
волей задумаешься о том, что и как. Список объектов БД - и то листать не
удобно...


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Реализация справочников
    #35525615
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beresaВ каждом из справочнике, который я хочу создать, будет не более 20 записей. И я так подумал, что «плодить» кучу справочников в базе данных это не есть хорошо (ведь же лучше иметь 1 таблицу чем 20 однотипных).
Вы когда пишете код, плодите в нем однотипные переменные i, j, k или же объявляете вместо них массив?
...
Рейтинг: 0 / 0
Реализация справочников
    #35525617
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyЯ просто пытаюсь понять откуда вообще возникают мысли все свалить в одну таблицу.
У меня в свое время она была из-за того, что так делалось в системе на Клиппере, с которой я начал знакомство с коммерческими БД-проектами. Ссылочной целостности, само собой, Клиппер не предполагал, зато на этот справочник было навешено некоторое количество общего функционала.
...
Рейтинг: 0 / 0
Реализация справочников
    #35525788
beresa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь-то после такой дискуссии понятно как нужно делать правильно – все справочники однозначно буду размещать в отдельных таблицах.
Спасибо всем за ответы!
...
Рейтинг: 0 / 0
Реализация справочников
    #35525921
beresa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В продолжение темы.

Сделал я справочники, связал их с главной таблицей (рис. в аттаче). Когда начал делать клиента, столкнулся с тем, что несколько неудобно работать с lookup полями, да и запросов к базе данных при работе клиента с базой получается многовато. Поэтому пришла мысль убрать все внешние ключи, и заменить их на поля типа varchar(100). Вопрос: стоит ли это делать?
...
Рейтинг: 0 / 0
Реализация справочников
    #35525938
beresa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В продолжение темы.

Сделал я справочники, связал их с главной таблицей (рис. в аттаче). Когда начал делать клиента, столкнулся с тем, что несколько неудобно работать с lookup полями, да и запросов к базе данных при работе клиента с базой получается многовато. Поэтому пришла мысль убрать все внешние ключи, и заменить их на поля типа varchar(100). Вопрос: стоит ли это делать?
...
Рейтинг: 0 / 0
Реализация справочников
    #35526161
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beresaВ продолжение темы.

Сделал я справочники, связал их с главной таблицей (рис. в аттаче). Когда начал делать клиента, столкнулся с тем, что несколько неудобно работать с lookup полями, да и запросов к базе данных при работе клиента с базой получается многовато. Поэтому пришла мысль убрать все внешние ключи, и заменить их на поля типа varchar(100). Вопрос: стоит ли это делать?

Вот и ответ на вопрос, что лучше - сто разных справочников или один, классифицируемый.
Примерно на двадцатом наборе "источник данных - браузер - фильтр - форма", которые отличаются друг от друга только названием таблицы, начинаешь догадываться, что "одной таблицей" было бы куда быстрее...
...
Рейтинг: 0 / 0
Реализация справочников
    #35526165
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer beresaВ каждом из справочнике, который я хочу создать, будет не более 20 записей. И я так подумал, что «плодить» кучу справочников в базе данных это не есть хорошо (ведь же лучше иметь 1 таблицу чем 20 однотипных).
Вы когда пишете код, плодите в нем однотипные переменные i, j, k или же объявляете вместо них массив?

Если это набор каких-либо счетчиков для статитики (добавлено, удалено, успешно, не успешно, розовых, синих....), то да, делаю массив. Присваивать все равно как. А вот расширять список и выводить итог из массива гораздо удобнее. А что?
...
Рейтинг: 0 / 0
Реализация справочников
    #35526169
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey beresaПервое, и самое главное, это удобство работы с базой данной.
Я пока не понял в чем это удобство заключается. Придется вместо select * from table писать select * from all_tables where flag=xxx, да еще и помнить значения флагов.
Ну а сделать унифицированную форму для редактирования однотипных справочников, хранящихся в разных таблицах ничуть не сложнее (если не проще), чем то же самое для одной таблицы с флагом.

1. Это ж не каждый раз писать придется? А только один?
2. Не стал бы это так категорически утверждать. Динамика, конечно, имеет место быть, но статика, как-то проще и надежнее...
...
Рейтинг: 0 / 0
Реализация справочников
    #35526179
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай1Примерно на двадцатом наборе "источник данных - браузер - фильтр - форма", которые отличаются друг от друга только названием таблицы, начинаешь догадываться, что "одной таблицей" было бы куда быстрее...
Как раз про таких людей есть замечательный анекдот.

Идет блондинка по рынку, видит ценник: "Яблочные семечки, $100/десяток". Спрашивает у продавца: - А что так дорого-то?
- Понимаете, девушка, у яблочных семечек есть исключительное качество: кто их есть, тот умнеет.
- Вот как? Здорово. Ну тогда отсчитайте на сто баксов.

Пожевала.. проглотила...
- Странно, вроде ничего в себе не чувствую. За что такие деньги, могла бы купить килограмм яблок, там их куда больше и вышло бы раз в десять дешевле.
- Вот видите, красавица, уже и поумнели!
- Точно!! Работает!!!- (шелест банкнот)- Дайте мне еще три десятка!!


Николай1 softwarerВы когда пишете код, плодите в нем однотипные переменные i, j, k
Если это набор каких-либо счетчиков для статитики
Если Вы не знаете, для чего в программировании применяют переменные i, j и k, то, боюсь, начинать Вам нужно не с этого сайта. Если же вдруг знаете, но предпочитаете подменить тему - это лучше всего свидетельствует о вероятном ответе на заданный вопрос.
...
Рейтинг: 0 / 0
Реализация справочников
    #35526223
khl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В варианте 2 надо ввести третью таблицу, в которой будут "сидеть" типы сущностей. Иначе действительно придется запоминать флаги.
...
Рейтинг: 0 / 0
Реализация справочников
    #35526306
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Николай1Примерно на двадцатом наборе "источник данных - браузер - фильтр - форма", которые отличаются друг от друга только названием таблицы, начинаешь догадываться, что "одной таблицей" было бы куда быстрее...
Как раз про таких людей есть замечательный анекдот.

Идет блондинка по рынку, видит ценник: "Яблочные семечки, $100/десяток". Спрашивает у продавца: - А что так дорого-то?
- Понимаете, девушка, у яблочных семечек есть исключительное качество: кто их есть, тот умнеет.
- Вот как? Здорово. Ну тогда отсчитайте на сто баксов.

Пожевала.. проглотила...
- Странно, вроде ничего в себе не чувствую. За что такие деньги, могла бы купить килограмм яблок, там их куда больше и вышло бы раз в десять дешевле.
- Вот видите, красавица, уже и поумнели!
- Точно!! Работает!!!- (шелест банкнот)- Дайте мне еще три десятка!!


Я бы попросил не хамить.
Двадцать - это была ирония. Вообще-то такие вещи решаются на этапе проектирования. Я работал с системами, построенными и так и так. Так что вполне могу сравнивать.

softwarer
Николай1 softwarerВы когда пишете код, плодите в нем однотипные переменные i, j, k
Если это набор каких-либо счетчиков для статитики
Если Вы не знаете, для чего в программировании применяют переменные i, j и k, то, боюсь, начинать Вам нужно не с этого сайта. Если же вдруг знаете, но предпочитаете подменить тему - это лучше всего свидетельствует о вероятном ответе на заданный вопрос.

Я вообще переменые i,j,k не использую. В книжках их используют в циклах. Что дальше?
...
Рейтинг: 0 / 0
Реализация справочников
    #35526310
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
khlВ варианте 2 надо ввести третью таблицу, в которой будут "сидеть" типы сущностей. Иначе действительно придется запоминать флаги.
(и)или enum в клиенте сделать, в соответствии с флагами
enum{
dt_muhi = 1,
dt_tarakany = 2,
...
};
идея хранить справочники в одной таблице, имеет право на жизнь, и будет работать не хуже чем море отдельных таблиц...
всё зависит от специфики приложения
...
Рейтинг: 0 / 0
Реализация справочников
    #35526336
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай1Я бы попросил не хамить. Двадцать - это была ирония.
Если я правильно понял, что Вы сочли хамством, в чей адрес и почему, то здорово похоже, Вы не поняли смысл наличия этого анекдота в этом месте.

Николай1Примерно на двадцатом наборе "источник данных - браузер - фильтр - форма", которые отличаются друг от друга только названием таблицы, начинаешь догадываться что "одной таблицей" было бы куда быстрее...

Вообще-то такие вещи решаются на этапе проектирования.
Да нет, "такие вещи" решаются на этапе зачатия, на стадии формирования ДНК. Правда, подозреваю, Вы снова не поймете, какие именно "такие".

Николай1Я работал с системами, построенными и так и так. Так что вполне могу сравнивать.
Сравнить опу с пальцем. Понять, что срать пальцами неудобно. Сделать вывод, что руки нахрен не нужны.

Николай1Я вообще переменые i,j,k не использую.
То есть, полезли отвечать на вопрос, который никоим боком к Вам не относится. По принципу "каждой бочке затычка"?
...
Рейтинг: 0 / 0
Реализация справочников
    #35526352
beresa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В проектируемой мною базе данных получается, что атрибуты объекта «книга» связаны с помощью внешних ключей со справочниками. Соответственной на текущем уровне разработки у меня в главной таблице хранятся id (тип integer) атрибутов книги (издательство, жанр, назначение, рубрика и т.д.), а сами атрибуты хранятся в отдельных справочниках (см. предыдущий рисунок в конце 1-ой страницы этой темы).
Может лучше все атрибуты хранить в одной (главной) таблицы (т.е. все поля типа integer заменить на поля типа varchar)? Рисунок ниже.
...
Рейтинг: 0 / 0
Реализация справочников
    #35526394
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beresaМожет лучше все атрибуты хранить в одной (главной) таблицы (т.е. все поля типа integer заменить на поля типа varchar)?Зачем ? Такой вариант имеет право на жизнь, но не часто. Во-первых, резко увеличится объем физического пространства, отводимого под информацию на каждую книгу. Может сильно упасть эффективность операций поиска, так как операции сравнения строк будут дольше, чем идентификаторов, обычно представляющих разновидность целых чисел. Кроме того, при выполнении поиска может понадобится больше обращений к диску, что является самой "дорогой" операцией. Кстати, из-за этого же упадет эффективность индексов по таким полям, если таковые будут сделаны.
А если вы еще и от справочников откажитесь, то начнете просто терять информацию. Например, при удалении последней книги определенной рубрики, сама рубрика тоже исчезнет, и в следующий раз, при появлении книги, относящейся к такой рубрике вы должны будете указать заново (и, что важнее, правильно) эту рубрику.
В общем, опять вырисовывается куча недостатков и ни одного явного достоинства. А, самое главное, большинство современных СУБД прекрасно работают со схемой "снежинка" (главной таблицей, окруженной справочниками) которую вам уже рекомендовали.
...
Рейтинг: 0 / 0
Реализация справочников
    #35526457
beresa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChA beresaМожет лучше все атрибуты хранить в одной (главной) таблицы (т.е. все поля типа integer заменить на поля типа varchar)?Зачем ? Такой вариант имеет право на жизнь, но не часто. Во-первых, резко увеличится объем физического пространства, отводимого под информацию на каждую книгу. Может сильно упасть эффективность операций поиска, так как операции сравнения строк будут дольше, чем идентификаторов, обычно представляющих разновидность целых чисел. Кроме того, при выполнении поиска может понадобится больше обращений к диску, что является самой "дорогой" операцией. Кстати, из-за этого же упадет эффективность индексов по таким полям, если таковые будут сделаны.
А если вы еще и от справочников откажитесь, то начнете просто терять информацию. Например, при удалении последней книги определенной рубрики, сама рубрика тоже исчезнет, и в следующий раз, при появлении книги, относящейся к такой рубрике вы должны будете указать заново (и, что важнее, правильно) эту рубрику.
В общем, опять вырисовывается куча недостатков и ни одного явного достоинства. А, самое главное, большинство современных СУБД прекрасно работают со схемой "снежинка" (главной таблицей, окруженной справочниками) которую вам уже рекомендовали.

ChA, спасибо большое за столь подробный ответ. Если буду в Москве, с меня пиво :-)

И у меня снова вопросы по поводу справочников:
1) хотелось узнать, какими лучше сделать правила обновления и удаления записей главной таблицы, связанных внешним ключом со справочниками? (я поставил при обновлении – CASCADE, а при удалении - SET NULL).
2) в клиенте для получения значения атрибутов, которые хранятся в справочниках, думаю использовать не lookup-поля набора данных, а поля непосредственно справочников, полученные в результате запроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select
  l.id_library,
  pl.s_placepublic,
  pub.s_public,
  rub.s_rubric,
  ser.s_series,
  pur.s_purpose,
  gen.s_genre,
  th.s_theme,
  lan.s_language,
  sub.s_subject
from tb_library l
  left join tbs_placepublic pl on (pl.id_placepublic = l.id_placepablic)
  left join tbs_public pub on (pub.id_public = l.id_public)
  left join tbs_rubric rub on (rub.id_rubric = l.id_rubric)
  left join tbs_series ser on (ser.id_series = l.id_series)
  left join tbs_purpose pur on (pur.id_purpose = l.id_purpose)
  left join tbs_genre gen on (gen.id_genre = l.id_genre)
  left join tbs_theme th on (th.id_theme = l.id_theme)
  left join tbs_language lan on (lan.id_language = l.id_language)
  left join tbs_subject sub on (sub.id_subject = l.id_subject)
Такой подход верен?

И ещё, чтобы получить значения всех атрибутов главной таблицы, придётся делать приведенный выше запрос. Смущает, конечно, большое число внутренних левосторонних объединений. Не сильно ли это будет нагружать сервер баз данных и тормозить работу клиента?
...
Рейтинг: 0 / 0
Реализация справочников
    #35526471
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beresa1) хотелось узнать, какими лучше сделать правила обновления и удаления записей главной таблицы, связанных внешним ключом со справочниками? (я поставил при обновлении – CASCADE, а при удалении - SET NULL).я, к примеру, запрещаю каскады для справочников. ибо менять PK у справочника - занятие вредное и ненужное, а удалять строку справочника, к которой привязаны данные основной таблицы - вообще злостное нарушение, сродни диверсии
...
Рейтинг: 0 / 0
Реализация справочников
    #35526515
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beresa1) хотелось узнать, какими лучше сделать правила обновления и удаления записей главной таблицы, связанных внешним ключом со справочниками? (я поставил при обновлении – CASCADE, а при удалении - SET NULL).Если у вас связаны по идентификатором, то в чем смысл каскадного обновления ? Как правило, это суррогатные значения, которые никогда не меняются. Пользователь их не видит и ничего о них знать, в общем-то, не должен. Да и каскадный NULL вызывает сомнения. Так что, в целом, я соглашусь с egorych . Первое не нужно, второе - опасно, строки из справочника просто так не удаляются, тем более, если на них есть действующие ссылки из других таблиц.

beresa
2) в клиенте для получения значения атрибутов, которые хранятся в справочниках, думаю использовать не lookup-поля набора данных, а поля непосредственно справочников, полученные в результате запроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select
  l.id_library,
  pl.s_placepublic,
...
  sub.s_subject
from tb_library l
  left join tbs_placepublic pl on (pl.id_placepublic = l.id_placepablic)
...
  left join tbs_subject sub on (sub.id_subject = l.id_subject)
Такой подход верен?

И ещё, чтобы получить значения всех атрибутов главной таблицы, придётся делать приведенный выше запрос. Смущает, конечно, большое число внутренних левосторонних объединений. Не сильно ли это будет нагружать сервер баз данных и тормозить работу клиента?Абсолютно нормально, хотя в ряде случаев запрос в виде
Код: plaintext
1.
2.
3.
4.
5.
select
  l.id_library,
  (SELECT pl.s_placepublic FROM tbs_placepublic pl WHERE pl.id_placepublic = l.id_placepablic),
...
  (SELECT sub.s_subject FROM tbs_subject sub WHERE sub.id_subject = l.id_subject)
FROM tb_library l
может оказаться эффективнее, но это надо проверять в конкретной ситуации и на конкретной СУБД.
Если вы не собираетесь вываливать пользователю на экран сразу тысячи строк, то нагрузка на сервер не будет чрезмерной. Впрочем, это стандартный подход при клиент-серверной архитектуре, пользователь должен получать не больше данных, чем способен осознать, иначе никакие сервера не помогут.
...
Рейтинг: 0 / 0
Реализация справочников
    #35526527
beresa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChA , большое спасибо вам за подробные ответы!
Теперь-то мне становится понятным как правильно нужно всё делать! :-))
...
Рейтинг: 0 / 0
Реализация справочников
    #35526673
Николай1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Николай1Я бы попросил не хамить. Двадцать - это была ирония.
Если я правильно понял, что Вы сочли хамством, в чей адрес и почему, то здорово похоже, Вы не поняли смысл наличия этого анекдота в этом месте.

Николай1Примерно на двадцатом наборе "источник данных - браузер - фильтр - форма", которые отличаются друг от друга только названием таблицы, начинаешь догадываться что "одной таблицей" было бы куда быстрее...

Вообще-то такие вещи решаются на этапе проектирования.
Да нет, "такие вещи" решаются на этапе зачатия, на стадии формирования ДНК. Правда, подозреваю, Вы снова не поймете, какие именно "такие".

Николай1Я работал с системами, построенными и так и так. Так что вполне могу сравнивать.
Сравнить опу с пальцем. Понять, что срать пальцами неудобно. Сделать вывод, что руки нахрен не нужны.

Николай1Я вообще переменые i,j,k не использую.
То есть, полезли отвечать на вопрос, который никоим боком к Вам не относится. По принципу "каждой бочке затычка"?

Настроение плохое?
По делу есть что сказать, или только про ДНК?
...
Рейтинг: 0 / 0
Реализация справочников
    #35527496
goodron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beresaМожет лучше все атрибуты хранить в одной (главной) таблицы (т.е. все поля типа integer заменить на поля типа varchar)?
Ни в коем случае! Дополнительно можно прочитать про аномалии при отсутствии 3-ей нормальной формы.
...
Рейтинг: 0 / 0
Реализация справочников
    #35548354
Volochkova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все упирается в вопрос терминологии.
Обзови не справочник, а перечисления.
Пока это таблица вида
Код - Код родителя - Название - Текстовое свойство - Числовое Свойство
То пишем в таблицу перечислений
Тип перечисления - Код - Код родителя - Название - Текстовое свойство - Числовое Свойство
Как стало тесно, выделяем в справочник. Где уже все будет расписано.
Конкретные поля, свойства, обработки, формы на выборку, на редактирование и прочее.


Вне зависимости от того как хранить, рекомендую на таблицу тут же сделать View и обозвать ее как надо. Тогда перенеся перечисления в справочник, все что надо, подправить View.
А в новый справочник вливать с кодами в таблице перечислений.
Все отчеты как работали так и будут работать.
Зато все будет работать, при минимуме затрат. .
...
Рейтинг: 0 / 0
Реализация справочников
    #35548629
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кому пригодится
http://mynaf.narod.ru/ObjectQuery.rtf%5D%7C>]http://mynaf.narod.ru/ObjectQuery.rtf]|> http://mynaf.narod.ru/ObjectQuery.rtf" TARGET="_blank">Объектные запросы
С уважением, Naf
...
Рейтинг: 0 / 0
Реализация справочников
    #35548632
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafМожет кому пригодится
http://" TARGET="_blank">http://mynaf.narod.ru/ObjectQuery.rtf]http://mynaf.narod.ru/ObjectQuery.rtf" TARGET="_blank">Объектные запросы
С уважением, Naf

блин, Объектные запросы
...
Рейтинг: 0 / 0
Реализация справочников
    #35548647
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VolochkovaВсе упирается в вопрос терминологии.
Обзови не справочник, а перечисления.Это только кажется, что если адрес назвать "Геопривязкой", от этого он изменится.
Такая терминология только ЗАПУТАЕТ тех кто будет рзбираться с этой системой, а свойства этой сущности никак не изменятся.

VolochkovaКак стало тесно, выделяем в справочник. Где уже все будет расписано.
Конкретные поля, свойства, обработки, формы на выборку, на редактирование и прочее.Будет поздно пить боржоми.
Придется не просто создать отдельную таблицу, где все будет как надо, а кроме этого переписать программы и отчеты, которые используют старый справочник.

VolochkovaВне зависимости от того как хранить, рекомендую на таблицу тут же сделать View и обозвать ее как надо. Тогда перенеся перечисления в справочник, все что надо, подправить View. А в новый справочник вливать с кодами в таблице перечислений.
Все отчеты как работали так и будут работать.
Зато все будет работать, при минимуме затрат. .А что, создание VIEW и таблицы - это сильно отличающиеся по затратам операции?
Я бы сказал, что CREATE OR REPLACE VIEW писать дольше, чем CREATE TABLE.
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реализация справочников
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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