powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / правильна ли стратегия разработки? или я не туда забрел?
25 сообщений из 72, страница 1 из 3
правильна ли стратегия разработки? или я не туда забрел?
    #36318252
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разрабатываю приложения и на данном этапе меня терзают смутные сомнения
на сегодня в базе 131 табличка - и это только начало
для обслуживания каждой таблички существует как-минимум 4 CRUD-sp

уже сейчас сложно ориетироваться в такой системе, а что же будет дальше?
Это правильный путь разработки? у всех так или только я один такой дурак!? :)

Поделитесь опытом пожалуйста!
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36318295
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp на сегодня в базе 131 табличка - и это только началоЯ работал с базами по 5000 таблиц. Дурное дело нехитрое
sp для обслуживания каждой таблички существует как-минимум 4 CRUD-sp
Хорошие правила наименования вам помогут.
sp уже сейчас сложно ориетироваться в такой системе, а что же будет дальше?Приличные средства разработки должны фильтровать списки объектов до приемлимых величин
sp у всех так или только я один такой дурак!? :)Риальные пацаны делают EAV с тремя таблицами
sp Поделитесь опытом пожалуйста!Один из подходов засунуть все lookup таблицы типа id, description в одну большую id, description, type. Рекомендую просмотреть полемику на предмет взвешивания достоинств и недостатков подхода.
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36319393
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spразрабатываю приложения и на данном этапе меня терзают смутные сомнения
на сегодня в базе 131 табличка - и это только начало
для обслуживания каждой таблички существует как-минимум 4 CRUD-sp
На самом деле - это вопрос религии, поэтому иногда провоцирует "крестовые походы" (на RSDN'е вообще часто по этому поводу спорят).
Поступить можно по-разному:
1. Оставить все как есть, просто ввести некую систему стандартного именования CRUD-процедур (как предложили выше).
2. Вносить изменения напрямую в таблицы БД (возможны проблемы с безопасностью, хотя все зависит от требований к системе).
3. Использовать обновляемые представления , если твоя СУБД их поддерживает (CRUD-процедуры превратятся в триггеры представлений).
У всех вариантов свои плюсы и минусы. Во что веруешь, то и используй....
Только одно замечание: почему CRUD-процедур 4? Ты SELECT тоже в отдельную процедуру запихиваешь? Уверен, что тебе ВСЕГДА понадобиться тянуть на клиента ВСЕ столбцы из таблиц? Может команду SELECT лучше с клиента слать?
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36320014
Esu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я именую типа
Checks - чеки
CheckMakers
CheckMakersCompanies
Companies
CompanyDetails
CompanyAddresses
CompanyEmployees
Employees
EmployeeRights
EmployeeWorkHours
EmployeeWorkHoursOfficeManagers

Ну и так впринципе могу наверное до бесконечности их плодить.. за 1000 штук уже было
idшки и fkшки всегда EmployeeID, EmployeeRightID. гляда на имя таблицы или fk я уже сразу знаю куда он ссылается и как это правильно написать. Ну и если меня там интересует что-то по деталям компании то знаю что табличка начинается с Company а потом идет скорее всего Detail ну и тд.

Не знаю зачем нужно 4 процедуры на таблицу.. У меня процедуры как правильно бизнес логику делают. Типа sp_EmployeeFire(EmployeeID) или sp_genReportsWorkhoursEmployee ну и она там уже разбирается что нужно сделать для увольнения/генерации.
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36320135
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хранить скрипты только в файлах, сложенных в логично названных папках.
Работать только со скриптами. Версионный контроль.

У нас ок. 800скриптов = более 2тыс. ХП. 340таблиц.
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36320184
Esu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVХранить скрипты только в файлах, сложенных в логично названных папках.
Работать только со скриптами. Версионный контроль.

У нас ок. 800скриптов = более 2тыс. ХП. 340таблиц.

А что делают эти 2000 ХП? Основная масса из них?
Что делать если накатили эти версионные скрипты на продакшн и там что-то таки сдохло?

любопытно просто
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36320404
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stomsky Может команду SELECT лучше с клиента слать?А вот это еще один не менее религиозный вопрос.
Кстати тут же и ответ, что может лежать в тысячах процедур.
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36320542
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, по поводу кол. таблиц и процедур :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT COUNT(*)
FROM dba_objects
WHERE object_type IN ('PROCEDURE', 'FUNCTION', 'PACKAGE')
AND owner = ('APPS')

COUNT(*)
----------
 40040 


SELECT COUNT(*)
FROM dba_objects
WHERE object_type IN ('TABLE')
AND owner <> 'SYS'

COUNT(*)
----------
 22223 

Это на тему "сложно ориентироваться"
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36320895
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EsuНе знаю зачем нужно 4 процедуры на таблицу.. У меня процедуры как правильно бизнес логику делают. Типа sp_EmployeeFire(EmployeeID) или sp_genReportsWorkhoursEmployee ну и она там уже разбирается что нужно сделать для увольнения/генерации.

4 sp-ши - создание, удаление. модификация, изменения чтатуса, печати, поиска и т.д.
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36320899
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stomskyТолько одно замечание: почему CRUD-процедур 4? Ты SELECT тоже в отдельную процедуру запихиваешь? Уверен, что тебе ВСЕГДА понадобиться тянуть на клиента ВСЕ столбцы из
таблиц? Может команду SELECT лучше с клиента слать?

Да, на выборку у меня тоже своя спшка -потому как для какждой роли объект к юзеру толи передом толи задом ))) и где это учитывать как не в селест-спшке??
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36321156
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tru55Кстати, по поводу кол. таблиц и процедур :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT COUNT(*)
FROM dba_objects
WHERE object_type IN ('PROCEDURE', 'FUNCTION', 'PACKAGE')
AND owner = ('APPS')

