Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708

Open Source проект

25.09.2021, 20:52. Показов 5124. Ответов 43

Студворк — интернет-сервис помощи студентам
Помогите с оформлением ТЗ и проектированием проекта на python3.x К сожалению, не имею образования в сфере IT, и вообще не представляю, с чего начинается разработка на практике. Есть небольшие наработки, для себя в принципе сформированы общие требования к реализации, были начинания то есть что-то функционирует. Стек технологий, и gui-программка простенькая, для собственных целей: python3.x, sqlite.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.09.2021, 20:52
Ответы с готовыми решениями:

Посоветуйте open source проект
Посоветуйте, пожалуйста, хороший open-source проект на котором можно поучиться. Критерии: 1. Лицензия GNU/GPL, BSD etc. 2. Основные...

Open Source проект управления задачами
Есть желание сделать что-то вроде Service Desk. Для начала лайтовую, но рабочую версию под винду, с перспективой развития до...

Open source проект C/C++ без классов
Прошу, дайте ссылку на OpenSource программу (к примеру, на игру) объемом более 2к строк на языке C/C++ без классов. Именно без классов,...

43
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
09.10.2021, 13:53  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от iSmokeJC Посмотреть сообщение
AlexMarkov, ну вот возьми предыдущий проект и поменяй shelve/picle на sqlite, будет тебе опыт.
Я не делаю работу, которая ничем не может помочь в реальности, прошлые этапы пройдены, для себя я извлек все что необходимо, а то что всем остальным "начхать" это третье дело, которое меня мало интересует. Данный проект может пригодиться любому пользователю десктопного компьютера, а вот ваши все сетевые "винтифлюшки" с многомиллионной конкуренцией бессмысленны...все вернуться к классической модели - это факт...пусть и через несколько десятилетий.
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
09.10.2021, 13:56
Цитата Сообщение от AlexMarkov Посмотреть сообщение
Жду замечаний по схеме...
схема по принципам реляционных баз данных - много мелких таблиц со связями по ключу
по sqlite вам лучше на https://www.sql.ru/forum/sqlite зайти
https://zametkinapolyah.ru/zametki-o-mysql/sqlite тоже неплохие примеры
Цитата Сообщение от AlexMarkov Посмотреть сообщение
Что скажете о таблицах Rowid
rowid - номер строки, можно использовать для диапазона типа
SQL
1
SELECT * FROM mytable WHERE rowid > 100
1
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
09.10.2021, 14:06  [ТС]
Цитата Сообщение от vic5710 Посмотреть сообщение
rowid - номер строки, можно использовать для диапазона типа
Я так понимаю при наличии автоинкрементного PRIMARY KEY с такой же нумерацией необходимости в rowid нет.

Добавлено через 2 минуты
Цитата Сообщение от vic5710 Посмотреть сообщение
по sqlite вам лучше на https://www.sql.ru/forum/sqlite зайти
Там все мертво...отвечают только здесь...

Добавлено через 4 минуты
И все же я получу ответы на вопросы которые я задал?
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
09.10.2021, 14:11
ИМХО вам сюда https://www.severcart.ru/blog/all/python_sqlite3/
0
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
09.10.2021, 14:23  [ТС]
Цитата Сообщение от vic5710 Посмотреть сообщение
Все пройдено, нужен этап проектирования, вот что меня интересует, что вы меня лопатой то копать все заставляете...прежде чем копать надо все рассчитать, тогда и копка будет в удовольствие, а так опять какой-то мусор, ладно видимо бесполезно, просто никто здесь ничего не знает...
0
09.10.2021, 14:25

Не по теме:

Цитата Сообщение от AlexMarkov Посмотреть сообщение
просто никто здесь ничего не знает
Слабенькая попытка взять на слабО

0
09.10.2021, 14:34  [ТС]

Не по теме:

Даже не думал, я здесь не с целью: "ищу кто-бы что-нибудь за меня сделал", и вам этого не советую. Прошу помочь в мыслительном процессе, а так это все ваша "человечинка" и "гордыня", думать что все думают как и вы сами. Что то новое создается только в преодолении трудностей, в том числе над собственным "Я". Мне не нужны ваши "копейки", я пытаюсь сделать копилку. А для этого нужна предварительная подготовка.

0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
09.10.2021, 16:29
AlexMarkov, ну так пишите и код показывайте, поглядим. а так - эта песня ниачем .
нету телакода - нету дела ответа
0
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
09.10.2021, 16:44  [ТС]
vic5710, хорошо, вот что у меня получилось в результатах DDL в SQLiteStudio.
SQL
1
2
3
4
5
6
7
8
9
CREATE TABLE Category (
    ID_Category    INTEGER PRIMARY KEY ASC AUTOINCREMENT
                           NOT NULL
                           UNIQUE,
    NameOfCategory TEXT    NOT NULL
                           UNIQUE,
    DATE           TEXT    DEFAULT _NoDate_
                           NOT NULL
);
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE Inventory (
    CategoryNumber             INTEGER REFERENCES Category (ID_Category) ON UPDATE CASCADE
                                       NOT NULL,
    InventoryNumber            INTEGER PRIMARY KEY AUTOINCREMENT
                                       UNIQUE
                                       NOT NULL,
    Name                       TEXT    NOT NULL
                                       DEFAULT _NoName_,
    InitialCost                REAL    NOT NULL
                                       DEFAULT (0),
    StandartServiceLifeInYears NUMERIC NOT NULL
                                       DEFAULT (0),
    EstimatedFactorOrValueGain NUMERIC NOT NULL
                                       DEFAULT (0),
    ActualServiceLifeInYears   NUMERIC NOT NULL
                                       DEFAULT (0),
    DATE                       TEXT    DEFAULT _NoDate_
);
Вопрос собственно, в таблице "Score", здесь, насколько я понял, ее можно создать только через вьюху. Нужен код(запрос) DDL-операции по формулам из представленного выше скриншота второй таблицы с обозначением принадлежности по цвету.

Добавлено через 5 минут
Потом я не настолько хорошо знаю данный редактор, как мне обеспечить целостность базы данных, ввести ограничения. Сможете рассказать что делают непонятные мне формы ввода, в документации информация отсутствует или описана одной строкой.
0
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
09.10.2021, 16:48  [ТС]
Вот формулы, продублирую еще раз:
0
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
09.10.2021, 16:49  [ТС]
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
10.10.2021, 00:32
по вьюхам в моей второй ссылке есть тема
а какой у вас обьем планируется, в смысле количество записей?
Цитата Сообщение от AlexMarkov Посмотреть сообщение
непонятные мне формы ввода
какие именно? телепаты в отпуске
0
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
10.10.2021, 06:56  [ТС]
9991 запись, этот ответ вас устроит? Не тратьте мое время, пожалуйста. Вы вообще про другую тематику, разговора, посмотрите сами, если советуете. Всего доброго.
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
10.10.2021, 13:05
ROWID - это индекс. Можно глянуть тут.
Цитата Сообщение от AlexMarkov Посмотреть сообщение
Потом я не настолько хорошо знаю данный редактор
Знание редактора тут вообще ни при чем. DDL везде +- одинаковый.
По коду SQL выше видно, что в Inventory есть внешний ключ Category (ID_Category), есть ограничение UNIQUE, установлены значения по умолчанию - это и есть ограничения.
Можно (а, может, и нужно) добавить еще действие при удалении (у внешних ключей).
Лучше использовать типы данных из левого столбца таблицы раздел 3.1.1.
VARCHAR - для текста, DATE - для дат и т.д.

Насколько я понял, то редактор SQLiteStudio. Так там все интуитивно понятно.
Структура - схема таблицы - это единственное, что нужно. Можем изменять типы данных, добавлять столбы, ключи, ограничения и т.д. Для подтверждения каких-либо изменений надо жать на зеленую кнопку с галочкой.
Непонятно, что мешает создать модели в коде, и теми же makemigration и migrate создать базу по моделям.

Представления можно создать по любому туториалу SQL
SQL
1
2
3
4
5
CREATE VIEW Score AS
    SELECT Инвентаризация.F3 AS f3,
           Инвентаризация.F4 AS f4,
           (Инвентаризация.C3/ Инвентаризация.B3) AS fcb
      FROM Инвентаризация
Так же никто не запрещает использовать JOIN для соединения таблиц и создания вьюхи, где будут нужны данные из разных таблиц Таблица1.F3 / Таблица2.F3

Чисто себе для примера можете создать две таблицы и заполнить их какими-то данными
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE Orders (
    Id         INTEGER PRIMARY KEY,
    CreatedAt  DATE,
    CustomerId INTEGER REFERENCES Customers (Id) ON DELETE NO ACTION
                                                 ON UPDATE NO ACTION,
    ValA       INTEGER,
    ValB       INTEGER
);
CREATE TABLE Customers (
    Id   INTEGER PRIMARY KEY,
    Name VARCHAR,
    ValC INTEGER
);
Затем создать View и посмотреть, что он выведет
SQL
1
2
3
4
SELECT Customers.Name AS Customer,
       (Orders.ValA / Orders.ValB) AS VAL1,
       (Customers.ValC / Orders.ValB) AS VAL2
FROM Orders INNER JOIN Customers ON Orders.CustomerId = Customers.Id
1
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
10.10.2021, 14:37  [ТС]
ipsorokin. Огромное спасибо, за развернутый ответ, пока это единственный полезный материал в дальнейшей разработке ТЗ, вчера был разговор ни о чем, просто реклама еще одного продукта. Насколько я понял схема все же Вам понятна, правильна ли она, если вместо таблицы используется VIEW? Как тогда данный факт отображают на ER-диаграммах? Вьюху я сделаю, спасибо за подсказку и мотивацию.
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
10.10.2021, 15:18
Цитата Сообщение от AlexMarkov Посмотреть сообщение
Как тогда данный факт отображают на ER-диаграммах?
На этот вопрос не готов ответить.
Цитата Сообщение от AlexMarkov Посмотреть сообщение
таблицы используется VIEW
VIEW SQL, тоже самое, что и какой-н. html (условно), только в рамках БД.
Можно еще назвать виртуальной таблицей. Она просто представляет какие-то данные, основанные на другой(-их) таблице(-ах) getter. Да, при определенных условиях данные можно поменять через вьюху, но это нас не интересует.
Можно сделать даже такие банальные вьюхи:
SQL
1
2
CREATE VIEW CustomersView AS
SELECT * FROM Customers
и использовать в программе SELECT * FROM CustomersView, ничего не зная вообще о таблице Customers.
Но я бы использовал их лучше для вывода данных, собранных из разных источников. Это относится не конкретно к SQLite, а вообще.

Тут вопрос немного в другом: что в итоге используется?
Если все запросы мы делаем руками сами - сами пишем CRUD, - то можно реализовать все логику работы с таблицами в виде хранимых процедур и триггеров. В коде же просто вызываем нужные нам процедуры без/с параметрами, а не пишем инсерты или селекты длинной в 100500 символов.
Если Django ORM - "улыбаемся и машем". Можно посмотреть тут.
1
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
10.10.2021, 16:28  [ТС]
Цитата Сообщение от ipsorokin Посмотреть сообщение
Знание редактора тут вообще ни при чем. DDL везде +- одинаковый.
Здесь я про функциональность редактора говорил.
Цитата Сообщение от ipsorokin Посмотреть сообщение
По коду SQL выше видно, что в Inventory есть внешний ключ Category (ID_Category), есть ограничение UNIQUE, установлены значения по умолчанию - это и есть ограничения.
Я про инструкции CHECK, в SQLite используются?
Цитата Сообщение от ipsorokin Посмотреть сообщение
Если все запросы мы делаем руками сами - сами пишем CRUD, - то можно реализовать все логику работы с таблицами в виде хранимых процедур и триггеров.
Да, все ручками хотелось бы, знание SQL запросов необходимо. Мне не понятны на каких этапах разработки базы данных начинают использовать триггеры, хранимые процедуры и функции? Да и схема не работает, надо все заново начинать. Что с внешними ключами, можно использовать несколько в одной таблице, что-то не получается, организовать связи.

Добавлено через 8 минут
Или переформулирую: Схема таблицы Score, если следовать вашей логике с JOIN. Что должно быть создано в таблицах заранее, чтобы вычисления прошли?
Вот пример необходимых формул во вьюхе:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT Inventory.InitialCost AS FullCost,
(Inventory.ActualServiceLifeInYears / Inventory.StandartServiceLifeInYears)
AS FIcoefficient,
(Inventory.InitialCost * Inventory.EstimatedFactorOrValueGain) 
AS ReplacementCost,
(Score.ReplacementCost - Score.FullCost) / Score.FullCost
AS MIcoefficient,
(Score.ReplacementCost*Score.FIcoefficient * Score.MIcoefficient)/12
AS MonthlyDeductions,
(Score.ReplacementCost*Score.FIcoefficient * Score.MIcoefficient)
AS AnnualDeductions,
(Score.FullCost-Score.AnnualDeductions)
AS AssesedValue
FROM Inventory INNER JOIN Score ON Inventory.InventoryNumber=Score.ID
Добавлено через 4 минуты
В таблице Score необходимы значения вычисляемые из значений этой же таблицы, какова должна быть структура базы данных или есть возможность все выполнить используя язык запросов? Насколько мне известно алиасами решаются такие ситуации, ну что-то у меня не получается.
0
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
10.10.2021, 17:05
Цитата Сообщение от AlexMarkov Посмотреть сообщение
Мне не понятны на каких этапах разработки базы данных начинают использовать триггеры, хранимые процедуры и функции?
Для начала просто создайте таблицы, даже без каких-то связей. Просто какие есть поля.
Потом посмотрите какие нужны ограничения, например UNIQUE или CHECK.
Возвращаясь к тому же редактору, как я уже писал выше, жмем на выбранный столбец и получаем ответ на все эти вопросы, что можно, что нельзя (см. картинку).
Но для этого существуют документации от конкретной СУБД (может не всегда в нормальном виде)
Потом подумайте, какие с какими связаны, и добавьте в них внешние ключи, нужно ли удалять запись из таблицы, при удалении связной из главной.
А дальше уже пишем процедуры на добавление/удаление в таблицы, триггеры на обновление изменение связных записей, если надо.
Сюда же можно отнести, как пример, "мягкое удаление", когда из таблицы удаляется запись запросом DELETE FROM Table1 WHERE Id = 3,
а на самом деле триггером будет установлено этой записи в столбец IsDeleted значение true (естественно, мы должны создать столбец заранее).
Опять же все зависит от возможностей используемой СУБД. В одной есть триггеры и процедуры, а в другой нету.
Это уже надо смотреть документацию на конкретную СУБД. Но, в основном, все они одинаковые в плане DDL DML (уже говорил).
Можно взять документация по запросам от той же MSSQL, и оно будет работать в других в 90%.

Касаемо этого:
T-SQL
1
2
3
4
5
6
7
8
SELECT Inventory.InitialCost AS FullCost,
   (Inventory.ActualServiceLifeInYears / Inventory.StandartServiceLifeInYears) AS FIcoefficient,
   (Inventory.InitialCost * Inventory.EstimatedFactorOrValueGain) AS ReplacementCost,
   (Score.ReplacementCost - Score.FullCost) / Score.FullCost AS MIcoefficient,
   ((Score.ReplacementCost * Score.FIcoefficient * Score.MIcoefficient) / 12) AS MonthlyDeductions,
   (Score.ReplacementCost * Score.FIcoefficient * Score.MIcoefficient) AS AnnualDeductions,
   (Score.FullCost - Score.AnnualDeductions) AS AssesedValue
FROM Inventory INNER JOIN Score ON Inventory.InventoryNumber = Score.ID
Score - таблица, ReplacementCost - столбец этой таблицы. Дальше все по аналогии.
Inventory.InventoryNumber = Score.ID - здесь, обычно, связывают по внешнему ключу. InventoryNumber ссылается на ID таблицы Score.
Логично, что чтобы посчитать по формулам, эти столбцы должны быть в таблице, а в строках должны быть какие-то значения или NULL.

Единственное, что требует уточнения, так это деление на ноль.
Вы делали DEFAULT (0), каким-то столбцам, а деление на ноль = fatality.
Но, что если не устанавливать им NOT NULL и DEFAULT (0) ?
Тогда могут быть значения NULL, а на него, если память не подводит, можно и делить и умножать, только результат будет NULL. А проверка на null - это уже обычная задача.

Я бы порекомендовал прочитать любой туториал по любой СУБД, чтобы было больше понимания соединения таблиц и ограничений (как вариант).
Миниатюры
Open Source проект  
1
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
16.10.2021, 21:27  [ТС]
ipsorokin, ну в общем схемку я наколдовал, какая ни какая, а база получилась:

Появились дополнительные вопросы, да и на первые так никто и не ответил.

Вопросы требующие внимания:
- Как решаются проблемы в базах данных, с числовыми разделителями, я про "." и ","?
- Возможно ли добавить текущую дату в последнюю колонку создаваемой записи?
- Правилен ли перевод наименований атрибутов, нужны правильные варианты?
- Правильность типов данных для SQLite3;
- И все все остальное и необходимое для правильности этапа физического проектирования.

PS. Хотелось бы закрыть вопрос с базой, и начать работу ближе к делу данного раздела, это я про python. Ну я не могу этого сделать, пока не буду уверен, что созданная мной база удовлетворяет всем условиям для использования API. Чтобы быть в этом уверенным мне нужна помощь специалиста, который исправит все что можно в предоставленном мной материале, и ответит на все вопросы по теме, не отклоняясь при этом в сторону разработки с использованием других СУБД.
0
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
16.10.2021, 21:42  [ТС]
База создана, нуждается в помощи специалиста, могу предоставить весь материал, как кодом по каждой таблице (+триггер) и view, так и самим файлом в личном сообщении, по требованию, для проверки и исправлений. Здесь, могу только кодом запостить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2021, 21:42

Как разрабатывать open-source проект правильно?
Занимаюсь своим open-source проектом на python, есть желание повысить эффективность процесса разработки за счет его правильной организации...

Ищу напарника в open-source проект на Java
Хочу транспилить html5/es6 api и документацию от w3c в java и javadoc. А затем сделать легковесный транспилинг java -> es6 на полученном...

Open Source - проект элементов управления для .NET и Mono
http://radiosoft.info/index.php/net-controls - Open Source - проект элементов управления для .NET Framework и Mono (Linux) по лицензии...

В новый open-source проект требуется опытный lead developer (pyqt)
О проекте - cross-platform P2P messenger с акцентом на безопасность коммуникаций. Обязанности: Ведущий программист в проекте. ...

В новый open-source проект требуется опытный специалист по безопасности/шифрованию. encryption, ipsec, pgp, reverse engineering
О проекте - cross-platform P2P open-source messenger с акцентом на безопасность коммуникаций. Обязанности: Один из ведущих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru