|
|
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Добрый день! Занимаюсь помаленьку проектированием БД, необходимо организовать удобную систему связей объектов бд, а также их уникальность. БД MySQL, производительность важна. Возникли вопросы: 1. Как лучше организовать систему ссылок (база будет распределенной, необходимо поддерживать уникальность объектов), думаю сделать отдельную таблицу с гуидами (обеспечат уникальность по всей ИС) во всех ключах указывать ID гуида. Ну а при обмене данными работать с гуидами. Но этот метод мне кажется будет не очень удобным, да и ресурсы пострадают (связей будет много, и все в 1 таблице). 2. Как лучше поступить в случае, когда необходимо организовать возможность указывать в поле одной таблицы, ключи на записи разных таблиц: табл 1 (поле 1 содержит ключ на таблицы 2 и 3) ИД Поле1 1 2_4 2 2_5 3 3_6 табл 2 ИД имя 4 Вася 5 Петя табл 3 ИД имя 6 Маня Думаю это можно решить используя дополнительную таблицу (с гуидом как в п1 описано). Запросы будут выглядеть примерно так: ВЫБРАТЬ т1.ИД, вз.имя ИЗ табл1 ЛЕВОЕ СОЕД (таблсгуидом левое соединение (Табл2 объединить Табл3 )) КАК вз ПО Табл1.Поле1=вз.ИД Результат : ИД Имена,Прицепленные из двух таблиц 1 Вася 2 Петя 3 Маня Такой запрос тоже не очень мне нравится. Поделитесь опытом кто над такими вопросами уже озадачивался.) Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 08:36 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Жэкон, честно говоря абсолютно не понял, что мешает использовать в таблицах вместо ключа непосредственно гуид. Зачем нужна отдельная таблица_с_гуидами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 09:42 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
в принципе ничего не мешает, но гуид строковый, места занимает поболее чем число, если все ссылки буду так указывать накладно получится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 10:26 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
если все гуиды вынести в отдельную таблицу и связи между объектами делать через нее, получиться экономия места, но скорость выборки упадет. к томуже таким методом можно обеспечить уникальность в пределах всей ИС ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 10:31 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Жэконв принципе ничего не мешает, но гуид строковый, места занимает поболее чем число, если все ссылки буду так указывать накладно получится Во-первых - никакой он не строковый, а вполне себе бинарный. Ну и во-вторых- сделайте в объекте 2 поля - int и GUID. Связи внутри базы стройте по интам, а для синхронизации баз используйте гуид. А уникальность гуидов и так практически гарантирована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 11:31 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
а гуид в поле с каким типом хранить? а так идея ясна. Как быть с вопросом №2?. Не могу додумать как такие связки делать, фактически вместо 1 левого соединения надо организовать 2, причем в 1 поле. Можно с помощью "объединить" а можно левым вытащить 2 поля из разных таблиц и потом рассчитать третье, в котором будут данные из обоих таблиц, но это вообще печальный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 11:52 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Жэкона гуид в поле с каким типом хранить? а так идея ясна. В некоторых СУБД есть специальный тип, а так - binary(16). ЖэконКак быть с вопросом №2?. Не могу додумать как такие связки делать, фактически вместо 1 левого соединения надо организовать 2, причем в 1 поле. Можно с помощью "объединить" а можно левым вытащить 2 поля из разных таблиц и потом рассчитать третье, в котором будут данные из обоих таблиц, но это вообще печальный вариант. У вас задача какая? Приведите постановку задачи, а не ваше представление о решении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 12:13 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Задача примерна такова: реализовать в проектируемой БД возможность, в реквизитах объектов указывать ИД не из конкретной таблицы, а из произвольной. В примере выше ИД может указывать на табл2 или табл3. Подобная фишка есть в 1с. Вот как то так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 12:38 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Жэкон2. Как лучше поступить в случае, когда необходимо организовать возможность указывать в поле одной таблицы, ключи на записи разных таблиц: табл 1 (поле 1 содержит ключ на таблицы 2 и 3) ИД Поле1 1 2_4 2 2_5 3 3_6 табл 2 ИД имя 4 Вася 5 Петя табл 3 ИД имя 6 Маня Думаю это можно решить используя дополнительную таблицу (с гуидом как в п1 описано). Запросы будут выглядеть примерно так: ВЫБРАТЬ т1.ИД, вз.имя ИЗ табл1 ЛЕВОЕ СОЕД (таблсгуидом левое соединение (Табл2 объединить Табл3 )) КАК вз ПО Табл1.Поле1=вз.ИД Результат : ИД Имена,Прицепленные из двух таблиц 1 Вася 2 Петя 3 Маня Ваш пример не выдерживает критики - вы распихали однообразные данные по раличным таблицам и потом хотите динамически менять таблицу подставновки FK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 12:44 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
ЖэконЗадача примерна такова: реализовать в проектируемой БД возможность, в реквизитах объектов указывать ИД не из конкретной таблицы, а из произвольной. В примере выше ИД может указывать на табл2 или табл3. Подобная фишка есть в 1с. Вот как то так Смысл в этом какой? Ваши разные таблицы - это подвиды одной сущности? Или так, по приколу? PS В 1с много че есть, но в основном всякая хрень от безграмотности и последующей безысходности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 12:48 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
П-Л : Согласен пример не удачный, он лишь показывает что есть и что надо получить. iljy : Сущности разные, но имеют что то общее. В 1с это Наименование у справочников Меня в общем то интересует организация такой техники, а именно не жесткой завязкой полей содержащих ключи на таблицы с данными, а динамической, позволяющей указывать разные объекты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 13:09 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
авторСогласен пример не удачный, он лишь показывает что есть и что надо получить.Как водится на форуме, спрашиваем одно, а имеем в виду другое ? "Такую технику" и динамический SQL вообще, генерируемый с клиента, до смерти боятся дба и чистые эскуэльщики. Очень многое при этом отходит под контроль клиента. Если решение о таких нечетких, "слабых" связях взвешено и оправдано, кто запретит его вам применить ? "Универсальный справочник" считаю злом. ЕАВешные подходы применяю только в интерфесах - для "однообразного" редактирования разных данных, сидящих строго по своим таблицам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 13:18 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Жэконiljy : Сущности разные, но имеют что то общее. В 1с это Наименование у справочников Меня в общем то интересует организация такой техники, а именно не жесткой завязкой полей содержащих ключи на таблицы с данными, а динамической, позволяющей указывать разные объекты Ради бога, вот вам сходу 2 варианта: 1. Наследование таблиц (классический) Есть базовая таблица, содержащая ключевую информацию (ид, гуид, вид сущности) и общие для всех сущностей поля. На нее (по ид) ссылаются внешние ключи. Плюс для каждого вида сущности создается отдельная таблица, содержащая ид из основной + информацию, специфическую для конкретного вида. 2. Указание вида сущности непосредственно в ссылающейся таблице. Применим, когда таких таблиц и типов сущностей очень немного (1-2-3), а от сущностей-потомков растет большая иерархия и лень городить триггеры на корректное удаление-изменение. В этом случае в ссылающейся таблице делается 2 поля данных (тип сущности, ид сущности), на которых создается несколько вычисляемых полей, которые и являются ВК на конкретные таблицы сущностей. При этом не NULL из них всегда только одно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 13:21 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
дык это от безграмотности моей) на форуме новичок )) А по сути то мне надо удобство для себя организовать, а ДБА и прочие пока что в сторонке. Думаю, иной раз лучше что то эдакое сделать, чтобы второй раз легче. Основная задача - поиметь хорошую динамику базы, но и производительность не забывать. Взвесить и определить какие связи лучше и как их организовать я пока не в состоянии, т.к. нет большого опыта. Поэтому и обратился к Вам, умудренным спеца. iljy : что то вроде первого варианта я и хочу реализовать, поэтому то и задался вопросом, "а как левое соединение делать в БД, где ссылки не на конкретную таблицу идут?". Пока что вариант с объединением только есть у меня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 14:07 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Жэконiljy : что то вроде первого варианта я и хочу реализовать, поэтому то и задался вопросом, "а как левое соединение делать в БД, где ссылки не на конкретную таблицу идут?". Если не использовать ГУИД или какие-то соглашения о диапазонах автосчетчиков во внешних таблицах, то придется хранить не только ссылку на ID внешней таблицы, но и какой-то код, на какую таблицу ссылается данный ID. Тогда левый джоин со всеми внешними таблицами: Код: plaintext 1. 2. 3. 4. Чтобы выстроить атрибуты из всех внешни таблиц в один столбец придется написать CASE: Код: plaintext 1. 2. 3. 4. Либо собрать все внешние таблицы в один юнион, добавив к каждой свое <конкретное значение> и затем джоинить с этим набором по условиям ON tblMain.FK = <union набор>.PK AND tblMain.код = <union набор>.<конкретное значение>. Тогда кейза можно избежать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 14:21 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
если с гуидом тогда последний вариант без "AND tblMain.код = <union набор>.<конкретное значение>" можно делать. Думаю он всяко лучше чем с кейсом. Или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 14:48 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Критерий лучшести и правильности ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 14:59 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
ЖэконДумаю он всяко лучше чем с кейсом. Или я не прав? Вовсе не обязательно. Во-первых - тут никак не получится сделать ВК, соответсвенно никакой проверки целостности. А во-вторых - оптимизатор может на таких запросах себя вести не очень хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 15:09 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Жэкон, и кстати, вместо case тут вполне подойдет coalesce. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 15:11 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
П-ЛКритерий лучшести и правильности ? в данном случае, то что быстрее работает то для меня и лучше)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 15:14 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
ЖэконП-ЛКритерий лучшести и правильности ? в данном случае, то что быстрее работает то для меня и лучше)) Какова мощность данных ? Сколько будет аналогичных внешних таблиц ? При ограниченном количестве записей во внешних таблицах почему бы не сделать диапазонные автосчетчики ? И вы все-таки не описали первоначальную задачу в бизнес-терминах. Мы обсуждаем только с ваш подход к ее решению. Не факт, что он правильный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 15:17 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
iljyВовсе не обязательно. Во-первых - тут никак не получится сделать ВК, соответсвенно никакой проверки целостности. А во-вторых - оптимизатор может на таких запросах себя вести не очень хорошо. Насчет ВК это да казус, целостность организовать в программе можно. А может можно вьхами делать? Тогда и ВК получиться если я не ошибаюсь coalesce я прогуглю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 15:22 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
ЖэконНасчет ВК это да казус, целостность организовать в программе можно. Это порочный путь Жэкон А может можно вьхами делать? Тогда и ВК получиться если я не ошибаюсь Вьюхами делать что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 15:29 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
П-ЛКакова мощность данных ? Сколько будет аналогичных внешних таблиц ? При ограниченном количестве записей во внешних таблицах почему бы не сделать диапазонные автосчетчики ? И вы все-таки не описали первоначальную задачу в бизнес-терминах. Мы обсуждаем только с ваш подход к ее решению. Не факт, что он правильный. Мощность данных не очень большая, порядка 100 документов в день, иногда очень большие, с 1000 позиций, загрузка номенклатуры с характеристика, порядка несколько десятков тысяч. Аналогичных таблиц внешних в принципе не будет, некоторые могут иметь одинаковые поля. Диапазонные автосчетчики честно говоря не знаю, но подозреваю что будут непонятные моменты по обмену даннымми между узлами Вообще замысел, реализовать систему, с повышенной гибкостью, не такой как у 1с, но и не как у самописок. Нечто среднее. Где то упростить, где то организовать готовый функционал, чтобы в последствии оперативно работать. Первая задача организация структуры данных грамотная. На данный момент база 1с 10 гб, все нужно и все жалко удалять. Поэтому есть куда стремиться и развиваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 15:47 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
iljyЖэконНасчет ВК это да казус, целостность организовать в программе можно. Это порочный путь Жэкон А может можно вьхами делать? Тогда и ВК получиться если я не ошибаюсь Вьюхами делать что? Во вьюхе делать объединение. и на вьюху ВК цеплять. Или это тоже некашерно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 15:49 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
ЖэконМощность данных не очень большая, порядка 100 документов в день, иногда очень большие, с 1000 позиций, загрузка номенклатуры с характеристика, порядка несколько десятков тысяч. Аналогичных таблиц внешних в принципе не будет, некоторые могут иметь одинаковые поля. Диапазонные автосчетчики честно говоря не знаю, но подозреваю что будут непонятные моменты по обмену даннымми между узлами Вообще замысел, реализовать систему, с повышенной гибкостью, не такой как у 1с, но и не как у самописок. Нечто среднее. Где то упростить, где то организовать готовый функционал, чтобы в последствии оперативно работать. Первая задача организация структуры данных грамотная. На данный момент база 1с 10 гб, все нужно и все жалко удалять. Поэтому есть куда стремиться и развиваться. Тогда воспользуйтесь старым правилом - не умножайте сущности без необходимости. По-русски еще говорят "не изобретайте велосипед". Вам нужна возможность хранить дополнительные данные, различные для экземпляров? Есть сразу 4 стандартных пути: 1. EAV 2. Наследование таблиц 3. XML-поля 4. SPARSE-поля Это примерно в порядке убывания гибкости. ЖэконВо вьюхе делать объединение. и на вьюху ВК цеплять. Или это тоже некашерно? ? И какая СУБД поддерживает такую чудную возможность?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 16:06 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Похоже можно заключить, что корень пролемы - широкая номенклатура товаров с разными характеристиками (атрибутами). Каким образом будут проявляться эти характеристки товаров ? При выборе и заказе товара ? В финансовых отчетах о купле/продаже товаров за период в разрезе этих характеристик ? Смотрите различные реализации ЕАВ. Изобрести что-то новое трудно. "Все велосипеды уже изобретены и ждут своих седаков" (С) SQL.RU ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 16:26 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
iljy, эти темы прочитаю, на счет вьюх это я перегнул) а так думаю былобы не плохо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 06:49 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
П-Л, Вы тоже про ЕАВ говорите, неужели это панацея от всех проблем) буду читать про это. --- А с номенклатурой действительно везде участвует характеристика: заказ, приход, отправка в магазин, продажа. В эске эти операции отражаются в куче регистров, что по первой вообще понять не мог. А разница в 1 колонке, лично мне казалось раньше что лучше в 1 таблице сделать пару лишних колонок, чем отдельную таблицу. Сейчас не уверен совсем. А вы как думаете лучше большие таблицы, или много мелких? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 07:02 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
ЖэконП-Л, Вы тоже про ЕАВ говорите, неужели это панацея от всех проблем) буду читать про это. Отнюдь, создает она проблем тоже прилично. Просто это очень гибкая система, но за все приходится платить. ЖэконА вы как думаете лучше большие таблицы, или много мелких? Все хорошо в меру. Работать с таблицей в 30000 полей ничуть не удобнее, чем с 10000 мелких таблиц по 10 полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 09:36 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
ЖэконПервая задача организация структуры данных грамотная. тогда второй может и не быть ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 09:53 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
iljy, нужно к консенсусу стремиться). До таких количеств полей пожалуй не дойду (уйду в монастырь скорей))). а можете подсказать ссылку на описание ЕАВ, а то в основном хвалебные отзывы одни а примера не могу найти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 10:25 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
koJIo6ok, именно, чем дальше в лес, тем больше дров. Поэтому то и хочу сейчас решить какую модель использовать, и в дальнейшем следовать ей. Тогда больше шансов на успех ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 10:27 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Жэкон, а у вас уже есть постановка задачи? точнее вы определили тот необходимый минимум в вашей системе который надо реализовать чтобы можно было ее использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 10:39 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
Почитал про ЕАВ, мне кажется это слишком, все таки по моему лучше значения (строки, числа, ключи) хранить в таблице объекта, а не распихивать все по разным таблицами. Такой подход должен быстродействие улучшить. и к тому же ЕАВ как я понял не решит сути моего вопроса: В одной таблице указан ключ на внешние таблицы (неважно как достигаем уникальность но она есть). Требуется левым соединением прицепить значения конкретного поля (в 2х табл одинаковое поле ) к первой таблицы в 1 поле (2 поля + case или сoalesce = результируеще поле, как варианты описали, но думаю ими не стоит злоупотреблять). Еще думаю можно например вынести общие поля (у всех справочников есть реквизиты номер, описание ...) в одну таблицу, но тогда во первых при обращении к маленькой части данных (выборка 1 справочника) потянуться куча левых данных (остальные справочники рядышком лежать будет). во вторых это не решит проблему в корне, а лишь отчасти, т.к. позволит указыватье лишь объекты справочников, а не любые объекты системы. Хотя в последнем возможно и нет необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 10:49 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
koJIo6ok, Пока что очень расплывчато. основная идея - обеспечить если и не динамику, то хорошую гибкость организации данных и работу с ними. Правильная структура БД серьезно облегчит обработку данных. Как получиться первая задача и станет ясно, какими будут следующие, и потянем мы их или нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 11:09 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
ЖэконПочитал про ЕАВ, мне кажется это слишком, все таки по моему лучше значения (строки, числа, ключи) хранить в таблице объекта, а не распихивать все по разным таблицами. Такой подход должен быстродействие улучшить. Быстродействие - улучшит. Но основное преимущество EAV как раз во всегда фиксированном числе таблиц фиксированной структуры и, как следствие, фиксированных запросах. Жэкони к тому же ЕАВ как я понял не решит сути моего вопроса: В одной таблице указан ключ на внешние таблицы (неважно как достигаем уникальность но она есть). Требуется левым соединением прицепить значения конкретного поля (в 2х табл одинаковое поле ) к первой таблицы в 1 поле (2 поля + case или сoalesce = результируеще поле, как варианты описали, но думаю ими не стоит злоупотреблять). EAV решает задачу, а не воплощает ваше видение решения. Вы определитесь, чего вам больше хочется - задачу решить или сделать по-своему. ЖэконЕще думаю можно например вынести общие поля (у всех справочников есть реквизиты номер, описание ...) в одну таблицу, но тогда во первых при обращении к маленькой части данных (выборка 1 справочника) потянуться куча левых данных (остальные справочники рядышком лежать будет). Это проблема хранилища, и для ее решения существуют индексы. Жэкон во вторых это не решит проблему в корне, а лишь отчасти, т.к. позволит указыватье лишь объекты справочников, а не любые объекты системы. Хотя в последнем возможно и нет необходимости. По-моему вы явно нарушаете последовательность действий. У вас нет четкого представления о задаче, а вы уже за реализацию бьетесь. Ничего хорошего из этого не выйдет. Вам весь топик твердят, что надо сначала понять, что вы будете там хранить и что вы хотите с сохраненными данными делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 11:13 |
|
||
|
Удобная система связей и уникальность объектов в Распределенной БД
|
|||
|---|---|---|---|
|
#18+
iljyБыстродействие - улучшит. Но основное преимущество EAV как раз во всегда фиксированном числе таблиц фиксированной структуры и, как следствие, фиксированных запросах. Данные перемешаны до безобразия будут, а запросы, хмм будут фиксированные, но гораздо сложнее, с бесконечными связями и условиями. iljyEAV решает задачу, а не воплощает ваше видение решения. Вы определитесь, чего вам больше хочется - задачу решить или сделать по-своему. Рещить задачу наилучшим образом - вот мое желание. Если бы я хотел делать "по-своему", а не "как лучше" наверно даже этой темы небылобы)) Поэтому думаю iljyПо-моему вы явно нарушаете последовательность действий. У вас нет четкого представления о задаче, а вы уже за реализацию бьетесь. Ничего хорошего из этого не выйдет. Вам весь топик твердят, что надо сначала понять, что вы будете там хранить и что вы хотите с сохраненными данными делать. Хранить данные буду, с которыми, будет работать пользователь через объектную модель реализованную в программе. На мой взгляд ЕАВ неплохо выглядит, но все делать на ней думаю смысла нет, а вот в разумных пределах, где действительно выгодна такая реализация стоит ее использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2011, 12:39 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1542053]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
153ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
88ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 512ms |

| 0 / 0 |
