Pmonline.ru

Пром Онлайн
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Программы для управления и работы с базами данных

Программы для управления и работы с базами данных.

ProjectDB 5.0.1.2 бесплатная
ProjectDB 5.0.1.2 представляет собой приложение с возможностями формирования проекта, который позволит осуществлять управление большими объемами информации. Приложение ProjectDB разработано с учётом работы программы MS SQL Server, а также ведутся разработки для подключения таких бесплатных баз данных, как PostgeSQL или MySQL.
DBACentral for MySQL 1.8.3 бесплатная
DBACentral for MySQL 1.8.3 представляет собой аналогичное MS Access решение, которое позволяет выполнять администрирование сервера, разработку БД, а также имеет возможность осуществления расширенного управления данными.
FlexTracer 2.12.1.543 бесплатная
FlexTracer 2.12.1.543 представляет собой мощный трассировщик для SQL-запросов и работает с различными базами данных и функциями, которые экспортируются из DLL. Приложение FlexTracer поможет просмотреть результат выполнения функций, время выполнения и их параметры.
Excel-to-MySQL 2.5 бесплатная
Excel-to-MySQL 2.5 представляет собой приложение по преобразованию в базы данных MySQL документов MS Excel. Приложение Excel-to-MySQL имеет возможность создавать новые базы данных MySQL или осуществлять запись в уже сохранённые или созданные базы данных.
EMS MySQL Manager Pro 4.1.2.1 бесплатная
EMS MySQL Manager Pro 4.1.2.1 представляет собой приложение, которое является мощным и довольно эффективным средством для осуществления администрирования для сервера MySQL а также управления его объектами.
DegisyDb 1.0 бесплатная
DegisyDb 1.0 представляет собой бесплатную библиотеку, которая 12-ю компонентами для выполнения управления и других операций с базами данных.
dbForge Studio для MySQL 5.0.36 бесплатная
dbForge Studio для MySQL 5.0.36 представляет собой профессиональное и бесплатное приложение, которое поможет работать более удобно и быстро пользователям MySQL и разработчикам баз данных.
DB Navigator for DBF 2.0.0.21 бесплатная
DB Navigator for DBF 2.0.0.21 даст возможность удобно и просто осуществлять обработку данных в базах данных. Приложение DBNavigator for DBF позволяет осуществлять такие операции с базами данных, как добавление, редактирование и удаление таблиц, а также запись, выполнение SQL-скриптов, копирование таблиц полностью или их структур.
Database Workshop 5.32 бесплатная
Database Workshop 5.32 представляет собой приложение по работе с различными базами данных. Приложение Database Workshop позволяет выполнять профессиональную обработку баз данных, и оснащено широкими возможностями для проведения анализа исследуемых баз данных.
Database Tour 6.5.2.1048 бесплатная
Database Tour 6.5.2.1048 является мощным и удобным приложением, которое будет выполнять для вас работу с базами данных. Приложение Database Tour проводит работу с данными различных форматов и поможет облегчить или автоматизировать наиболее часто выполняемые операции с базами данных.
CDBF — DBF Viewer and Editor 2.15 бесплатная
CDBF — DBF Viewer and Editor 2.15 представляет собой довольно мощный редактор и вьюер файлов формата DBF, который даёт возможность выполнять большое количество операций с базами данных и не прибегать к программированию при помощи стандартного интерфейса Windows.
Access-to-MySQL Pro 2.5 бесплатная
Access-to-MySQL Pro 2.5 является качественным приложением по конвертации ваших баз данных из формата Access в такой формат, как MySQL. Приложение «Access-to-MySQL Pro» осуществляет поддержку всех типов данных и атрибутов файлов MySQL, а также может выполнять работу со всеми из версий MySQL серверов, которые работают в операционных системах, как Windows, так Linux или Unix.
Reportizer 3.7.1.629 бесплатная
Reportizer 3.7.1.629 является инструментом для изготовления и распечатки отчётов, выполненных базами данных. Приложение Reportizer поможет с легкость создавать, печатать и изменять отчеты, а также производить управление коллекциями отчетов.
DBF Work 3.0.0.1 бесплатная
DBF Work 3.0.0.1 является программой по просмотру, редактированию и экспорту файлов DBF формата. Программа DBF Work имеет возможность экспортировать данные в 14 форматов (pdf, excel, word, html и прочие).
DBF data import for ORACLE 1.4 бесплатная
DBF data import for ORACLE 1.4 является профессиональным инструментом по импорту или подготовке к импорту файлов DBF из разряда языков программирования xBase (Visual FoxPro, Clipper, FlagShip, FoxPro, FoxBase, dBaseIII+, dBaseV и dBaseIV) в базу данных ORACLE.

  • Для Windows
  • Базы данных
  • Для Android
  • Аудио, Звук
  • Безопасность
  • Видео
  • Графика
  • Игры
  • Интернет, коммуникации
  • Калькуляторы
  • Навигация, GPS
  • Образование
  • Офис, документы
  • Система
  • Скины, темы
  • Утилиты
  • Хобби, увлечения
  • Opera
    скачать

