|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
Serguei Я никогда не утверждал, что существуют системы, которые никак не контролируют целостность данных. Если считать "использование foreign key" и "контроль целостности" синонимами, как тогда понимать эту фразу? Serguei ptr128 softwarer, есть ERP, которые не используют foreign key на уровне БД. Но тогда они используют foreign key на уровне сервера приложений. Данное утверждение было бы верно ... Вы уж либо приводите пример, где данное утверждение не верно, либо посыпайте голову пеплом ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 13:53 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
ptr128 L_argo, больше всего не люблю такие таблицы из-за того, что во всех таблицах, которые на них ссылаются, приходится хранить не только ссылку на элемент справочник, но и код этого справочника (хотя бы в вычисляемом постоянном поле). Иначе foreign key не сделать. Ну и что тут страшного? Код справочника много места не займёт. На код справочника можно ещё жесткий CHECK "навесить". В SELECTах его использовать не придётся: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 02:42 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
L_argo ptr128 L_argo, больше всего не люблю такие таблицы из-за того, что во всех таблицах, которые на них ссылаются, приходится хранить не только ссылку на элемент справочник, но и код этого справочника (хотя бы в вычисляемом постоянном поле). Иначе foreign key не сделать. Ниодна ERP-система foreign key не использует. За ненадобностью. Зато программисты всегда при деле: заняты поиском и устранений периодически возникающих расхождений. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 02:43 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
Валерий Юринский Зато программисты всегда при деле: заняты поиском и устранений периодически возникающих расхождений. Т.к. причина "расхождений" вовсе не по причине отсутствия констрайнт. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 10:03 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
L_argo Валерий Юринский Зато программисты всегда при деле: заняты поиском и устранений периодически возникающих расхождений. Т.к. причина "расхождений" вовсе не по причине отсутствия констрайнт. Здесь я имею в виду наличие "расхождений" именно по причине отсутствия декларативных ограничений целостности (констрейнтов) типа Foreign Key. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 11:22 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
Валерий Юринский L_argo пропущено... Они в любом случае будут этим заниматься. Т.к. причина "расхождений" вовсе не по причине отсутствия констрайнт. Здесь я имею в виду наличие "расхождений" именно по причине отсутствия декларативных ограничений целостности (констрейнтов) типа Foreign Key. Допустим надо импортировать csv в 1млн. строк. Среди них есть несколько с неверным ключом. Импорт через IS пакет напишет ошибку и не вставит ничего. Твои действия ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 11:42 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
L_argo Валерий Юринский Зато программисты всегда при деле: заняты поиском и устранений периодически возникающих расхождений. Т.к. причина "расхождений" вовсе не по причине отсутствия констрайнт. В 90+% случаев - именно по этой причине. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 12:32 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
L_argo Валерий Юринский пропущено... Здесь я имею в виду наличие "расхождений" именно по причине отсутствия декларативных ограничений целостности (констрейнтов) типа Foreign Key. Допустим надо импортировать csv в 1млн. строк. Среди них есть несколько с неверным ключом. Импорт через IS пакет напишет ошибку и не вставит ничего. Твои действия ? :) Варианты "борьбы": 1) Исправить CSV файл и повторить загрузку. 2) Удалить из CSV-файла неверные строки, остальные загрузить. Потом разобраться с неправильными данными, исправить их и догрузить. Ваш вариант плохой: N) Загрузить "грязные" данные в базу, отключив ограничения целостности, а потом заниматься "чисткой" уже в рабочей базе данных. P.S. Что такое "IS пакет"? Это то, что программист написал для загрузки данных из CSV-файла? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 12:59 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
Валерий Юринский L_argo пропущено... И что ? Допустим надо импортировать csv в 1млн. строк. Среди них есть несколько с неверным ключом. Импорт через IS пакет напишет ошибку и не вставит ничего. Твои действия ? :) Варианты "борьбы": 1) Исправить CSV файл и повторить загрузку. 2) Удалить из CSV-файла неверные строки, остальные загрузить. Потом разобраться с неправильными данными, исправить их и догрузить. Ваш вариант плохой: N) Загрузить "грязные" данные в базу, отключив ограничения целостности, а потом заниматься "чисткой" уже в рабочей базе данных. P.S. Что такое "IS пакет"? Это то, что программист написал для загрузки данных из CSV-файла? 1. Найти и исправить ? В 1 млн строк ??? Это была шутка ? 2. Допустим да. Но см. п.1. Грязные данные нужно проверить. И не только по СЦ. Есть еще недопустимые значения (даты, суммы, пустоты, недопустимые символы, форматирование). Поэтому верификация все равно нужна. И в БД это сделать проще и быстрее всего. Удалить, поправить .. не суть. Часто это делают на промежуточной (stage) таблице. IS пакет это integration services (mssql). Раньше назывался DTS. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 16:26 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
L_argo Валерий Юринский пропущено... Очень хорошо. Мусор не попадёт в базу. Варианты "борьбы": 1) Исправить CSV файл и повторить загрузку. 2) Удалить из CSV-файла неверные строки, остальные загрузить. Потом разобраться с неправильными данными, исправить их и догрузить. Ваш вариант плохой: N) Загрузить "грязные" данные в базу, отключив ограничения целостности, а потом заниматься "чисткой" уже в рабочей базе данных. P.S. Что такое "IS пакет"? Это то, что программист написал для загрузки данных из CSV-файла? 1. Найти и исправить ? В 1 млн строк ??? Это была шутка ? 2. Допустим да. Но см. п.1. Грязные данные нужно проверить. И не только по СЦ. Есть еще недопустимые значения (даты, суммы, пустоты, недопустимые символы, форматирование). Поэтому верификация все равно нужна. И в БД это сделать проще и быстрее всего. Удалить, поправить .. не суть. Часто это делают на промежуточной (stage) таблице. IS пакет это integration services (mssql). Раньше назывался DTS. И это нужно делать, используя промежуточную (stage) таблицу. Отключение ограничений Foreign Key на производственной таблице - это плохой способ. Такая таблица становится промежуточной (stage) таблицей на время загрузки данных. Причем, никто не гарантирует, что её Foreign Key удастся быстро включить, в том числе, из-за неисправленной кривизны данных и размера таблицы, поскольку данные нужно проверить при включении FK. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 17:15 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
softwarer L_argo пропущено... Они в любом случае будут этим заниматься. Т.к. причина "расхождений" вовсе не по причине отсутствия констрайнт. В 90+% случаев - именно по этой причине. И по хорошему, следует эти ошибки устранить до попытки их импорта. Или в момент импорта. Невставка данных это тоже грубая ошибка. Толку от той целостности, если клиенту придет счет на ХХХХХ руб. меньше, чем нужно ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2021, 17:28 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
Albert Oreol, попробуйте оттолкнуться от природы ваших данных. Типичные вопросы в вашем случае: * будете ли вы использовать кросс-запросы между сущностями? (т.е. выборка в один резалтсет данных из разных таблиц) * предполагается ли масштабирование системы - добавление новых подобных "таблиц", удаление существующих и т.д. * необходим ли вам аудит данных в этих таблицах? ну и совсем радикальный вопрос - а точно надо для каждой сущности (исходя из вашего описания), иметь отдельный идентификатор? Или можно запилить сквозной один на всех, и вообще обойтись без категории? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 13:07 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
L_argo Речь шла о том, что входные данные содержат ошибки. И по хорошему, следует эти ошибки устранить до попытки их импорта. Или в момент импорта. Это нелепо. Хотите пример из практики? Предметная область - строительство атомной электростанции. Под это строительство делается проект, для этого проекта несколько сотен поставщиков присылают данные по своей номенклатуре. Что характерно, данные подготовленные каждым из них своим способом начиная от ручками вбить в акцесс. Тот файл, который изначально дали мне для тестирования, содержал чуть меньше полумиллиона записей, в которых проверками было найдено порядка десяти тысяч ошибок. Критериев, по которым искались ошибки - около пятидесяти, часть из них - сквозные, то есть проверяют не одну запись, а их соответствие между собой. Ну уникальность значения, например, как самый простой вариант. Надеюсь, даже ежу понятно, что эти десять тысяч ошибок "в момент импорта" не устранить, да и "до попытки" - тоже особо не получится. На деле это был отдельный длительный бизнес-процесс. На некоторые классы ошибок эксперт мог установить автоматическую реакцию, другие он разбирал руками, а по третьим тряс исправления с поставщика. И так до тех пор, пока не получал, наконец, достаточно очищенные данные, которые можно было пустить в работу. L_argo Невставка данных это тоже грубая ошибка. Вы изначально рассуждаете в какой-то нелепой парадигме того, как вообще организован импорт и какие возможности (не)доступны. С точки зрения "невставки данных" внешние ключи малоинтересны, поскольку их вешают на основные таблицы, а не на стейджинг. Куда интереснее с точки зрения "невставки" случаи типа "в числовом поле содержатся категорически текстовые данные", "в поле varchar(240) нужно впихнуть строку из 256 символов", "в поле даты значение 30.02.2010" итп. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 15:11 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
softwarer, Много букф, но суть та же: сначала очищаем, потом вставляем. Про что я выше указал. Проблема СЦ незначительна на фоне остальных проблем, также указанных выше. зы: скучно... Тема уныло пережевывается уже не один год без каких либо новых идей и даже фраз. Зачем обсуждать, если все равно каждый сделает по своему ? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 15:28 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
L_argo И по хорошему, следует эти ошибки устранить до попытки их импорта. Или в момент импорта. Невставка данных это тоже грубая ошибка. Толку от той целостности, если клиенту придет счет на ХХХХХ руб. меньше, чем нужно ? :) Нужна RAW структура, которая вкачает в себя грязные данные из источника, а потом уже перельет на основании бизнес-логики и валидаций все в основные оперативные таблицы. Не стоит смешивать импорт данных и запуск данных в бизнес-процесс. Из основных плюсов: * вы сможете "подкрутить" бизнес-логику в любой момент и проработать данные заново. * у вас всегда есть исходники данных для анализа * модуль загрузки RAW данных не связан никак с бизнес логикой * легко масштабировать под новые источники данных Из минусов: * доп. место требуется для хранения * нужно нормально прорисовать (хотя бы мысленно) процесс и взаимосвязи между этапами. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 15:52 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
L_argo Много букф Как же Вы работаете, если не в состоянии прочитать семь строчек и понять их смысл? L_argo Проблема СЦ незначительна на фоне Проблема СЦ не возникает при импорте в стейджинг. Данные с нарушениями СЦ не пускаются в работу, что обеспечивается в том числе внешними ключами в основных таблицах. L_argo Зачем обсуждать, если все равно каждый сделает по своему ? :) Чтобы честный чайник, который придёт и прочитает, не решил, что тот бред, который Вы периодически публикуете - это и есть тот единственный вариант, который нужно делать и все делают. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 16:43 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
Из минусов: * доп. место требуется для хранения * нужно нормально прорисовать (хотя бы мысленно) процесс и взаимосвязи между этапами. Это не минусы, т.к. этих факторов не избежать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 16:43 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
L_argo Из минусов: * доп. место требуется для хранения Если требуется место для хранения данных грязных - это минус есть. Этого можно избежать. Например, организационные меры приняв, чтобы данные были чистые. Один из вариантов - поставщик данных их загрузку в вашу систему сам обеспечивает и за их достоверность своими рублями, долларами, евро и другими ценностями отвечает. А вы выделения доп. места для хранения избежали, когда организацию загрузки данных в место их появления перенесли. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 18:56 |
|
Категории или одна таблица
|
|||
---|---|---|---|
#18+
Daniel Logovenko L_argo пропущено... Это не минусы, т.к. этих факторов не избежать. Если требуется место для хранения данных грязных - это минус есть. Этого можно избежать. Например, организационные меры приняв, чтобы данные были чистые. А вы выделения доп. места для хранения избежали, когда организацию загрузки данных в место их появления перенесли. Любой минус можно обратить в плюс: * то, что должны быть разнесены модули загрузки и обработки - не спорю, но RAW-data от ваших апстримов - должна быть внутри вашей зоны ответственности, чтоб вы могли оперативно с ними что-то сделать, не дергая смежные приложения/команды/проекты (к примеру - унесли на нон-прод енв слепок данных и воспроизводите проблему в своей песочнице) * если вдруг по каким-то причинам у вас возникла непредвиденная ошибка обработки данных (баг в коде, сбой системы, уборщица отключила сервер) - вам достаточно пофиксить эту проблему и перезапустить процесс обработки - данные уже есть. * "грязные данные" - это по критериям на момент обработки. Если вы храните данные у себя, то при изменении критериев = вы можете уже исторические данные переработать по новой бизнес логике (если это применимо к вашей системе), и уже принести профит бизнесу. Если же вы данные не храните, то все изменения бизнес почувствует только после внедрения нового функционала = исторические данные вы не сможете переработать. Ну и архив RAW data можно вынести на более дешевые носители/сжать и т.п. дабы этот самый объем уменьшить, но таки да - вам нужно дополнительное место. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 11:05 |
|
|
start [/forum/topic.php?fid=32&msg=40041624&tid=1539819]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 248ms |
total: | 388ms |
0 / 0 |