powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / одно поле -> две таблицы. Что подскажет опыт?
10 сообщений из 35, страница 2 из 2
одно поле -> две таблицы. Что подскажет опыт?
    #32153627
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но уровень серотонина нужно поднимать

Хм, а можно узнать, как и зачем.
...
Рейтинг: 0 / 0
одно поле -> две таблицы. Что подскажет опыт?
    #32153643
Фотография wara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впору тут еще и медицинскую рубрику организовать...:-)
Или тему - "Влияние гормонов на проектировщиков баз данных"
...
Рейтинг: 0 / 0
одно поле -> две таблицы. Что подскажет опыт?
    #32153684
Репликант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jinn: \r
Никакой тяги - обыкновенная систематизация хранимых данных. Формы нормализации - понятие условное, я бы даже сказал утрированное. А вот то, что в дальнейшем потребуется поиск по контексту наименования - я мало сомневаюсь. Данные хранятся для использования, а не для красоты :) \r
\r
Ну то, что не для красоты это мы знаем :) Да, нормализация - не самоцель, но забивать или переигрывать с этим понятием не следует. Вот вы "kondi" порекомендовали дополнительный джойн, а надо ли оно ему? Вдруг у него экспериментальная рецептура состав меняет, а ее наименование не изменяется, т.е у них на предприятии бизнес-правила допускают существование нескольких объектов с одинаковыми наименованиями, но при этом с разными артикулами/кодами/ИД, например, несколько штук "торт шоколадный №28", но разными составами. Т.е опять должен определять предметник, т.е "kondi". С технической точки конечно все равно, но вот с человеческой - поиск чего-либо по наименованию, а не по числовому ИД гораздо удобнее потому что люди имена запоминают лучше чем числа\r
\r
Ну, я их особо и не использовал, просто обявлял символьный тип, а потом приводил в нужный. \r
\r
Вопрос был конкретный: есть такое в Oracle или там также как в MSSQL на основе системных типов данных или sql_variant? (не идти же мне в раздел по Oracle) ^)
...
Рейтинг: 0 / 0
одно поле -> две таблицы. Что подскажет опыт?
    #32153897
FED
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FED
Гость
А где можно познакомится с нормальными структурными подходами (SDLC, SASD и тд) к разработке БД и с реляционной теорией Кодда ,
желательно в нете?
...
Рейтинг: 0 / 0
одно поле -> две таблицы. Что подскажет опыт?
    #32154201
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Репликант
Ну то, что не для красоты это мы знаем :) Да, нормализация - не самоцель, но забивать или переигрывать с этим понятием не следует. Вот вы kondi порекомендовали дополнительный джойн, а надо ли оно ему? Вдруг у него экспериментальная рецептура состав меняет, а ее наименование не изменяется, т.е у них на предприятии бизнес-правила допускают существование нескольких объектов с одинаковыми наименованиями, но при этом с разными артикулами/кодами/ИД, например, несколько штук "торт шоколадный №28", но разными составами. Т.е опять должен определять предметник, т.е kondi. С технической точки конечно все равно, но вот с человеческой - поиск чего-либо по наименованию, а не по числовому ИД гораздо удобнее потому что люди имена запоминают лучше чем числа

Именно для поиска по контексту эта архитектура и расчитана. При таком поиске, еще раз заявляю, будут найдены все объекты с похожим или одинаковым наименованием. При ~500000 наименований все работает шустро.

Ну, я их особо и не использовал, просто обявлял символьный тип, а потом приводил в нужный.

Вопрос был конкретный: есть такое в Oracle или там также как в MSSQL на основе системных типов данных или sql_variant? (не идти же мне в раздел по Oracle) ^)

Да, можно создать и использовать подобие объектов (я с ними не работаю). Эта возможность появилась в последних версиях Oracle
...
Рейтинг: 0 / 0
одно поле -> две таблицы. Что подскажет опыт?
    #32154716
kondi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Jinn
По поводу параметров, конечно удобно добавлять новые, но если новых практически не появляется, то стоит ли усложнять структуру. Это универсальное решение наверно сильно помогает разработчикам в их «борьбе» с заказчиком? :) Какие критерии Вы используете для принятия решения о таком способе хранения параметров?

Наверно мой вариант №2 надо выкинуть, кривой он какой-то?

ВНИМАНИЕ: изменяем постановку задачи (да Репликант это жизнь :) ), - полуфабрикаты и изделия могут иметь несколько рецептур, рецептура может принадлежать только одному изделию или п/ф.

Вариант 1)
Таблица RP – изделия, сырье и полуфабрикаты (ID_RP (PK), Name_RP, Flag_RP, Par_RP_1, Par_ RP_2, Par_ RP_3)
Таблица RcRP – рецептуры (ID_Rс(PK), Name_Rс, ID_RP(FK), Par_ RcRP_1, Par_RcRP_2, Par_ RcRP_3)
Таблица Recipe – содержание рецептуры (ID_RP(FK), ID_RP_Comp(FK), ID_Rc_Comp(FK), Weight)
PK нет, т.к. для компонента рецептуры «сырье» нет рецептуры - ID_Rc_Comp=NULL

Вариант 2)
Вариант предложенный Jinn
Модифицированный для случая когда полуфабрикаты и изделия могут иметь несколько рецептур

2 Jinn
Подскажите пожалуйста новую структуру, на первый (мой поверхностный взгляд) без пустышек рецептур для сырья не обойтись?

Пояснения:
Что такое рецептура? Это название и некие параметры расчета этой рецептуры.
Что такое содержание рецептуры? Это - что и сколько входит в рецептуру.
Очень важно не путать «рецептуру» и «содержание рецептуры»

Пример

«Изделие №1»
«Полуфабрикат №1»
«Сырье №1»
«Сырье №2»

«Изделие №1» имеет 2 рецептуры «Рецептура №1» и «Рецептура №2»
«Полуфабрикат №1» имеет 2 рецептуры «Рецептура №3» и «Рецептура №4»


содержание «Рецептуры №1» «Изделия №1»:
«Полуфабрикат №1» изготовленный по «Рецептуре №3» - 50 кг.
«Сырье №1» - 50 кг.

содержание «Рецептуры №2» «Изделия №1»:
«Полуфабрикат №1» изготовленный по «Рецептуре №3» - 40 кг.
«Сырья №1» 80 кг.

содержание «Рецептуры №3» «Полуфабриката №1»:
«Изделие №1» изготовленное по «Рецептуре №1» - 20 кг.
«Сырья №2» - 10 кг.

содержание «Рецептуры №4» «Полуфабриката №1»:
«Сырье №1» - 30 кг.
«Сырья №2» - 10 кг.
...
Рейтинг: 0 / 0
одно поле -> две таблицы. Что подскажет опыт?
    #32154730
Репликант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Jinn:
Именно для поиска по контексту эта архитектура и расчитана. При таком поиске, еще раз заявляю, будут найдены все объекты с похожим или одинаковым наименованием. При ~500000 наименований все работает шустро.

А никто и не сомневается, что они будут найдены просто с 1-м лишним джойном по сравнению с моделью, в к-рой нет таблицы "Наименования" :)

Да, можно создать и использовать подобие объектов (я с ними не работаю). Эта возможность появилась в последних версиях Oracle

Ясно, т.е речь идет о так называемых "объектных" типах данных появившихся в Oracle 8.х, например, списках (list), состоящих из нескольких переменных разных типов
...
Рейтинг: 0 / 0
одно поле -> две таблицы. Что подскажет опыт?
    #32155309
kondi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Репликант
Вам был вопрос:

>А где можно познакомится с нормальными структурными подходами (SDLC, SASD и тд)

Может Вы SADT имели ввиду?
...
Рейтинг: 0 / 0
одно поле -> две таблицы. Что подскажет опыт?
    #32155371
Jinn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kondi
2 Jinn
Подскажите пожалуйста новую структуру, на первый (мой поверхностный взгляд) без пустышек рецептур для сырья не обойтись?

