Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Управление IT отделом


Автор: Prontit 4.5.2012, 09:07
Здравствуйте!

Необходимо написать приложение для управление IT отделом, а именно: учет компьютеров (железо, ОС), офисной техники, заправки картриджей и т.д. Накидал таблички. Подскажите, пожалуйста, все ли сделал правильно, есть ли слабые места, и как можно оптимизировать. 

Краткое описание:

В таблице department содержится список отделов.
В таблице workplace содержится список рабочих месте (абстрактное понятие, к нему прикрепляется компьютер, монитор, если это не ноутбук и другая техника). К одному рабочему месту может быть прикреплен только один компьютер, один монитор и несколько другие устройств (сканер, принтер, факс).
Таблица monitors содержится список мониторов, они прикрепляются к workplace
Таблица computers содержится список компьютеров, они прикрепляются к workplace
Таблица prisca содержится список принтеров/сканеров, они прикрепляются к workplace
В таблицу cartridges ведется учет о заправленных картриджах, имеется ссылка на принтер в таблице prisca
Таблица logpass содержит логины/пароли от icq, skype, почте и других программах, имеется ссылка на компьютер в таблице computers
Таблица phones содержит список телефонов, они закреплены за отделами, таблица department 

http://s2.ipicture.ru/

Спасибо!

Автор: Zloxa 4.5.2012, 09:45
Цитата(Prontit @  4.5.2012,  10:07 Найти цитируемый пост)
Таблица logpass содержит логины/пароли от icq, skype, почте и других программах, имеется ссылка на компьютер в таблице computers

Т.е. ася,запущеная на другом компе будет требовать другой пароль? smile 
Цитата(Prontit @  4.5.2012,  10:07 Найти цитируемый пост)
Таблица prisca содержится список принтеров/сканеров, они прикрепляются к workplace

сетевых принтеров у вас нет?

Вообще - с какой целью организуется учет? Ради учета? Или ради отчета?
Если первое, то пофиг какая структура.
Если второе, то идти надо от списка отчетов, а не от структуры. Вы же приложили структуру, а о цели, ради которой вся затея - не упомянули. Просто поупражняться? Для упражнений структура вполне сойдет, впрочем, как и любая другая.

Автор: Prontit 4.5.2012, 09:54
Цитата(Zloxa @  4.5.2012,  09:45 Найти цитируемый пост)
Т.е. ася,запущеная на другом компе будет требовать другой пароль?  

нет конечно))) просто дело в том, что за конкретным компьютером закреплен конкретный номер ICQ, и чтобы в случае, если там слетит аська, или система, можно было по ip или инвентаризационному номеру узнать какой там номер аськи и соответственно пароль.

Цитата(Zloxa @  4.5.2012,  09:45 Найти цитируемый пост)
сетевых принтеров у вас нет?

нет, все принтеры закреплены за рабочим местом, и просто расшарины для остальных. если были бы сетервые, логично было бы закреплять их за отделом.

Цитата(Zloxa @  4.5.2012,  09:45 Найти цитируемый пост)
Вообще - с какой целью организуется учет? Ради учета? Или ради отчета?

Учет организуется с целью общих отчетов, например сколько рабочих станций в каждом отделе, сколько принтеров и тд, и более детальных, например, сколько установленных Windows XP по отделам и в общем на предприятии (в таблице computers будет больше отвечающее за ОС). Ну и так же все делается для общей информации, например, узнать телефон отдела, по Ip адресу компьютера узнать отдел, ну и все в этом духе.

Благодарю за ответ!

Автор: Zloxa 4.5.2012, 10:23
Цитата(Prontit @  4.5.2012,  10:54 Найти цитируемый пост)
сколько установленных Windows XP по отделам

И как этот отчет из вашей структуры можно получить?  smile 

Собсна я потому и гвоорю, что идти надо от отчета  smile 

accnumber это инвентарный номер, я правильно понял? Как вы полагаете обеспечивать его уникальность, если он у вас размазан по разным сущностям?

Автор: igorold 4.5.2012, 11:37
Непонятна структура таблицы workplace.

Что она содержит? Собственный индекс и индекс отдела? а смысл?
Почему у department primary индекс по наименованию? а по своему индесу, индекса нет? 


ну и т.д. слабо продумана структура ... видимо опыта маловато ... 

Автор: Prontit 4.5.2012, 12:13
Цитата(Zloxa @  4.5.2012,  10:23 Найти цитируемый пост)
accnumber это инвентарный номер, я правильно понял? Как вы полагаете обеспечивать его уникальность, если он у вас размазан по разным сущностям? 

да, это инвентарный номер. ну он прописан как UNIQUE поэтому не может повторяться в таблице. или я не правильно понял вопрос?

Цитата(igorold @  4.5.2012,  11:37 Найти цитируемый пост)
Непонятна структура таблицы workplace.

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

Цитата(igorold @  4.5.2012,  11:37 Найти цитируемый пост)
Почему у department primary индекс по наименованию? а по своему индесу, индекса нет? 

почему же, по своему индексу так же проиндексировано. 

Цитата(igorold @  4.5.2012,  11:37 Найти цитируемый пост)
ну и т.д. слабо продумана структура ... видимо опыта маловато ...  

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

Если мне нужно:
-хранить информацию об отделах
-хранить информацию о компьютерах (закрепленных за отделами)
-информацию о логинах/паролях на ПО (закрепленную за компьютерами)

, и вытаскивать соответствующие отчеты, как тогда необходимо построить БД?

Благодарю за ответ!

Автор: igorold 4.5.2012, 12:21
Если у таблицы workplace нет других полей, то она просто дублирует таблицу department, т.е. в таблицах, которые на нее ссылаются с таким же успехом можно написать вместо workplace_id - department_id

Автор: Prontit 4.5.2012, 12:25
Цитата(igorold @  4.5.2012,  12:21 Найти цитируемый пост)
Если у таблицы workplace нет других полей, то она просто дублирует таблицу department, т.е. в таблицах, которые на нее ссылаются с таким же успехом можно написать вместо workplace_id - department_id


мне нужно как то объединять оборудование в группы, например Монитор с номеров 10000 завязан с Системным блоком с номеров 123654 и с принтером 456321. поэтому я и объединяю это в "рабочее место", иначе, если завязать все на отделе, то получится что там 10 мониторов, 10 компов 5 принтеров и не понятно что с чем стоит

Автор: igorold 4.5.2012, 12:26
А, понял, - рабочее место ... ну тогда добавь в таблицу workplace еще поле, типа наименование рабочего места, тогда эта таблица будет иметь больше смысла.

Добавлено через 3 минуты и 30 секунд
как-то будет же необходимо идентифицировать рабочее место - типа:

комп. гл.бух
комп 1 комн.33
комп 2 комн 33

и т.п.

Добавлено через 8 минут и 11 секунд
А почему нет таблицы сотрудников в этой структуре?

Автор: Prontit 4.5.2012, 12:34
Цитата(igorold @  4.5.2012,  12:26 Найти цитируемый пост)
А, понял, - рабочее место ... ну тогда добавь в таблицу workplace еще поле, типа наименование рабочего места, тогда эта таблица будет иметь больше смысла. 

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

Цитата(igorold @  4.5.2012,  12:26 Найти цитируемый пост)
А почему нет таблицы сотрудников в этой структуре? 

нет такой необходимости. изначально цель стояла так - учет лицензионного ПО, но потом подумали и решили что будет удобно и телефоны отделов хранить раз уж их всех записаоли, ну и пароли с логинами, чтоб если что, восстановить можно было быстро. если добавить сотрудников, будет через чур "масштабно", но ради интересно можно конечно. Вы можете дать какой-нибудь пример ХОРОШо спроектированной БД такого типа?

Автор: Zloxa 4.5.2012, 12:42
Цитата(Prontit @  4.5.2012,  13:13 Найти цитируемый пост)
да, это инвентарный номер. ну он прописан как UNIQUE поэтому не может повторяться в таблице. или я не правильно понял вопрос?

Инвентарные номера мониторов и компьютеров могут пересекаться?

Цитата(Prontit @  4.5.2012,  13:34 Найти цитируемый пост)
Можете подсказать с запросом, если я буду знать Ip компьютера, как мне узнать инвентарный номер допустим принтера, который находится на этом же рабочем месте? 

Ваша структура предполагает что на одном рабочем месте могут быть несколкьо комьютеров и несколько принтеров. smile

Автор: igorold 4.5.2012, 12:43
Код

select prisca.accnumber from computers left join prisca on computers.workplace_id=prisca.workplace_id where computers.ip='ip компьютера'; 

Автор: Prontit 4.5.2012, 12:45
Цитата(Zloxa @  4.5.2012,  12:42 Найти цитируемый пост)
Инвентарные номера мониторов и компьютеров могут пересекаться?

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


Цитата(Zloxa @  4.5.2012,  12:42 Найти цитируемый пост)
Ваша структура предполагает что на одном рабочем месте могут быть несколкьо комьютеров и несколько принтеров. 

такого быть не может, ведь workplace_id является уникальным

Добавлено через 52 секунды
Цитата(igorold @  4.5.2012,  12:43 Найти цитируемый пост)
код SQL
1:
select prisca.accnumber from computers left join prisca on computers.workplace_id=prisca.workplace_id where computers.ip='ip компьютера';


Благодарю!

Автор: Zloxa 4.5.2012, 13:11
Цитата(Prontit @  4.5.2012,  13:45 Найти цитируемый пост)
такого быть не может, ведь workplace_id является уникальным

Да, но принтеры и компьютеры связаны с воркспйсом один ко многим - нет?
Получается на одном рабочем месте может находиться несколко компьютеров, несколкьо мониторов и несколько принтеров.
И принтеры  с компьютерами состоят в отошении многие ко многим.

Автор: Prontit 4.5.2012, 13:15
Цитата(Zloxa @  4.5.2012,  13:11 Найти цитируемый пост)
а, но принтеры и компьютеры связаны с воркспйсом один ко многим - нет?
Получается на одном рабочем месте может находиться несколко компьютеров, несколкьо мониторов и несколько принтеров. 

да, тут ошибся. спасибо! поправлю. а вы не знаете где можно посмотреть пример спроектированной БД такого типа?

Автор: Zloxa 4.5.2012, 13:15
Цитата(Prontit @  4.5.2012,  13:45 Найти цитируемый пост)
 ведь workplace_id является уникальным

Прошу прощения, не увидел ограничения уникальности воркспейса на принтерах и компьютерах.

Но если отношение воркспейса с компьютером и принтером один к одному - чем может быть полезно введение этих дополнительных сущностей? smile

Автор: Prontit 4.5.2012, 13:31
Цитата(Zloxa @  4.5.2012,  13:15 Найти цитируемый пост)
Но если отношение воркспейса с компьютером и принтером один к одному - чем может быть полезно введение этих дополнительных сущностей?

эмм...наверное ничем)

Автор: igorold 4.5.2012, 13:37
Может тем, что у этих сущностей разные поля для описания свойств?
В перспективе может нарисоваться еще таблица, которая может быть присоединена с рабочему месту, например сканер.

Вообще, с этой базой уже можно работать ... было бы желание ...  smile 

Автор: Zloxa 4.5.2012, 16:13
Цитата(igorold @  4.5.2012,  14:37 Найти цитируемый пост)
Вообще, с этой базой уже можно работать ... 

при желании можно и с плоским экселем работать )))

Но тут я с тобой в целом согласен.
На этой структуре уже вполне можно пробовать набивать шишки  smile 

Цитата(igorold @  4.5.2012,  14:37 Найти цитируемый пост)
В перспективе может нарисоваться еще таблица, которая может быть присоединена с рабочему месту, например сканер.

Ну тут два варианта, либо структуру упрощать, чтобы и сканеры и принтеры и юсби флешки и кофеварки могли сохраниться в одной структуре.
Либо ее усложнять, чтобы при добавлении сущностей изменялась структура.

Опять повторюсь, все зависит от того, какую аналитическую информацию мы в конце концов хотим иметь по этим данным. В данный момент для меня совсем не очевидно чем вызвана необходимость разделения сущностей компьютер, монитор, принтер.

Автор: igorold 5.5.2012, 07:03
Согласен, лучше сделать универсальную сущность, а для нее сделать справочник типов - монитор, компьютер, принтер и т.п.
Тогда легко добавлять новые типы ... ну и отчеты можно будет и в разрезе типов делать.

Остается вопрос, а могут у разных типов сущностей совпадать номера, которые сейчас уникальны?
Тогда workplace_id нельзя делать уникальным ... придется контролировать связку workplace_id, тип сущности

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)