|
|
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
форумчане, поделитесь мыслями и опытом, какая структура БД лучше (производительнее, удобнее в сопровождении) несколько больших таблиц или много, но поменьше нормализация данных одинаковая 3 например 1. справочник можно сделать один большой для разных таблиц (должности, типы товаров и др. константы) или отдельные справочники 2. таблицу отделов/сотрудников можно объединить в одну (дерево) или две сотрудник-отдел много таблиц - часть параметров, специфических для объектов, в самих таблицах мало таблиц - специфические параметры выносятся в отдельные таблицы параметров по типам баланс должен быть, к этому итогу придем ... но хочется обсудить именно указанные схемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 11:42 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверской, самый простой пример: введение одного большого справочника крайне затрудняет контроль корректности ссылок на этот самый справочник (что сслаетесь на тип довара, а не на должность к примеру) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 12:27 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
Сама постановка вопроса мне кажется ошибочной. Такой вопрос по-моему не должен возникать, если всё делать правильно) Ну вот смотрите, вы пишите тверской2. таблицу отделов/сотрудников можно объединить в одну (дерево) или две сотрудник-отдел Но если вы начнёте с анализа предметной области и выделения в ней ключевых сущностей, то вы непременно выделите две разные сущности: сотрудник и отдел. Соответственно эти же сущности (плюс связь между ними) окажутся сначала в вашей логической схеме, а затем и в физической (уже в виде двух отдельных таблиц). Тут вариантов быть не может по-моему) В целом, кол-во таблиц не является определяющим и критичным параметром схемы. Делайте так, как того требует предметная область и её бизнес-правила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 12:37 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
beef, типов сущностей может быть две и больше, но таблица сущностей (id, тип, ...) может быть одна + таблица свойств (id сущности, тип свойства, свойство) т.е., грубо, две таблицы (сущности и свойства) на все типы сущностей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 12:53 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
iljy, ошибки ввода данных возможны в любых системах, это, имхо, в значительной мере решается на уровне прикладного ПО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 13:01 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойbeef, типов сущностей может быть две и больше, но таблица сущностей (id, тип, ...) может быть одна + таблица свойств (id сущности, тип свойства, свойство) т.е., грубо, две таблицы (сущности и свойства) на все типы сущностей Это выше моего понимания) тверскойiljy, ошибки ввода данных возможны в любых системах, это, имхо, в значительной мере решается на уровне прикладного ПО Решать косяки схемы прикладным ПО - это, мягко говоря, плохо) Нормальная схема должна самостоятельно поддерживать свою целостность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 13:38 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойiljy, ошибки ввода данных возможны в любых системах, это, имхо, в значительной мере решается на уровне прикладного ПО Напрашивается вопрос: нафига вам СУБД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 14:10 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
beefтверскойbeef, типов сущностей может быть две и больше, но таблица сущностей (id, тип, ...) может быть одна + таблица свойств (id сущности, тип свойства, свойство) т.е., грубо, две таблицы (сущности и свойства) на все типы сущностей Это выше моего понимания) представьте что есть таблица объектов и таблица свойств объектов тогда не имеет значение какие именно объекты в таблице - должности, конкретные сотрудники, подразделения ... они отличаются типом и набором свойств beefтверскойiljy, ошибки ввода данных возможны в любых системах, это, имхо, в значительной мере решается на уровне прикладного ПО Решать косяки схемы прикладным ПО - это, мягко говоря, плохо) Нормальная схема должна самостоятельно поддерживать свою целостность. ссылка на неправильное значение в справочнике - это ошибка ввода, а не схемы да, в таблице-справочнике много значений, но контролировать правильный выбор из справочника - задача прикладного ПО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 14:12 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
baracsтверскойiljy, ошибки ввода данных возможны в любых системах, это, имхо, в значительной мере решается на уровне прикладного ПО Напрашивается вопрос: нафига вам СУБД? тверскойссылка на неправильное значение в справочнике - это ошибка ввода, а не схемы да, в таблице-справочнике много значений, но контролировать правильный выбор из справочника - задача прикладного ПО не поверите - данные хранить и обрабатывать ;) хочу разобраться, с помощью форумчан, какая схема какие преимущества имеет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 14:17 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойхочу разобраться, с помощью форумчан, какая схема какие преимущества имеетпоиск по форуму: EAV, Тенцер. ЗЫ обсасывалось неисчислимое количество раз, есть несколько эпических холиваров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 14:29 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойне поверите - данные хранить и обрабатывать ;)ну вот и представьте, как будет выглядеть в вашем случае запрос вида: "выбрать всех сотрудников, с зарплатой, меньшей, чем 897 руб. 17 коп" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 14:31 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
Очередная попытка построить СУБД над РСУБД и разруливать всё кодом. Можно вообще всё сложить в одну таблицу, дескать всё объекты - одна сущность, а потом с этим всем корячиться. Стандартные РСУБД уже дают возможность разложить всё по полочкам и решать большинство практических задач во вполне осмысленной парадигме. Зачем городить огород на пустом месте ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 14:48 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
egorych, несколько JOIN таблицы объектов с таблицей свойств, в чем должна быть проблема? возможно JOIN'нов будет больше, чем при схеме человек - должность - з/п ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 14:50 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойbaracsпропущено... Напрашивается вопрос: нафига вам СУБД? тверскойссылка на неправильное значение в справочнике - это ошибка ввода, а не схемы да, в таблице-справочнике много значений, но контролировать правильный выбор из справочника - задача прикладного ПО не поверите - данные хранить и обрабатывать ;) Хранить и обрабатывать можно и в текстовом файле или в xml... Такая мысль в этом форуме высказывалась не раз тверскойхочу разобраться, с помощью форумчан, какая схема какие преимущества имеет Та, которая позволяет использовать встроенные возможности РСУБД по обеспечению целостности и непротиворечивости данных. В данном случае, грамотная схема позволит СУБД "отбивать" такие ошибки ввода на подлете. А приложению останется, только, внятно объяснить юзеру, что случилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 14:52 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
ChA, не совсем, строить ничего нового не надо "всё уже украдено до нас" ))) добавлять новые таблицы под каждый тип объектов <-> добавлять новые значения в справочник, не меняя кол-ва таблиц например - автопарк все машины в одной таблице или разделить легковые, грузовые, автобусы, спец.техника в разные? наборы свойств сильно различаются, но много общих ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 14:57 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
baracs, 1. если пользователь ввел (по справочнику) вместо VIP клиент - обычный клиент - никакая СУБД не "отобьет" 2. если пользователю выдаётся неправильный справочник и вместо статуса клиента в выданном справочнике перечислены цвета - это ошибка прикладного ПО, СУБД не "отобьет" чем схема - один справочник - не грамотная? вероятно тем, что, в теории, пользователю разрешат ввести ссылку не на тот тип объекта, но это проблема №2 прикладного ПО если создать много справочников, то интервалы id будут, скорее всего, пересекаться и ошибка "неправильного справочника" не исключается на уровне СУБД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 15:07 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойдобавлять новые таблицы под каждый тип объектов <-> добавлять новые значения в справочник, не меняя кол-ва таблицИ в чём ценность такой возможности ? Вместо Код: plaintext Код: plaintext тверскойнапример - автопарк все машины в одной таблице или разделить легковые, грузовые, автобусы, спец.техника в разные? наборы свойств сильно различаются, но много общихПодобный пример уже многократно обсуждался на форуме. Обычно пользуют иерархическую раскладку. Наиболее общие св-ва в "верхней" таблице, более специализированные в подчинённых в зависимости от типа. Но для некоторых задач даже этого может не понадобиться, типы могут не пересекаться по предметной области и нет смысла выделять "общую" таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 15:10 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойпредставьте что есть таблица объектов и таблица свойств объектов тогда не имеет значение какие именно объекты в таблице - должности, конкретные сотрудники, подразделения ... они отличаются типом и набором свойств Представил - не понравилось) Я просто не понимаю, зачем так делать? Не говорю, что так вообще нельзя делать. Можно. Можно вообще все данные в текстовом файле хранить, а прикладным ПО их оттуда вытаскивать. Только нафик оно нужно, если у нас есть СУБД. Предметная область сама диктует схемы хранения данных в "человечных" отношениях сущность-связь, и благо, современные СУБД позволяют такие схемы реализовывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 15:12 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
beef, Вы передергиваете, сравниваете малое кол-во таблиц с хранением в текстовом файле и на основе этого делаете красивый и внешне правильный вывод "только нафик оно нужно, если у нас есть СУБД" полагаю Ваша категоричность следует из "Я просто не понимаю, зачем так делать?" пример выше - автопарк иерархическое распределение таблиц, как предлагает ChA, и есть "баланс должен быть, к этому итогу придем" при большом кол-ве таблиц может возникнуть (и возникает) проблема - приобрели новый тип авто - автовышка, у которой новые параметры - вылет стрелы и т.д. добавляем новую таблицу? и как следствие переписываем код прикладного ПО и хранимые процедуры на сервере, чтобы они знали о новой таблице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 15:39 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойegorych, несколько JOIN таблицы объектов с таблицей свойств, в чем должна быть проблема? возможно JOIN'нов будет больше, чем при схеме человек - должность - з/ппроблема - производительность запросов и сопровождаемость кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 15:57 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойдобавляем новую таблицу? и как следствие переписываем код прикладного ПО и хранимые процедуры на сервере, чтобы они знали о новой таблицеПридется делать то же самое в обоих случаях, пройдено. Это только простейший случай, когда не надо ничего менять. Когда новая сущность практически никак не влияет на остальную схему, но тогда и смысла от неё немного. Впрочем, каждый, наверное, должен пройти "велосипедную" стадию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 15:57 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
egorychпроблема - производительность запросов и сопровождаемость кода.+1 Такие запросы иногда получаются, мама не горюй. А главное, понять их потом сложно, сплошные "универсальные" сущности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 16:00 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
"Ох не пойму я, чего вы спорите..." (с) Любая структура имеет определённых преимущества. Любая структура порождает определённые проблемы. Если порождаемые проблемы превышают преимущества - поменял структуру и дело с концом. Для обеспечения обратной совместимости есть куча средств, начиная с вьюх и кончая дубль-базой. Тверской, у тебя сейчас проблема с отчётами, которые строятся по несколько часов. Ты бы с ней разобрался лучше, чем крохоборствовать со справочниками... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 16:17 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойbeef, пример выше - автопарк иерархическое распределение таблиц, как предлагает ChA, и есть "баланс должен быть, к этому итогу придем" при большом кол-ве таблиц может возникнуть (и возникает) проблема - приобрели новый тип авто - автовышка, у которой новые параметры - вылет стрелы и т.д. добавляем новую таблицу? и как следствие переписываем код прикладного ПО и хранимые процедуры на сервере, чтобы они знали о новой таблице Каждая конкретная задача имеет конкретное решение. Общего рецепта нет и быть не может. А если автопарк захочет в автосервис преобразоваться или вообще в ресторан? Что тоже будем таблички добавлять/переделывать?) Я к тому, что работаем то, как правило, по ТЗ. Если в ТЗ написано сделать параметр вылет стрелы - сделаем. Если в ТЗ написано сделать так, чтобы при необходимости список параметров можно было расширить - тоже сделаем. А так можно до бесконечности строить схемы "на все случаи жизни"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 16:20 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
beef, ТЗ пишет разработчик, заказчик, обычно, не силен в технической части, хорошо если в предметной всё понимает мы, как разработчики, стараемся выбрать схему, которая оптимальна по производительности и простоте сопровождения обсуждаем разные схемы на примере крайних случаев - мало таблиц <-> много талиц - в боевых системах всегда компромис ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 16:54 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov"Ох не пойму я, чего вы спорите..." (с) Любая структура имеет определённых преимущества. Любая структура порождает определённые проблемы. Если порождаемые проблемы превышают преимущества - поменял структуру и дело с концом. Для обеспечения обратной совместимости есть куча средств, начиная с вьюх и кончая дубль-базой. Тверской, у тебя сейчас проблема с отчётами, которые строятся по несколько часов. Ты бы с ней разобрался лучше, чем крохоборствовать со справочниками... DS, как рад Вас ... читать пытаюсь выделить основные плюсы и минусы каждой схемы с отчетами жеж решено - пользователи ставят их в очередь в табличке, и их по расписанию запускает isql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 16:58 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойbaracs, 1. если пользователь ввел (по справочнику) вместо VIP клиент - обычный клиент - никакая СУБД не "отобьет" Прикладное ПО тоже. тверской2. если пользователю выдаётся неправильный справочник и вместо статуса клиента в выданном справочнике перечислены цвета - это ошибка прикладного ПО Эта ошибка пъяного разработчика прикладного ПО. тверскойчем схема - один справочник - не грамотная? вероятно тем, что, в теории, пользователю разрешат ввести ссылку не на тот тип объекта, но это проблема №2 прикладного ПО Даже пъяному разработчику, в случае грамотной схемы сложнее накосячить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 17:14 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойDimitry SibiryakovТверской, у тебя сейчас проблема с отчётами, которые строятся по несколько часов. Ты бы с ней разобрался лучше, чем крохоборствовать со справочниками... <...> с отчетами жеж решено - пользователи ставят их в очередь в табличке, и их по расписанию запускает isql Чувствуется, что выбрана схема, которая оптимальна по производительности и простоте сопровождения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 17:16 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойобсуждаем разные схемы на примере крайних случаев - мало таблиц <-> много талицПоследнее, о чём должен задумываться проектировщик, так это о количестве таблиц в БД. Даже сказал бы, что об этом он вовсе не должен думать. Их должно быть ровно столько, сколько нужно для адекватного описания предметной области(ПО), включая сущности и связи между ними. А выстроить БД над БД, а потом метаданными, а то и грубо, кодом, описывать модель ПО в большинстве случаев избыточно. РСУБД как раз и заточены под уход от излишней абстракции. Не уподобляйтесь Астронавтам Архитектуры . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 17:55 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойbeef, ТЗ пишет разработчик, заказчик, обычно, не силен в технической части, хорошо если в предметной всё понимает мы, как разработчики, стараемся выбрать схему, которая оптимальна по производительности и простоте сопровождения обсуждаем разные схемы на примере крайних случаев - мало таблиц <-> много талиц - в боевых системах всегда компромис ТЗ определяет уж никак не схему БД, а требования к ПО. Более того, на стадии написания ТЗ, как правило, о схеме БД речи вообще не идёт (разве что какие-то общие требования определяются). Схема БД строится уже по согласованному с заказчиком ТЗ, в котором чётко определены требования к функционалу. Конечно, проектировщик может заложить в схему какие-то возможности её дополнения в случае необходимости (кстати, в нормально спроектированную схему, как правило, несложно внести небольшие изменения), но, повторюсь, он не то, что не обязан - он просто не должен - "предусмотрительно" делать схему "на все случаи жизни". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 18:38 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
ChA Впрочем, каждый, наверное, должен пройти "велосипедную" стадию. +1 Будем надеятся, что до реализации это не дойдет, а если дойдет то долго не проживет. 2 тверской http://en.wikipedia.org/wiki/Divide_and_rule http://anekdot.ru/id/-1011100009/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2011, 18:53 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
бОльшая часть постов - ожидаемый и, часто, необоснованный стеб (написанный в попытках самоутвердиться или ещё по каким-то причинам) позиция отвечающих - ТС велосипедостроитель, чувствуется у ТС соринка в глазу и т.д. за всем этим забывается обсуждаемый вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2011, 11:28 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
baracsтверскойпропущено... <...> с отчетами жеж решено - пользователи ставят их в очередь в табличке, и их по расписанию запускает isql Чувствуется, что выбрана схема, которая оптимальна по производительности и простоте сопровождения... яркий пример из разряда - слышал звон, но не понял где он если действительно интересно - почитайте длительная ХП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2011, 11:32 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверскойесли действительно интересно - почитайте длительная ХП Почитал Замечательное резюме: 11350461 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2011, 12:48 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
baracs, и что же вас огорчило настолько, что выбрали в качестве резюме обсуждения пост не о технической составляющей, а переход на личности? перейти на личные обвинения/подозрения, когда нечего сказать по существу - старый и избитый прием ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2011, 14:32 |
|
||
|
количество таблиц - как лучше?
|
|||
|---|---|---|---|
|
#18+
тверской, Хорошо вот вам ответ по существу - много маленьких таблиц, без искусственного смешивания или разделения. Ибо так проще наложить ограничения на базу данных. (боятся большого количества таблиц не стоит при внятных правилах наименования таблиц) Таблицу можно (независимо от приложения) разделить (партицировать сегментировать) либо горизонтально либо вертикально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2011, 17:22 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1541990]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 492ms |

| 0 / 0 |