COUNT(*)
----------
 40040 


SELECT COUNT(*)
FROM dba_objects
WHERE object_type IN ('TABLE')
AND owner <> 'SYS'

COUNT(*)
----------
 22223 

Это на тему "сложно ориентироваться"

зачем же так грубо? моглиб сказать что около того....:)
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36321703
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EsuА что делают эти 2000 ХП? Основная масса из них?
Что делать если накатили эти версионные скрипты на продакшн и там что-то таки сдохло?
любопытно простоВся работа - исключительно через ХП. Поэтому на каждый "некий список" с десяток ХП: удаление, обновление, добавление, чтение, смена владельца, поиск, ну и т.д. Долго рассказывать.

Что значит сдохло ? Заработало не так ? Корректируется и снова накатывается скрипт. Есть встроенная система информирования разработчиков об ошибках.
Критичные доработки тестируются на запасной базе.

Иногда требуется перекомпиляция проекта.

ЗЫ: Корпоративная система: торговля, кадры, автотранспорт, учет затрат, проектных работ и т.д.
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36323955
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257stomsky Может команду SELECT лучше с клиента слать?А вот это еще один не менее религиозный вопрос.
Кстати тут же и ответ, что может лежать в тысячах процедур.
Согласен, просто я хотел услышать обоснование. Может есть что-то такое, что для меня не очевидно...

spДа, на выборку у меня тоже своя спшка -потому как для какждой роли объект к юзеру толи передом толи задом ))) и где это учитывать как не в селест-спшке??
Я не очень понял, что в данном случае понимается под словом "объект"? Все отдельные сущности некоторого типа (т.е. все строки, хранящиеся в таблице, для которой заведена SELECT-овая хранимка) или отдельные сущности этого типа (т.е. отдельные строки таблицы)?
Если первое, то почему не реализовать безопасность средствами MSSQL (т.е. некоторым ролям пользователей разрешить SELECT из таблицы, а некоторым - запретить)?
Если второе (т.е. речь идет о Row Level Security), то можно и во View-шке это реализовать...

Хотя, если если у тебя нет таблиц с огромным количеством столбцов, если нет столбцов типа image или text, если твои SELECT запросы не будут возвращать миллионы строк на клиента, то на тему SELECT-овой хранимки можешь вообще забить...
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36324218
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stomsky
Я не очень понял, что в данном случае понимается под словом "объект"? Все отдельные сущности некоторого типа (т.е. все строки, хранящиеся в таблице, для которой заведена SELECT-овая хранимка) или отдельные сущности этого типа (т.е. отдельные строки таблицы)?


второе

stomsky
Если первое, то почему не реализовать безопасность средствами MSSQL (т.е. некоторым ролям пользователей разрешить SELECT из таблицы, а некоторым - запретить)?
Если второе (т.е. речь идет о Row Level Security), то можно и во View-шке это реализовать...

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

stomsky
Хотя, если если у тебя нет таблиц с огромным количеством столбцов, если нет столбцов типа image или text, если твои SELECT запросы не будут возвращать миллионы строк на клиента, то на тему SELECT-овой хранимки можешь вообще забить...

тут не понял о чем Вы
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36325818
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spдля каждой роли необходимо по-разному преподносить данные, где роль пожирнее и побагаче - с рюшечками, а где работяга - серые стены и каменное сидение (это в демократиях так принято)
и роли у нас используются не серверные а функциональные, поэтому и права раздаются в бд при помощи метаданных
А где тут противопоказание для использования View'шек?

spstomsky
Хотя, если если у тебя нет таблиц с огромным количеством столбцов, если нет столбцов типа image или text, если твои SELECT запросы не будут возвращать миллионы строк на клиента, то на тему SELECT-овой хранимки можешь вообще забить...
тут не понял о чем Вы
Ну как... прикинь: у тебя есть таблица с парой сотен столбцов.
Тебе нужно сделать SELECT который возвращает таблицу всего из 3-х (трех) столбцов (остальные 197 столбцов в данном конкретном случае тебе НЕ нужны).
Если у тебя всего одна SELECT'овая хранимка для данной таблицы, которая ВСЕГДА возвращает один и тот же набор столбцов (скорее всего все, т.к. в разных частях программы могут понадобиться разные столбцы в разных комбинациях), то и для данного конкретного SELECT'а ты вытянешь данные всех столбцов, а не только 3-х которые тебе на самом деле требуются. Лишние данные будут передаваться.
Если строк в результате SELECT'а возвращается, ну скажем, десяток, то это еще ничего. А если пара сотен тысяч? Ты дофига ненужной информации будешь выводить за пределы базы данных. А это дело накладное!
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36326559
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stomsky А где тут противопоказание для использования View'шек?Например требование логировать SELECT

stomsky Тебе нужно сделать SELECT который возвращает таблицу всего из 3-х (трех) столбцов (остальные 197 столбцов в данном конкретном случае тебе НЕ нужны).Кто мешает написать ДРУГУЮ процедуру с ограниченным набором столбцов.

Еще раз повторюсь это вопрос религиозный, подход имеет свои достоинства и недостатки.
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36327394
stomsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257stomsky А где тут противопоказание для использования View'шек?Например требование логировать SELECT
А-а-а-а... ну если есть такое требование, то мне возразить нечего... Лучше хранимки ничего предложить не могу...
Хотя вопрос возникает: если пользователю даны права на SELECT из таблицы, то зачем контролировать что именно, когда и сколько раз выбиралось? Если пользователь имеет право видеть данные, значит надо считать, что он их уже видел! Если ему не положено - не давайте права и все тут! Всякие INSERT'ы, UPDATE'ы, DELETE'ы может и надо логировать, чтобы потом найти кто внес в данные таблицы "непоправимые улучшения". А для выборки-то это зачем? По-моему так... Хотя я не безопасник...

SERG1257stomsky Тебе нужно сделать SELECT который возвращает таблицу всего из 3-х (трех) столбцов (остальные 197 столбцов в данном конкретном случае тебе НЕ нужны).Кто мешает написать ДРУГУЮ процедуру с ограниченным набором столбцов.
Автор топика написал про 4 хранимки, одна из которых SELECT'овая. Если под каждый существенно различающийся SELECT свою хранимку завести, то мой пример, конечно, не актуален.

SERG1257Еще раз повторюсь это вопрос религиозный, подход имеет свои достоинства и недостатки.
Я о том же. Лично я пока сторонник отправки с клиента именно SELECT'а, а не вызова хранимок.

Но если есть требование топа логирования SELECT'ов (нужно это или нет - вопрос другой, заказчику виднее), то не возражаю против хранимок. :)
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36327953
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257stomsky А где тут противопоказание для использования View'шек?Например требование логировать SELECTэкзотическое требование, в каких случаях оно может возникнуть, интересно?
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36329691
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychэкзотическое требование, в каких случаях оно может возникнуть, интересно?

это не экзотическое требование, а обыденный аттрибут любой нормальной системы
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36329698
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spegorychэкзотическое требование, в каких случаях оно может возникнуть, интересно?это не экзотическое требование, а обыденный аттрибут любой нормальной системыда бог с вами, зачем селекты-то логировать? раскройте поподробнее что-ли тему
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36330313
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychspegorychэкзотическое требование, в каких случаях оно может возникнуть, интересно?это не экзотическое требование, а обыденный аттрибут любой нормальной системыда бог с вами, зачем селекты-то логировать? раскройте поподробнее что-ли тему
"Иметь возможность логировать" и "логировать" - разные вещи. Думаю, налицо типичный пример аудита: в возможности логировать предусматривается опциональное включение/выключение в зависимости от указанных фильтров: "для такого-то пользователя/группы", "для такого-то модуля", "в период времени с .. по ..". И поводов много, вплоть до банального "что ж это за запрос так грузит систему?!"...
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36330362
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛой,
вы же должны понимать, что это не объяснение. Писать кучу кода и просаживать производительность базы надо по существенным поводам, а не для реализации возможности, ценность наличия которой до сих пор не ясна.
>> поводов много, вплоть до банального "что ж это за запрос так грузит систему?!"... - для решения конкретно этой задачи существуют профайлеры, которые с ней справляются лучше, чем самодельные велосипеды.
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36331120
mir_unregistered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spэто не экзотическое требование, а обыденный аттрибут любой нормальной системы
Да Бог с вами. Возможно, это атрибут любой системы, которую делаете именно вы, но это же не повод для таких странных обобщений. Или каждый старается свою болезни назвать нормой?
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36332089
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychАнатоЛой,
вы же должны понимать, что это не объяснение. Писать кучу кода и просаживать производительность базы надо по существенным поводам, а не для реализации возможности, ценность наличия которой до сих пор не ясна.
>> поводов много, вплоть до банального "что ж это за запрос так грузит систему?!"... - для решения конкретно этой задачи существуют профайлеры, которые с ней справляются лучше, чем самодельные велосипеды.
Я не говорил, что требование нужно реализовывать самому, это требование может предъявляться к системе. С помощью каких технологий и инструментов система её закрывает - это уже реализация.

Для примера: не для всякой СУБД, которую может использовать система, и не со всеми нюансами требования могут справиться существующие профайлеры. А уж как собственная реализация будет сделана, и на сколько она будет грузить систему - от кривости ручек зависит... Упомянутый профайлер не грузит систему? Почему собственная реализация обязана делать свою работу хуже? А слабо под "существующим профайлером" пару сотен пользователей запустить, чтобы понять, какая редиска в 3 часа ночи сервак нагрузила?
...
Рейтинг: 0 / 0
правильна ли стратегия разработки? или я не туда забрел?
    #36332345
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spegorychэкзотическое требование, в каких случаях оно может возникнуть, интересно?

это не экзотическое требование, а обыденный аттрибут любой нормальной системы
:) какая нормальная система не знает то, что у нее может запросить конкретный пользователь?
...
Рейтинг: 0 / 0
25 сообщений из 72, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / правильна ли стратегия разработки? или я не туда забрел?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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