Темы для проектирования баз данных

Обменный пункт: сотрудники пункта, виды валют, курсы валют, операции обмена.

Ювелирный магазин: названия изделий, комитенты (кто сдал изделия на комиссию), журнал сдачи изделий на продажу, журнал покупки изделий.

Поликлиника: врачи, пациенты, виды болезней, журнал учета прихода пациентов.

Кондитерский магазин: виды конфет, поставщики, торговые точки, журнал поступления и отпуска товара.

Автобаза: автомашины, водители, рейсы, журнал выезда машин на рейсы.

Парикмахерская: клиенты, прайс услуг, сотрудники, кассовый журнал.

Склад: поставщики товара, список товара, получатели товара, кладовщики.

Школа: учителя, предметы, ученики, журнал успеваемости.

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

Гостиница: проживающие, сотрудники гостиницы, номера, журнал регистрации проживающих.

Книжный магазин: авторы, книги, продавцы, покупатели, регистрация продаж.

Ремонтная мастерская: виды работ, исполнители, заказы на ремонт, заказчики.

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

Выставка: стенды, стендисты, экскурсии, посетители.

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

Столовая: продукты, блюда, меню, журнал заказов

Фото мастерская: заказчики работ, прайс работ, журнал поступления заказов, исполнители.

Ветеринарная лечебница: список животных, список болезней, список хозяев, журнал посещений.

Сельское хозяйство: список растений, список угодий, список работников, журнал посевной.

Холдинг: список регионов, список предприятий, список показателей, журнал учета отчетных данных.

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

Учет расхода материалов в компании: список статей затрат, список сотрудников, журнал учета расхода канцтоваров, список департаментов.

Читайте так же:
Мобильные приложения со скидками

Фильмотека: список фильмов, список клиентов, список библиотекарей, журнал выдачи фильмов.

Цирк: список категорий артистов, список артистов, журнал выхода артистов на работу, список цирковых площадок.

Спортивные заведения: список спортсменов, список видов спорта, список стадионов, журнал учета выступлений спортсменов.

Компьютерные занятия: список слушателей курсов, список предметов, список преподавателей, журнал учета успеваемости.

Сбор урожая: список видов продукции, список сборщиков, список бригад, журнал учета сбора урожая.

Фирма по обслуживанию населения: список заказчиков, список товаров, список разносчиков, журнал заказов.

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

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

Журнальные статьи: список тем, список авторов, список названия статей, список журналов.

Анализ причин заболеваемости: список больных, список болезней, список районов, журнал учета заболевших.

Отдел кадров: список сотрудников, штатное расписание, список отделов, журнал перемещения сотрудников по службе.

Делопроизводство: список видов документов, карточка документа, список исполнителей, список департаментов

Расчет нагрузки на преподавателя: список преподавателей, список кафедр, предметов, журнал нагрузки.

Проектные работы: список проектов, список специалистов, список должностей, журнал учета работ.

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

Прививки детям: список прививок, список детей, список родителей, журнал учета сделанных прививок.

Начисление налогов в бюджет: виды налогов, список отраслей, список предприятий, журнал учета поступления налогов.

Экспертная система: список оцениваемых объектов, список экспертов, список регионов, журнал учета оценок.

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

Магазин по продаже автомобилей: список фирм производителей, список автомобилей, журнал поступления автомобиля, список водителя пригнавшего машину.

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

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

Система здравоохранения: список регионов, список санаториев, список пенсионеров, журнал регистрации выдачи путевок в санатории.

Туристические агентства: список туров, список стран, список клиентов, журнал регистрации продаж туров.

Продажа билетов на рейсы: список рейсов, прайс билетов, список компаний, журнал продаж билетов.

Продажа пиломатериалов: виды пиломатериалов, регионы поставщики, список заказчиков, журнал учета продаж пиломатериалов.

Склад металлоконструкций: прайс товара металлоконструкций, список поставщиков, список продавцов, журнал учета продаж.

Система поддержки решений: список экспертов, список тем обсуждений, список департаментов, журнал учета предложений.

Детский сад: список родителей, список детей, список групп, журнал посещения детского сада.

Дом творчества молодежи: список кружков, список руководителей, список детей, журнал регистрации посещения кружков.

Программы для ЭВМ и БД: регистрация и защита прав

Старший партнер патентно-адвокатского бюро «Гардиум», патентный поверенный № 1947. В практике более 20 лет.

Софт, код, ПО, на языке закона все эти и подобные слова называются «программы для ЭВМ». Если вы разработали уникальное программное обеспечение, приложение для телефона и не хотите, чтобы другие использовали ваш труд, нужно юридически защитить разработку.

Программы для ЭВМ чаще всего регистрируют быстро и просто: помещают в хранилище Роспатента как объекты литературы. Но это дает низкую степень защиты: можно доказать, что вы написали именно это ПО в определенный день, но невозможно доказать, что кто-то написал свое ПО на основе вашего. Чтобы защитить саму концепцию, получают патент.

Таким образом, программы регистрируют двумя способами:

  • Депонирование программы для ЭВМ или базы данных;
  • Получение патента на концепцию программы.

Компании, которые планируют работать с госзаказами, получать тендеры от государства или просто не хотят платить НДС, должны дополнительно зарегистрировать свое ПО в Минкомсвязи.

Регистрация программ в Роспатенте с гарантией и без переплат

Патент на разработку — защита концепции программы

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

Если компания получает патент на ПО, никто не сможет переписать программу на другом языке программирования и сказать, что разработка новая. Роспатент проверяет новизну программы по всем мировым базам, поэтому скопировать разработку авторов из другой страны тоже не получится.

Чтобы запатентовать программу для ЭВМ, она должна отвечать правилам патентования:

  • новизна — до подачи заявления вы не должны публиковать программу для ЭВМ или базу данных нигде;
  • применимость — решение должно быть рабочим, зарегистрировать нерабочий код или идею не получится;
  • изобретательность — если ваше ПО не вносит ничего нового в существующий уровень техники или явно следует из существующих разработок, патент не дадут.

Самостоятельно получить патент на программу для ЭВМ или базу данных практически невозможно. Заявители не знают, по каким критериям Роспатент оценивает новизну, по каким базам проверяет. Что нужно написать в заявке, чтобы специалисты по интеллектуальной собственности поняли, как ваше ПО работает и с чем его нужно сравнивать.

Если Роспатенту недостаточно информации для проведения поиска или в базах находятся похожие разработки — присылают отказ.

Если Роспатент прислал отказ — госпошлину в размере от 10 тыс. руб. до 15 тыс. руб. не вернут, а повторно подать заявку на патент нельзя. Нарушен критерий новизны. Повторной заявке противопоставят вашу же первую. Доказать возможность регистрации при повторной подаче заявки крайне сложно.

Чтобы получить патент — лучше сразу обратиться к патентным поверенным. Это специалисты, которые не менее 4 лет работали с интеллектуальной собственностью, потом сдали квалификационный экзамен в Роспатенте. Патентные поверенные знают:

  • по каким базам данных в Роспатенте ищут противопоставления;
  • какие критерии учитывают;
  • что написать в заявке, чтобы специалисты Роспатента смогли провести поиск;
  • как обосновать новизну программы для ЭВМ или БД, если в ходе поиска обнаружены похожие разработки.
Читайте так же:
Забыл пароль ssh на raspberry pi 3

Патентные поверенные сперва самостоятельно проводят поиск. Такой же, как в Роспатенте. Составляют заявку на патент так, как нужно для Роспатента. Если в ходе проверки патентный поверенный найдет угрозу — сообщит вам и включит обоснование отличительных особенностей вашего ПО от угрожающей программы в заявку. Специалист Роспатента, который будет проверять ваше ПО, сразу поймет, какие различительные особенности есть у вашей разработки на фоне всех существующих.

Если вы изобрели принципиально новое программное обеспечение, приложение для смартфона и не хотите, чтобы ваше решение переписали по-другому и выдали за своё — поможет только патент. Когда ваш патент пройдет регистрацию вы сможете:

  • предъявлять исковые требования к нарушителям до 5 млн. руб., даже если концепция только похожа на вашу, а не копирует вашу идею полностью;
  • поставить зарегистрированную интеллектуальную собственность на баланс компании по доходному методу и увеличить инвестиционную привлекательность фирмы;
  • продавать свое ПО по модели SaaS без риска плагиата;
  • обосновать стоимость ПО при продаже.

Регистрация патента на изобретение длится 10-18 месяцев. Срок действия — до 25 лет с момента подачи заявки, потом вашей разработкой сможет пользоваться кто угодно. Патент нужно продлевать каждые 5 лет, иначе правовая охрана прекращается.

Регистрация программ в Роспатенте с гарантией и без переплат

Как зарегистрировать программу в реестре отечественного ПО Минкомсвязи

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации поддерживает разработчиков из России. Чтобы отечественные разработчики имели преимущества перед зарубежными, их программы для ЭВМ и базы данных вносят в реестр Минцифры. Это дает возможность:

  • участвовать в тендерах на поставку ПО для компаний с госучастием и получать преимущества в получении тендера: при равных данных проект отдадут поставщику ПО, который есть в реестре;
  • не платить 20% НДС с продаж своего ПО;
  • участвовать в грантах Минкомсвязи и получать государственное финансирование разработок.

Попасть в реестр могут не все желающие. Условия попадания в реестр:

  • минимум 70% собственников должны иметь российское гражданство;
  • продукт должен быть коробочный, то есть купить его можно по одной ссылке, а не собирать частями;
  • запрещено использовать БД типа Mysql и подобные компоненты.

Большинство SaaS решений не смогут попасть в базу минкомсвязи.

Если компания попала в реестр Минкомсвязи — свидетельства не будет. ПО просто вносится в реестр и по запросу будет видно, что регистрация прошла успешно. С момента регистрации собственники ПО могут пользоваться всеми преимуществами: участвовать в тендерах и грантах, не платить НДС.

Подать заявку на внесение в реестр Минцифры может и физическое лицо, без оформления статуса предпринимателя. Чтобы вести коммерческую деятельность с помощью своего ПО и не платить НДС с продаж достаточно оформиться как самозанятому.

Как подать заявку в Минкомсвязи

Основная сложность при подаче заявки в том, чтобы с первого раза всё правильно оформить. Заявку можно подавать только раз в год. Если в первый раз отказали — попытаться еще раз можно будет только через год, а пока платить НДС.

Самый простой способ — подать заявку через портал Госуслуги. Для этого нужно:

  • иметь подтвержденный аккаунт на Госуслугах, учетную запись правообладателя в ЕСИА;
  • квалификационный сертификат электронной подписи;
  • определить коды ОКВЭД и нужные вам классы программного обеспечения;
  • представить документы и сведения, необходимые для регистрации.

Список документов большой, с ним можно ознакомиться на сайте Минкомсвязи.

Чтобы правильно оформить заявку, лучше обратиться к патентным поверенным, которые работают с программами для ЭВМ и БД. Как правило, эти специалисты имеют опыт и внесения ПО в базы Минкомсвязи. Патентные поверенные правильно оформят заявку и соберут все документы, чтобы ваше ПО попало в реестр и компания не платила 20% НДС.

Регистрация программ в Роспатенте
C гарантией и без переплат

Как защитить разработку компании от автора этой разработки

При разработке программного обеспечения важно учитывать юридические тонкости 4 части ГК РФ. Например, что автор произведения, то есть программист, который писал код и дизайнер, который рисовал интерфейс, навсегда останутся авторами. Заказчик не имеет права говорить, что он самостоятельно создал ПО, если это не так. А автор, если другого не прописано в договоре, может распоряжаться своим произведением как ему угодно.

Программисты «Рамблера» первыми в мире изобрели ПО «Nginx», которое позволяет выдержать больше 10 000 одновременных заходов на сервер компании. Если больше 10 тысяч пользователей одновременно заходили на другие сайты — происходил сбой в работе. А на «Рамблере» такого не было с 2002 года.

Автор «Nginx» Игорь Сысоев уволился из «Рамблера» и сделал код разработки открытым. Сейчас кто угодно может пользоваться его ПО и не платить «Рамблеру», по заказу которого был создан «Nginx».

Бывший работодатель попытался судиться с Сысоевым, но в России дело не закончилось ничем. В декабре 2020 года «Рамблер» подал на компанию Сысоева в суд США, чтобы восстановить право собственности на «Nginx» или получить 750 миллионов $ компенсации.

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

NDA и договоры о коммерческих тайнах работают не так, как хочется большинству работодателей. Суды часто встают на сторону сотрудников. Вот, что нужно учесть при составлении договора о коммерческой тайне, чтобы он имел юридическую силу:

  • коммерческой тайной может быть не любая информация, а только сведения, прописанные в законе: не получится защитить информацию о размере заработной платы, гонорарах, графиках работы и что угодно еще, что не имеет прямой коммерческой ценности для организации;
  • сотрудники и подрядчики должны быть уведомлены в письменном виде о том, что работают с коммерческой тайной, какие именно сведения являются коммерческой тайной и о санкциях в случае нарушения договора;
  • договор должен быть составлен от имени компании, которой принадлежит коммерческая тайна: в случае, если у вас холдинг, выберите правильную организацию;
  • обязательно пропишите, сколько лет после увольнения сотрудник и подрядчик не имеют права распространять информацию;
  • составляйте отдельный договор о неразглашении, не включайте эти пункты в трудовой договор или в приложение к нему: после увольнения всё, что прописано в трудовом договоре, теряет силу, то есть если сотрудник будет разглашать сведения, по закону ему что-то предъявить будет практически невозможно.
Читайте так же:
Восстановление закладок в яндекс браузере

Введение режима коммерческой тайны в организации — сложный процесс, но оно того стоит. Автор всегда остается автором и запретить ему перепродавать или повторно использовать разработку можно только при правильном оформлении документов во время сотрудничества.

Защита от недобросовестной конкуренции

Если вы зарегистрировали программу для ЭВМ в Роспатенте и конкуренты полностью скопировали ваш код — можно требовать с них компенсацию до 5 млн. руб. Если они используют код или концепцию вашего ПО, на который получен патент, помимо пяти миллионов можно потребовать:

  • сумму упущенной выгоды в двойном размере: если пираты перепродают или раздают ваше ПО, можно требовать в суде двойную стоимость по вашему прайсу с каждого проданного ими экземпляра. Неважно, почем они продавали ваш продукт или раздавали просто так — сколько стоит у вас, столько и вернут х2;
  • возврат суммы контрафактных продаж в двойном размере: если на основе вашего ПО конкуренты создали свою программу для ЭВМ или базу данных и вы смогли доказать это в суде, можете требовать, чтобы они возместили вам в двойном размере стоимость всех проданных копий их ПО

Ноу-хау для программистов!

Если вы хотите зарегистрировать свое ПО, но боитесь раскрыть код даже специалистам Роспатента или патентным поверенным — можно создать объект и зарегистрировать, не раскрывая его код.

Такой объект вы сможете поставить на баланс, передавать по лицензии, продавать.

Регистрируем программу для ЭВМ или базу данных

Зарегистрированная интеллектуальная собственность компании — залог спокойствия при ведении коммерческой деятельности. Если вы зарегистрировали разработку — ее не смогут скопировать другие. А если вы поставите интеллектуальную собственность на баланс — увеличите рыночную стоимость компании и сможете получить кредит для малого и среднего бизнеса под залог нематериальных активов фирмы.

Самая дорогая в мире компания «Эппл» стоит 263 миллиарда $. 70% ее активов — интеллектуальная собственность.

Способы регистрации программы для ЭВМ и баз данных:

Регистрация программы для ЭВМ и базы данных в Роспатенте. Длится 3-60 дней, защищает только исходный код. Если вашу разработку взяли и переделали, переписали код на другом языке программирования — доказать плагиат невозможно. Способ удобен, если вы продаете свое ПО или передаете по лицензии и нужно заключать договор.

Патент на изобретение. Может защитить не только код, но и концепцию вашего ПО. Если вы получите патент, никто не сможет скопировать вашу идею, переписать или модифицировать код и выдать разработку за свою. Получение патента длится 10-18 месяцев, самостоятельно получить положительное решение практически невозможно, лучше обратиться к патентным поверенным.

Регистрация в реестре Минкомсвязи. Позволяет участвовать в гостендерах по поставкам ПО на привилегированных условиях, не платить НДС и получать государственные гранты. Для регистрации требуется предоставить большой перечень документов и правильно заполнить все заявления. Заявку можно подавать только 1 раз в год, если один раз пришел отказ — целый год придется платить НДС. Поэтому подавать заявку безопасней тоже через патентных поверенных.

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

Когда вы зарегистрировали программу для ЭВМ, можно продавать свою разработку, давать к ней доступ, выпускать продукты на основе своего кода.

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

Ирина Резникова

Старший партнер патентно-адвокатского бюро «Гардиум», патентный поверенный № 1947.
В практике более 20 лет.

Записки программиста

Время от времени я заглядываю на Toster.ru и иногда даже отвечаю там на вопросы. Чаще всего люди спрашивают две вещи — как стать программистом и как правильно спроектировать схему базы данных. Мне лично кажется очень странным, что так много людей задают последний вопрос. Мне почему-то всегда казалось, что это такая простая вещь, которую умеют вообще все. Но, раз так много людей интересуются, здесь я постараюсь дать достаточно развернутый и в то же время краткий ответ.

Я предполагаю, что SQL вы знаете. То есть, объяснять, что такое таблицы, строки, индексы, первичные ключи и ссылочная целостность, не требуется. Если это не так, боюсь, я вынужден отправить вас к соответствующей литературе. Благо, ее сейчас очень много.

Рисуем диаграмму

Допустим, требуется спроектировать схему базы данных, в которой хранится информация о музыкальных исполнителях, альбомах и песнях. На начальном этапе, когда у нас еще совсем ничего нет, удобно начать с рисования диаграммы будущей схемы. Можно начать с наброска ручкой на листе бумаги, можно сразу взять специализированный редактор. Их сейчас очень много, все они устроены довольно похожим образом. При подготовке этой заметки я воспользовался DbSchema. Это платная программа, но мне кажется, что она стоит своих денег. К тому же, в нормальных компаниях обычно оплачивают стоимость софта, необходимого для работы. Триал у DbSchema, если что, составляет две недели.