Пояснения:
Что такое рецептура? Это название и некие параметры расчета этой рецептуры.
Что такое содержание рецептуры? Это - что и сколько входит в рецептуру.
Очень важно не путать «рецептуру» и «содержание рецептуры»

Я не стал приводить пример (желающие сами посмотрят), но пример несколько некорректен. Изделие №1 изготовленное по рецептуре №1 не может входить в полуфабрикат №1 который, в свою очередь, входит в изделие №1. Если это отходы - то они должны учитываться отдельно в разделе сырье (которое не имеет рецептуры).

Но выглядеть это будет примерно так:
{01,12}Изделия
{02,13} Изделие №1
{03,14} Рецептура №1
{04,15} Рецептура №2
{05,16}Полуфабрикаты
{06,17} Полуфабрикат №1
{07,18} Рецептура №3
{08,19} Рецептура №4
{09,20}Сырье
{10,21} Сырье №1
{11,22} Сырье №2

Здесь приведено дерево уже с именами. В скобках указаны ID дерева и наименования.

Таблица параметров будет выглядеть так (ID параметра, ID владельца, ID наименования, Значение).

23,03,18,(50 кг)
24,03,21,(50 кг)
25,04,18,(40 кг)
26,04,21,(80 кг)
27,07,14,(20 кг)
28,07,22,(10 кг)
29,08,21,(30 кг)
30,08,22,(10 кг)

Как видно, в качестве владельца параметра указывается положение в дереве, а в качестве наименования параметра положение в таблице наименований, вне зависимости от положения этого наименования в дереве.
Разложение в вертикальную таблицу как раз и позволяет изюежать пустых полей. Ну а алгоритм использования параметров у каждого свой.
Логика такого хранения, может быть, и не совсем понятна на первый взгляд, но после "привыкания" снимаются многие проблемы и проблемки с использованием справочных данных.

2 Репликант

Никаких join'ов не надо, поиск осуществляется одним запросом, примерно таким:

select /*+Rule*/
tree_id, owner_id, name_id,
(select /*+Rule*/ N.Names
from Dict_Name N
where N.Name_ID=T.Name_ID) as Names,
LEVEL
from Dict_Tree T
start with Name_ID in (select /*+Rule*/ N.Name_ID
from Dict_Name N
where N.Names like '%VAL%')
connect by prior owner_id=tree_id

Этот запрос выведет всю иерархию до искомого слова включительно, в обратном порядке.
...
Рейтинг: 0 / 0
одно поле -> две таблицы. Что подскажет опыт?
    #32162563
Репликант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 kondi:
Вам был вопрос:
>А где можно познакомится с нормальными структурными подходами (SDLC, SASD и тд)
Может Вы SADT имели ввиду?


Нет, я имел в виду не SADT (методологию структурного анализа/проектирования вообще процессных систем, выраженную в методах/нотациях IDEF0,1,2,3 и тд), а именно методологии анализа/проектирования софтовых систем : SASD/SAD (Structured (system) analysis and design в методах/нотацияъ DFD,ERD,JSC, разработанные Йордоном-ДеМарко-Джексоном) и SDLC (Strucutured development life cycle, вообще чистый процесс как в ISO12207, к-рый может использовать любые методы/нотации для получения требований или построения моделей)

2 Jinn:
Код: plaintext
1.
2.
3.
4.
5.
6.
...(select  /*+Rule*/  N.Names          /* подзапрос 1 */ 
from Dict_Name N 
where N.Name_ID=T.Name_ID)..
...
Name_ID in (select  /*+Rule*/  N.Name_ID     /* подзапрос 2 */ 
from Dict_Name N 
where N.Names like '%VAL%')...


все равно если требуется не джойн, то требуется 1-й подзапрос для получения имен и 2-й - для объединения. Как я понимаю необходимость выноса наименований это "недостаток" древовидной структуры:
Таким образом одно наименование может входить в разные ветви дерева, точнее разные ветви дерева могут ссылаться на одно наименование.
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / одно поле -> две таблицы. Что подскажет опыт?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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