powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите профану!!!
15 сообщений из 15, страница 1 из 1
Помогите профану!!!
    #32009713
Eddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!
маленькое предисловие: я только закончил маленький курсик по ORACLE , к тому же , на немецком ,
с программированием я только начинаю дружить.......... В конторе, где я работаю, в базах данных никто
ничего не сечёт........... Теперь шеф меня озадачил сделать простенькую базу (SQL Server2000), в которую записывались бы ошибки, поступающие со Steuerung ( управляющего устройства )............
Дано: Есть различные группы (в Ethernet),
в каждую группу входит несколько управляющих устройств ( напр. Simatic S5, S7 ot Siemens ),
каждое упр.устройство одновременно посылает 1024 Bits , каждый Bit (изменённый) обозначает ошибку...........
вот мне и надо слепить базу и приложение , чтобы записать все посланные ошибки
( какое упр.устройство какую ошибку послало, ну и , конечно, дату, время и т .д.)
Дорогие проффи, помогите,пожалуйста!!
как мне отсортировать только измененные Bits и распихать всё по таблицам, чтобы потом можно было-бы
простым SELECT получить где,когда , какая ошибка произошла.............???

Заранее премного благодарен

Eddy
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009738
andy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИМХО для вашей задачи нужны всего 2 таблицы:
Первая - список устройств (id, name)
Вторая - полный лог событий со ссылками на УУ инициатор (первую таблицу) (datetime, CU_id, error_code)
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009741
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO нужна еще 3-я таблица - группы устройств: DeviceGroup(id, group_name) и соответсвенно в таблице "список устройств" нужно дополнительное поле devicegroup_id, если одно устройство может входить только в одну группу. Если одно устройство может принадлежать нескольким группам, то нужна еще одна таблица(4-ая) DeviceGroupDetails(devicegroup_id, CU_id). Если к тому же группы представляют собой иерархическую структуру (проще говоря дерево), то это вообще отдельный разгорор.

Все это нужно, конечно, в том случае, если вы собираетесь анализировать собранные данные не только не только по отдельным устройствам, но и по группам устройств. Кстати, Вы не указали, а какую информацию и в каком виде вы(или ваш шеф) хотите получать из базы. Это тоже может повлииять на количество таблиц.
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009748
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> какую информацию и в каком виде вы(или ваш шеф) хотите получать из базы. Это тоже может повлиять на количество таблиц.

2 Glory: не соглашусь с Вами! Выходные данные не должны влиять на формат хранения. Только хороший анализ предметной области даст структуру базы, но никак не формат отчетов и т.д.
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009749
Eddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за отклик!!

у меня есть 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'' .............
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009751
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2GreenSunrise

Я имел в виду следующее: если скажем никому и никогда не понадобится информация по группам устройств, то зачем проектировать базу данных и создавать дополнительные таблицы с учетом того, что эта информация все-таки имеется. Только потому, что этого требует теория нормализации или что-бы было на всякий случай?

Так что IMHO выходные формы для конкретного задания не определяют, но могут влиять на структуру и количество таблиц.
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009752
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Eddy
>чтобы узнать, какой бит изменён

Изменен по сравнению с чем ? Что в таблице уже есть где-то предыдущее состояние для этого устройства ?
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009759
Eddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Glory

нет - в таблицах ничего нет, кроме: в табице Ошибки - занесены номера (как integer ) ошибок и их описание........
тоже самое для таблиц группы, устройства ............
вот я и не знаю - мне надо уже какую-то бит-маску иметь, с чем сравнивать ???
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009766
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот просто зуб даю, что если заложиться при разработке структуры на то, что какие-то данные никому не понадобятся, то рано или поздно необходимость в них обязательно всплывет


"Измененный бит" - это, как мне кажется, некая обработка на клиенте. Именно клиент хранит предыдущее состояние устройства и запрашивает новое, сравнивает их и в зависимости от изменения битов добавляет запись в таблицу ошибок.
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009770
andy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда на клиенте, при получении сообщения об ошибке, сравнивайте его с последней ошибкой данного устройства в БД. И добавляйте запись в БД только, когда они не равны.
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009775
Fompro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня, конечно, покороче(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 - проверяемые права. Что-то аналогичное.
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009814
BiSas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надеюсь, что этот пример поможет вам.

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)) + ' не установлен.'
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009815
BiSas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Внимание в предыдущем примере почему-то в некоторых местах восмерки были замененены на рожицы.
Кстати вопрос модератору (ответ модератора: не используйте комбинацию восьмёрки и скобки, разделяйте их пробелами, тогда получится так, как после моего исправления - Александр Гладченко)
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009817
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно совсем в этой области ламерский вопрос? Как до SQL сервера доходит сетевой пакет от девайса?
...
Рейтинг: 0 / 0
Помогите профану!!!
    #32009836
Eddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо всем за Ваше участие и помощъ!!!!

откровенно говоря, как доходит сетевой пакет от Device до сервера, я не знаю ((
есть какой-то т.н. DServer, который доставляет данные от Device..........
Если кого-нибудь интересует, то загляните на www.abcit.de - Produkte (на немецком)........
кстати, есть действительно стоящие альтернативы продуктам от Siemens........

ещё раз спасибо !!!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите профану!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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