|
|
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
Можем тут поспорить ещё, что такое ERP - системы, используются-ли в них БД, релятивистские-ли они и т.д. и т.п., но не хочется, если честно. Чего хотелось, так понять, в чём преимущества хранения всех справочников в одной таблице перед созданием для каждого справочника таблицы отдельной. Услышал аргументы - облегчённый "поиск по значению", "у нас так сделано" и "проблем ещё не было" - согласитесь, что солидной эту базу доказательств не назвать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 23:34 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
iscrafmнет, документы в данном случае - однотипные таблицы Понятно. То есть чукча не читатель, главное встрять и что-нибудь ляпнуть. iscrafm, то о чем речь в теме идет. Попробуйте что ли прочитать тему. Хотя бы первое письмо, если уж на большее сил не хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 23:53 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
egorychМожем тут поспорить ещё, что такое ERP - системы, используются-ли в них БД, релятивистские-ли они и т.д. и т.п., но не хочется, если честно. Чего хотелось, так понять, в чём преимущества хранения всех справочников в одной таблице перед созданием для каждого справочника таблицы отдельной. Услышал аргументы - облегчённый "поиск по значению", "у нас так сделано" и "проблем ещё не было" - согласитесь, что солидной эту базу доказательств не назвать? Во всех этих вопросах проскальзывает одно желание - не возиться с переделкой БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 00:07 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
egorychЧего хотелось, так понять, в чём преимущества хранения всех справочников в одной таблице перед созданием для каждого справочника таблицы отдельной.Да их, в общем-то и нет. Разные справочники, как правило, описывают разные сущности с разным набором свойств, поэтому для того, чтобы поместить их все в одну таблицу, надо приложить немало усилий, и, как говориться в одном анекдоте, быть "очень сильным". Другое дело, когда речь идет о частном случае справочников, если так можно выразиться, - классификаторах, которые имеют стандартный и ограниченный набор свойств, чаще всего это некий код и наименование(описание). В таком случае есть огромный соблазн "засунуть" их все в одну таблицу, с целью сократить усилия на написание и дублирование кода, который ими оперирует. Полагаю, это желание и есть основная причина, по которой нечто, вообще говоря - достаточно разнородное, пытаются "впихнуть" в одну таблицу. И тут же появляется маленький "бонус", теоретически пользователи могут сами добавлять новые виды классификации, при желании - иерархической. На мой взгляд, такое "слияние" не очень оправдано, тем более, что она чревато, но если соблазн есть, то всегда найдутся те, кто ему уступит. Как мне кажется, в таких случаях программисты просто перекладывают ответственность с себя на пользователя. Типа, на вот тебе конструктор, что захочешь, то и наваяешь. И наваяют, наблюдались прецеденты, Россия, по крайней мере, "сильными" особями не обделена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 00:17 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовВо всех этих вопросах проскальзывает одно желание - не возиться с переделкой БД. Забавно :-) А надо было переделывать? Спор, вроде, теоретический..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 00:19 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
2 ChA: +1 ЗЫ Непонятен только напор "апологетов" ))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 00:31 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
egorych2 ChA: +1 ЗЫ Непонятен только напор "апологетов" ))))))) Когда будете жить только на средства вырученные от продаж и обслуживания своих программ будет понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 00:56 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
Жесть! а я на какие средства живу, интересно? ну Вы, блин, даёте! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 01:07 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовВо всех этих вопросах проскальзывает одно желание - не возиться с переделкой БД. Проскальзывает навязчивая идея.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 08:40 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
egorychЖесть! а я на какие средства живу, интересно? ну Вы, блин, даёте! Откуда я знаю? Вы кто, свободный художник? Наемник? Если последнее, то я не считаю, что Вы живете ... Это Ваш хозяин живет от продаж и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 10:23 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовОткуда я знаю? ... Вот именно, не знаете ... Замутим тему "обсуди коллегу"? Таким образом дошли уже до аргумента "мал ещё, дорастёшь - поймёшь", следующий пункт маршрута - "сам дурак?" доказательная база расширяется стремительно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 10:46 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
Вы забыли еще один важный аспект - если справочники в одной таблице и нужно, чтобы пользователь Вася видел только один набор справочников, а Петя - другой, то что в этом случае делать??? В случае "Один справочник - Одна таблица" все решается на уровне БД: раздал нужные гранты и спи спокойно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 10:54 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
hammersmithВы забыли еще один важный аспект Я бы не назвал этот аспект важным. Во-первых, это обычная row-level security, ничего военного. Во-вторых, ситуация "пользователь А не должен видеть тривиального справочника Б" исчезающе редка. Подчеркну - речь не идет о справочнике клиентов, оргструктуре предприятия и прочем "явно неоднотипном", речь о куда более простых и в общем общеизвестных данных. И наконец, куда чаще задача доступа оказывается не в "запретить доступ к справочнику", а "разрешить видеть только некоторые позиции справочника", то есть опять-таки row-level security. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 11:20 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
Суть вопроса - 1. надо ли создавать так называемые справочники-классификаторы ввиде жестких таблиц БД (одна или много не имеет значения)? 2. Как совместить в таких справочниках "носки" с "топор"? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 11:25 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовСуть вопроса - 1. надо ли создавать так называемые справочники-классификаторы ввиде жестких таблиц БД (одна или много не имеет значения)? Зависит от того, что вы собираетесь там хранить. Если названия типов улиц - то почему бы и нет. Сахават Юсифов2. Как совместить в таких справочниках "носки" с "топор"? :) Просто! Код: plaintext 1. Или вы опять о каком-то своем хитро вымученном классификаторе к которому потом будете прикручивать кучу немерянной функциональности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 11:37 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
Bely Или вы опять о каком-то своем хитро вымученном классификаторе к которому потом будете прикручивать кучу немерянной функциональности? Угу. :) Из 30 летнего опыта - любая программа с жизненным циклом больше 3 лет потихоночку движется в направлении объектной кучи и внешних классификаторов. к 7-10 году она полнофункциональна, избыточна и ,к сожалению, мертва. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 11:48 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
softwarerПопробуйте что ли прочитать тему. Хотя бы первое письмо, если уж на большее сил не хватает. Могу только посоветовать Вам сделать тоже самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 12:14 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовИз 30 летнего опыта - любая программа с жизненным циклом больше 3 лет потихоночку движется в направлении объектной кучи и внешних классификаторов. к 7-10 году она полнофункциональна, избыточна и ,к сожалению, мертва. :( Если она изначально не сделана как безразмерная объектная классифицируемая куча. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 12:33 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
мод Сахават ЮсифовИз 30 летнего опыта - любая программа с жизненным циклом больше 3 лет потихоночку движется в направлении объектной кучи и внешних классификаторов. к 7-10 году она полнофункциональна, избыточна и ,к сожалению, мертва. :( Если она изначально не сделана как безразмерная объектная классифицируемая куча. Хорошо хоть Вы есть. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 12:35 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
Сахават ЮсифовСуть вопроса - 1. надо ли создавать так называемые справочники-классификаторы ввиде жестких таблиц БД (одна или много не имеет значения)? 2. Как совместить в таких справочниках "носки" с "топор"? :) Картина такая: "носки" и "топор" - это товары - справочник Товары со своей оригинальной (по отношению к другим справочникам) структурой. Структура справочников определяется пользователем и автоматом отображается на жесткую структуру БД. Но "носки" - это одежда, а "топор" - инструмент. Одежда и инструмент - элементы классификатора Вид товара. Набор классификаторов определяется тоже пользователем. Их иерархическая структура фиксирована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 14:21 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
мод Сахават ЮсифовСуть вопроса - 1. надо ли создавать так называемые справочники-классификаторы ввиде жестких таблиц БД (одна или много не имеет значения)? 2. Как совместить в таких справочниках "носки" с "топор"? :) Картина такая: "носки" и "топор" - это товары - справочник Товары со своей оригинальной (по отношению к другим справочникам) структурой. Структура справочников определяется пользователем и автоматом отображается на жесткую структуру БД. Но "носки" - это одежда, а "топор" - инструмент. Одежда и инструмент - элементы классификатора Вид товара. Набор классификаторов определяется тоже пользователем. Их иерархическая структура фиксирована. Я вопросов то не задавал. :) Хотя приятно получить хорошие ответы. Кстати, справочники - тоже классификаторы. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2007, 15:05 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
softwarer OraNew2007Не могли бы вы подробнее аргументировать какие минусы хранения простых справочников в одной таблице, какие плюсы при создании множества простых таблиц-справочников именно для Oracle. Спасибо. Oracle вряд ли отличается здесь от других сходных СУБД. Аргументация следующая: 1. Объединение не дает никаких преимуществ. Операций "над всеми справочниками скопом", скажем "значение должно быть уникально среди всех записей всех справочников" практически не встречается. Клиентский код типа "редактирование любого справочника" пишется без каких-либо проблем. 2. При ссылке на "объединенный справочник" возникает опасность сослаться на запись другой категории - скажем, в поле "id валюты" внести id записи "Ботинки 46-го размера". Избавиться от этого эффекта можно только денормализацией и составным внешним ключом, включающим id категории. А такое решение - мусор и большие накладные расходы. 3. Осложняется реализация всех прочих бизнес-правил, относящихся к справочникам. Скажем, "код валюты" должен быть написан большими буквами и состоять из трех знаков, а "название категории" может быть длинным, но первая буква обязана быть заглавной, остальные неважно - и вот это вкупе с еще десятком вариантов относится к одному полю. 4. В любой код, работающий с "объединенным справочником", нужно не забывать добавлять фильтр по категории или напротив, заполнение поля категория. Можно уверенно утверждать, что если не использовать вспомогательных средств (например, view with check option), где-то такие проверки будут забыты. А если использовать - возникает вопрос, нафига эта общая таблица, если работаем с "отдельными". 5. Добавление новых полей и вообще изменение требований к конкретному справочнику повиснет дамокловым мечом, геморроем в каждом случае. Скажем, представьте себе, что один справочник нужно насадить на временную ось (добавить поля date_from - date_to со смыслом "в такой-то интервал времени название было таким-то), а другие - оставить как есть. 6. C точки зрения производительности объединенный справочник - скорее плох. Потребуется собирать гистограммы по всем полям внешних ключей и в общем - дополнительный геморрой, возникающий из-за искусственно внесенного в данные перекоса. Здравствуйте уважаемый softwarer! Мне захотелось по этому поводу привести один пример. Я в принципе согласен со всеми перечисленными доводами, и сам почти всегда так делаю. Но почему Microsoft использует таблицу sysobjects в SQL Server 2000, в которой хранятся разнотипные объекты, такие как таблицы, первичные ключи, ограничения уникальности, пользовательские функции, хранимые процедуры и т.д. ? Ведь так в СИСТЕМНЫХ таблицах теоретически могут появиться неверные ссылки, например вместо ссылки на хранимую процедуру будет ссылка на первичный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 14:56 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
RMihНо почему Microsoft использует таблицу sysobjects в SQL Server 2000, в которой хранятся разнотипные объекты, такие как таблицы, первичные ключи, ограничения уникальности, пользовательские функции, хранимые процедуры и т.д. ? Ведь так в СИСТЕМНЫХ таблицах теоретически могут появиться неверные ссылки, например вместо ссылки на хранимую процедуру будет ссылка на первичный ключ.1. Например, для того, чтобы гарантировать, что в базе не появится 2 разных объекта с двумя одинаковыми именами. Например индекс ТТ1 и таблица ТТ1. 2. SQL сервер, это не совсем приложение, которое работает с БД. Это сама БД. И если лазать в системных словарях руками (а не через сервер), то чудес может быть больше чем ожидается. Сам же сервер - лазает правильно и является гарантом того, что ничего лишнего не появяится (как президент). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 15:12 |
|
||
|
Однотипные таблицы
|
|||
|---|---|---|---|
|
#18+
RMihНо почему Microsoft использует таблицу sysobjects в SQL Server 2000, в которой хранятся разнотипные объекты, .... Вряд ли я смогу гарантированно правильно ответить на вопрос "какими именно соображениями руководствовался Microsoft", тем более что я не помню точного содержимого этой таблицы. Выскажу несколько соображений "на тему". 1. Это таки не "совсем несвязанные справочники", вполне реальны операции, общие для всех или многих из указанных типов, вполне возможны ссылки на "один из нескольких типов". Скажем, если в некотором внутреннем представлении оператора select фигурирует нечто со смыслом [SELECT * FROM <object_id=10>], этот самый object_id может ссылаться и на таблицу, и на представление, и на хранимку. 2. В ядрах таких вот "давних и старых проектов" по естественным причинам продолжают жить подходы, которые были нормальными в те времена, когда велась разработка первых версий, но малоудачные с сегодняшней точки зрения. 3. Это в общем-то не обычная SQL-таблица, похожая на таблицы в приложениях. Скажем, вряд ли кто-нибудь и когда-нибудь использует к ней update по многим записям. Да и массовые селекты к ней - третьестепенная функция. Это скорее "объектная таблица" в том виде, в котором они присутствуют в ООСУБД. Если Вас утешит, в Oracle использован другой подход - таблицы, представления, процедуры и все прочее описывается в различных системных таблицах. Сходу я могу вспомнить только одно "совмещение" - в таблице USER$ хранятся как пользователи, так и роли (впрочем, согласитесь, это действительно очень близкие понятия). RMihВедь так в СИСТЕМНЫХ таблицах теоретически могут появиться неверные ссылки, например вместо ссылки на хранимую процедуру будет ссылка на первичный ключ. С практической точки зрения стоит думать о вероятности. Скажем, работая с хранилищами данных, я не испытывал большого стыда, отключая на production большинство ограничений целостности, хотя для обычных OLTP-систем я бы крайне не рекомендовал такой подход. Причина - обновление данных производится только и исключительно ETL-процессом, написанном единомоментно, тестируемом целиком и весьма тщательно, довольно небольшим по коду и обвешанным теми же проверками. Я мог не опасаться, что кто-то другой напишет процедуру, которая лезет править данные и портит их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2007, 15:35 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34578435&tid=1542889]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
91ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 465ms |

| 0 / 0 |
