green_fr: (Default)
[personal profile] green_fr
Никто не знает популярный формат %subj%?

У меня есть какие-то данные (Excel, база данных — возможны варианты), которые представляются списком записей с определёнными полями. Хочется сделать систему валидации данных, но при этом не хочется изобретать велосипед.

Правила бывают простые:
— поле должно быть численным / датой / текстом
— поле может принимать только значения из заранее определённого списка
— поле не может быть пустым
Правила бывают составные:
— значение одного поля должно быть больше значения другого
— если значение одного поля равно X, то накладываем простое правило на второе поле (в противном случае поле может содержать что угодно, либо обязано быть пустым)
Совсем хорошо, если можно определять правила с операторами агрегации, но это уже так, бантики:
— сумма поля А всех строк, где поле Б равно X...

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

Date: 2015-05-12 02:09 pm (UTC)
From: [identity profile] mopexod.livejournal.com
Немного расширенный xml?

Date: 2015-05-12 02:25 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Ну вот не хочется самому его расширять. Наверняка ведь кто-то уже задумался над этим вопросом, и даже выпустил какой-нибудь DataValidationML с соответствующими рекомендациями.

Date: 2015-05-12 02:48 pm (UTC)
From: [identity profile] birdwatcher.livejournal.com
Критически зависит от того, где они хранятся, не? В sql легко сделать, например. Т.е. sql сам является этим языком.
Edited Date: 2015-05-12 02:51 pm (UTC)

Date: 2015-05-12 03:06 pm (UTC)
From: [identity profile] mopexod.livejournal.com
Кстати, да. Даже, собственно, проверять не надо - ничего неправильного не записать :)

Date: 2015-05-12 03:14 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Это другое дело, это блокирующий контроль. А мне нужно, грубо говоря, определить тесты, которые я должен прогнать на пришедшие мне из соседнего отдела данные. И тесты эти я хочу описать один раз, а потом переписывать программу приложения этих тестов всякий раз, когда поменяется формат обмена данными.

Date: 2015-05-12 03:30 pm (UTC)
From: [identity profile] birdwatcher.livejournal.com
Ты должен попытаться загрузить их в свою базу. Если загрузились - годные данные.

Date: 2015-05-18 08:03 am (UTC)
From: [identity profile] green-fr.livejournal.com
Ты не поверишь, я именно это и предложил :-) Но мне сказали, что это нарушает философию отношений между отделами - поставщик должен проверять данные перед загрузкой в базу, а не в процессе. Нажимая на кнопку "отправить", он должен быть уверен, что данные верны.

Date: 2015-05-18 10:36 am (UTC)
From: [identity profile] birdwatcher.livejournal.com
Это значит, что он должен посылать данные не е-мейлом, а сам загрузить их в ту базу, из которой ты потом прочтешь.

Date: 2015-05-12 03:12 pm (UTC)
From: [identity profile] green-fr.livejournal.com
Сделать везде легко, меня интересует именно язык описания. Чтобы можно было легко, без особых знаний IT читать / добавлять эти правила. Как их потом перегнать в язык триггеров / макросов / DTD - это последний вопрос. Интересен именно язык, в идеале - без привязки к какой-то платформе (у нас сегодня прототип на Excel, но мы уже думаем над несколькими вариантами ближайшего будущего).

Date: 2015-05-12 03:28 pm (UTC)
From: [identity profile] birdwatcher.livejournal.com
По здравом размышлении, не предсталяю себе ответа, кроме sql. Люди бы знали!

Date: 2015-05-12 06:11 pm (UTC)
From: [identity profile] igann.livejournal.com
+1 sql если простые правила

А если логика сложная то самому скриптик на %мойлюбимыйязыкпрогаммирования% писать.

В лучше оба варианта вместе.

Date: 2015-05-18 08:41 am (UTC)
From: [identity profile] green-fr.livejournal.com
А как ты себе это представляешь на практике? Вот например, у тебя есть данные про какие-то активы, то есть колонка ID, type, date, и если type = "oblig", то date не может быть пустым. Как ты запишешь это правило на SQL, чтобы потом было реально его использовать?

Date: 2015-05-18 11:08 am (UTC)
From: [identity profile] green-fr.livejournal.com
Всё, конечно, я просто почему-то завис на select sql, я вообще не понимал, о чём вы говорите :-) Теперь понял. Конечно же, вот и нужный формат!

Date: 2015-05-18 11:22 am (UTC)
From: [identity profile] birdwatcher.livejournal.com
То-то и оно. Тебе нужны разнообразные CHECK.
http://www.w3schools.com/sql/sql_constraints.asp

Date: 2015-05-19 03:21 pm (UTC)
From: (Anonymous)
XML Schema?

А.Б.

Profile

green_fr: (Default)
green_fr

February 2026

S M T W T F S
1 2 3 4 5 67
8 9 10 11 12 1314
15 16 1718 192021
22 23 24 25 262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 27th, 2026 01:37 pm
Powered by Dreamwidth Studios