Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
Привет всем! маленькое предисловие: я только закончил маленький курсик по ORACLE , к тому же , на немецком , с программированием я только начинаю дружить.......... В конторе, где я работаю, в базах данных никто ничего не сечёт........... Теперь шеф меня озадачил сделать простенькую базу (SQL Server2000), в которую записывались бы ошибки, поступающие со Steuerung ( управляющего устройства )............ Дано: Есть различные группы (в Ethernet), в каждую группу входит несколько управляющих устройств ( напр. Simatic S5, S7 ot Siemens ), каждое упр.устройство одновременно посылает 1024 Bits , каждый Bit (изменённый) обозначает ошибку........... вот мне и надо слепить базу и приложение , чтобы записать все посланные ошибки ( какое упр.устройство какую ошибку послало, ну и , конечно, дату, время и т .д.) Дорогие проффи, помогите,пожалуйста!! как мне отсортировать только измененные Bits и распихать всё по таблицам, чтобы потом можно было-бы простым SELECT получить где,когда , какая ошибка произошла.............??? Заранее премного благодарен Eddy ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2001, 08:52 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
ИМХО для вашей задачи нужны всего 2 таблицы: Первая - список устройств (id, name) Вторая - полный лог событий со ссылками на УУ инициатор (первую таблицу) (datetime, CU_id, error_code) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2001, 12:27 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
IMHO нужна еще 3-я таблица - группы устройств: DeviceGroup(id, group_name) и соответсвенно в таблице "список устройств" нужно дополнительное поле devicegroup_id, если одно устройство может входить только в одну группу. Если одно устройство может принадлежать нескольким группам, то нужна еще одна таблица(4-ая) DeviceGroupDetails(devicegroup_id, CU_id). Если к тому же группы представляют собой иерархическую структуру (проще говоря дерево), то это вообще отдельный разгорор. Все это нужно, конечно, в том случае, если вы собираетесь анализировать собранные данные не только не только по отдельным устройствам, но и по группам устройств. Кстати, Вы не указали, а какую информацию и в каком виде вы(или ваш шеф) хотите получать из базы. Это тоже может повлииять на количество таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2001, 13:09 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
> какую информацию и в каком виде вы(или ваш шеф) хотите получать из базы. Это тоже может повлиять на количество таблиц. 2 Glory: не соглашусь с Вами! Выходные данные не должны влиять на формат хранения. Только хороший анализ предметной области даст структуру базы, но никак не формат отчетов и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2001, 13:46 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
Спасибо за отклик!! у меня есть 4 таблицы: 1-я описывает группу ( предположим Gr_Id, Gr_description ) 2-я описывает упр.устройство (Str_Id, Gr_Id, Str_description) 3-я описывает ошибки ( Err_Id, Err_description ) 4-я связующая ( Err_Id, Str_Id, err_date) так я могу получить : какое устройство из какой группы какую ошибку послало и когда........... Но устройство посылает в Bits, (1024 бита) , а мне надо эти биты как-то обработать, до того, как внести в таблицы.........чтобы узнать, какой бит изменён....... Шеф хочет видеть инфо очень просто: naprimer - Err_nr = 1044, Str_descrip = "StrS52", Gr_descrip = "Lackierung", Datum_time = 12.07.2001 15:12:23:35'' ............. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2001, 13:47 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
2GreenSunrise Я имел в виду следующее: если скажем никому и никогда не понадобится информация по группам устройств, то зачем проектировать базу данных и создавать дополнительные таблицы с учетом того, что эта информация все-таки имеется. Только потому, что этого требует теория нормализации или что-бы было на всякий случай? Так что IMHO выходные формы для конкретного задания не определяют, но могут влиять на структуру и количество таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2001, 14:06 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
2Eddy >чтобы узнать, какой бит изменён Изменен по сравнению с чем ? Что в таблице уже есть где-то предыдущее состояние для этого устройства ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2001, 14:10 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
Glory нет - в таблицах ничего нет, кроме: в табице Ошибки - занесены номера (как integer ) ошибок и их описание........ тоже самое для таблиц группы, устройства ............ вот я и не знаю - мне надо уже какую-то бит-маску иметь, с чем сравнивать ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2001, 14:51 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
Вот просто зуб даю, что если заложиться при разработке структуры на то, что какие-то данные никому не понадобятся, то рано или поздно необходимость в них обязательно всплывет "Измененный бит" - это, как мне кажется, некая обработка на клиенте. Именно клиент хранит предыдущее состояние устройства и запрашивает новое, сравнивает их и в зависимости от изменения битов добавляет запись в таблицу ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2001, 15:15 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
Тогда на клиенте, при получении сообщения об ошибке, сравнивайте его с последней ошибкой данного устройства в БД. И добавляйте запись в БД только, когда они не равны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2001, 16:08 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
У меня, конечно, покороче(32). В ХП обрабатывается сообщение в сравнении с заданной маской, ощибка для младшего бита отправляется как сообщение пользователю (журналируется). SELECT @Msg=FullName FROM Permission P WHERE P.Permission=(SELECT MIN(d1.Permission) FROM Permission d1 WHERE Permission > 0 AND EXISTS( SELECT * FROM Permission d2 WHERE d2.Permission = d1.Permission AND d2.Permission & @Rights=d2.Permission)) RAISERROR(50008,-1,-1, @Msg) Где Permission - таблица прав (побитовая) с их описанием, @Rights - проверяемые права. Что-то аналогичное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2001, 18:02 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
Надеюсь, что этот пример поможет вам. declare @BitArray varbinary(128 ), --1024 bit @posBit integer, @BitSet bit --строка ниже эквивалентна 101010100110100 -- такое же представление записи битов применяется в COLUMNS_UPDATED() для триггеров, там же и пример есть. set @BitArray = 0x5534 -- и т.д. -- ^^^^ -- |||| -- Это первые 8 бит|| -- Это вторые 8 бит --проверяем установлен ли 3 бит set @posBit = 3 --поменяйте эту строку для проверки желаемого бита set @BitSet = Power(2,((@posBit-1) - (@posBit-1)/8*8 )) & substring(@BitArray,((@posBit-1)/8 )+1,1) if @BitSet = 1 select 'Bit N '+ Ltrim(Str(@PosBit,17)) + ' установлен.' else select 'Bit N '+ Ltrim(Str(@PosBit,17)) + ' не установлен.' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2001, 08:35 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
Внимание в предыдущем примере почему-то в некоторых местах восмерки были замененены на рожицы. Кстати вопрос модератору (ответ модератора: не используйте комбинацию восьмёрки и скобки, разделяйте их пробелами, тогда получится так, как после моего исправления - Александр Гладченко) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2001, 08:37 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
А можно совсем в этой области ламерский вопрос? Как до SQL сервера доходит сетевой пакет от девайса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2001, 09:10 |
|
||
|
Помогите профану!!!
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо всем за Ваше участие и помощъ!!!! откровенно говоря, как доходит сетевой пакет от Device до сервера, я не знаю (( есть какой-то т.н. DServer, который доставляет данные от Device.......... Если кого-нибудь интересует, то загляните на www.abcit.de - Produkte (на немецком)........ кстати, есть действительно стоящие альтернативы продуктам от Siemens........ ещё раз спасибо !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2001, 10:56 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3561&tid=1826153]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 326ms |

| 0 / 0 |