Читайте так же:
Мсай автобернер не видит видеокарту

Нарисовать следюущую диаграмму заняло у меня порядко десяти минут:

Пример схемы базы данных

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

Дополнение: Аналогичную диаграмму можно построить при помощи открытого инструмента PlantUML.

Генерируем SQL и скармливаем его СУБД

Нетрудно заметить, что данная диаграмма легко отображается в код для создания схемы базы данных на языке SQL. В DbSchema сгенерировать SQL можно, сказав Schema → Generate Schema and Data Script. Затем полученный скрипт можно скормить используемой вами СУБД:

Я использовал PostgreSQL. Информацию о том, как установить эту СУБД, вы найдете в этой заметке.

Итак, чем же я руководствовался при проектировании схемы?

Нормальные формы

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

Грубо говоря, таблица находится в первой нормальной форме (1НФ), если на пересечении любой строки и любого столбца в таблице находится ровно одно значение. В современных РСУБД это условие всегда выполняется. Даже если СУБД поддерживает множества или массивы, на пересечении строки и столбца хранится ровно одно значение типа множество или массив. Но в таблице (user varchar(100), phone integer) не может быть строки alex — 1234, 5678 . В 1НФ может быть только две сроки — alex — 1234 и alex — 5678 .

Вторая нормальная форма (2НФ) означает, что таблица находится в первой нормальной форме, и каждый неключевой атрибут неприводимо зависит от значения первичного ключа. Неприводимость означает следующее. Если первичный ключ состоит из одного атрибута, то любая функциональная зависимость от него неприводима. Если первичный ключ является составным, то в таблице не может быть атрибута, значение которого однозначно определяется значением подмножества атрибутов первичного ключа.

Таблица находится в третьей нормальной форме, если она находится в 2НФ и ни один неключевой атрибут не находится в транзитивной функциональной зависимости от первичного ключа. Например, рассмотрим таблицу (employee varchar(100) primary key, department varchar(100), department_phone integer) . Очевидно, что она находится в 2НФ. Но телефон отдела находится в транзитивной функциональной зависимости от имени сотрудника, так как сотрудник однозначно задает отдел, а отдел однозначно задает телефон отдела. Для приведения таблицы в 3НФ нужно разбить ее на две таблицы — employee — department и departmnet — phone .

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

Как я уже отмечал, есть и более строгие нормальные формы, но на практике обычно используются только первые три.

Отношение один ко многим

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

Для моделирования такого типа отношения в каждом альбоме указывается id исполнителя, и в каждом исполнителе указывается id страны. Понятное дело, мы не просто пишем туда какую-то циферку, а возлагаем ответственность по контролю ссылочной целостности на нашу СУБД:

Это часто оказывается большим сюрпризом для тех, кто всю жизнь работал с MySQL и его бэкендом MyISAM, который так не умеет. Я не вижу причин не проверять ссылочную целостность, если только вы не пишите супер-пупер высоконагруженный проект, у которого исполнители хранятся на одном сервере, а альбомы — на другом. В противном случае вас ждет много часов увлекательной отладки вашего приложения в ночь с субботы на воскресенье, потому что как-то так получилось, что кто-то создал альбом с несуществующим исполнителем.

Жанры и страны в приведенной схеме иногда еще называют «словарями». Это сравнительно небольшие таблицы, состоящие из двух столбцов — id и названия. Если, например, мы захотим переименовать страну Russia в Russian Federation, нам придется поменять всего лишь одну строчку в таблице countries, а не править кучу строк в таблице artists, что может привести к очень большому количеству дисковых операций. Кроме того, если требуется отобразить в диалоге создания нового исполнителя выпадающий список с выбором страны, нам не придется делать дорогих группировок по таблице artists, достаточно сделать простую выборку из countries.

Отношение многие ко многим

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

Оно моделируется путем введения дополнительной таблицы. В нашем примере эта таблица называется albums_songs. Первичный ключ в этой таблицы состоит из двух внешних ключей — album_id и song_id. Теперь нетрудно с помощью пары join’ов получить все песни, входящие в данный альбом или все альбомы, в которые входит заданная песня. Кроме того, ничто не мешает завести в связующей таблице дополнительные столбцы. Например, столбец, хранящий номер трека, под которым песня входит в заданный альбом.

Читайте так же:
Библиотека уведомлений не зарегистрирована программа работать неправильно

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

Отношение родитель-потомок (или общее-частное)

Исполнители могут быть разных типов. Это может быть отдельно взятый(ая) певец/певица, или же группа. У всех исполнителей, независимо от конкретного типа, есть что-то общее. Например, страна, адрес официального сайта и так далее. Но кроме того, есть некоторые свойства, характерные только для данного типа. У певицы явно нет никакого названия группы, а у группы нет имени, фамилии и пола. Аналогичная ситуация возникает, скажем, если у вас есть сотрудники, занимающие различные должности и свойства сотрудников зависят от занимаемых должностей.

Один из способов моделирования такой ситуации заключается в введении по отдельной таблице на каждый из возможных подтипов. В приведенном примере это таблицы groups и persons. В качестве первичного ключа в каждой из этих таблиц используется artist_id, первичный ключ родительской таблицы artists. Кто-то при использовании такой схемы предпочитает добавить в родительскую таблицу столбец type, но, строго говоря, он является избыточным. Недостаток этого метода заключается в том, что можно создать исполнителя, являющегося как группой, так и человеком одновременно.

Есть и другие подходы. В PostgreSQL, например, есть наследование таблиц, предназначенное для решения как раз такой вот проблемы. Если вы работаете с PostgreSQL, нет причин не использовать этот механизм. Кто-то предпочитает ввести одну таблицу для всех типов с дополнительным столбцом type. Если некий столбец не имеет смысла для заданного типа, в него пишется null. Но это, как вы можете подозревать, не очень-то удобно, если у вас 10 типов, каждый из которых имеет по дюжине столбцов, характерных только для этого типа, а также парочку собственных подтипов. Кроме того, можно опрометчиво реализовать смену типа, как простое обновление столбца type, и получить массу интереснейших эффектов.

Что еще нужно принять во внимание

Принцип при моделировании других отношений тот же. Например, один человек имеет двух родителей и при этом один человек может иметь сколько угодно детей. Казалось бы, связь 2:N, этого мы не проходили. На самом деле, это просто две связи 1:N. Вводим столбцы mother_id, father_id и вперед. Да, связь в рамках одной таблицы, ну и что?

Иногда на практике можно столкнутся с древовидными структурами. На самом деле, это то же самое отношение один ко многим, один родитель имеет много потомков. В общем, вводится столбец parent_id, куда пишется «внешний» первичный ключ из этой же таблицы. В корневом элементе устанавливается parent_id равный null. Главное при работе с этим хозяйством — не наплодить случайно циклов.

В общем, все, что нужно, это немного здравого смысла.

Также при проектировании схемы базы данных нужно уделять внимание индексам. Тут все сильно зависит от конкретной СУБД, поддерживает ли она составные индексы, частичные индексы, функциональные индексы, bitmap scans и так далее. Кое-что по этой теме я писал здесь, а вообще — курите мануалы по вашей СУБД. Также за кадром остались вьюхи, тригеры и многое другое.

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

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

Заключение

Все приходит с опытом. Самостоятельно спроектируйте две-три схемы, и картинка сама сложится у вас в голове. В качестве ДЗ можете спроектировать базу данных блога, интернет-магазина или базу с сотрудниками компании, их должностями и контактами. Отталкивайтесь от задачи. Учитывайте, кто и какие действия будет совершать с базой данных. Например, с базой интернет-магазина работают не только клиенты, но и, например, отдел доставки.

Проект для DbSchema, а также сгенерированный из него SQL, вы можете скачать здесь. Как всегда, если у вас есть вопросы или дополнения, не стесняйтесь писать их в комментариях.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector