|
|
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Прошу помощи в проектировании БД (MS SQL). Требуется спроектировать "БД оборудования" для дальнейшего создания спецификации (сохранять в отдельный файл с последующим экспортом в Word). Вся сложность которая меня ставит в тупик это то, что у меня в БД нет, в принципе, (многократно) повторяющихся значений в записях, кроме завода изготовителя. Поэтому пока я представляю БД только двумя таблицами. таблица [Main] поля: [ID] [Name] [Type] [code] [Key_Manufacturer] [ed_izm] [Weight] [Dimension] [Description] [Date] [Note] [Image] таблица [Manufacturer] поля: [Key_Manufacturer] [Name] Еще будет повторяться [ed_izm] (единицы измерения) - кг, тонн, литры, метры, километры и т.д. Но мне кажется проще вбивать руками текст и хранить текстом... хотя не знаю. Ну пусть будет 3 таблицы. В главной таблице [Main] у меня получится не более 1.000.000 записей. В таблице [Manufacturer] не более 50 записей. Стоит ли делать БД из 2-3 таблиц? Или проще все в одной сделать и не париться? Дополнительно могу сказать про особенности записей: Разные заводы могут делать одинаковое оборудование. Почти все значения в таблице [Main] могут повторяться но не более 100 на 1M. Отдельно хочется сказать про запись в файл (думаю xml). Выбранные записи в БД нужно будет формировать в спецификацию (в том же приложении где и будет выводиться БД. Я думаю, что проще это будет сделать по позиции [ID]. И хранить в файле просто этот [ID] + количество заказанного оборудования (отдельное поле). Прошу помочь дельными советами в проектировании БД! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 08:27 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Ashoorup, всё, что вы тут понаписали, выдаёт в вас зелёного новичка. И потом, раз взялись делать по-хорошему, то вместо ed_izm сделайте уже Measure Unit, а то как-то не стыкуется с Weight, Dimension, Description Основой любой БД являются классификаторы (справочники) Займитесь сначала справочником единиц измерения, изучите этот нелёгкий вопрос, что такое единица измерения, какие системы единиц измерения существуют, и т.д. А если руками будете вбивать текст "кг", "км", "м3", то потом проблем не оберётесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 08:35 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Ashoorupсложность которая меня ставит в тупик это то, что у меня в БД нет, в принципе, (многократно) повторяющихся значений в записяхда, и забыл добавить - эта фраза лишена смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 08:36 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Нормальный справочник единиц измерений еще и позволяет пересчитывать тонны в килограммы и т.п. Если задачка не высосана из пальца, то его нужно делать добросовестно. Тоже касается и классификации оборудования. Она может быть достаточно сложной, по нескольким критериям, каждый критерий - отдельная иерархия. Свойства оборудования - еав. Качественный, универсальный экспорт в ворд по шаблонам - это полдюжины-дюжина таблиц. Классификация шаблонов, привязка шаблонов к бизнес-сущностям, маппинг полей шаблонов на поля сущностей, сами шаблоны и готовые файлы в виде блоб полей. Все перечисленное выше - штук 30 таблиц навскидку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 08:40 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupОтдельно хочется сказать про запись в файл (думаю xml). Выбранные записи в БД нужно будет формировать в спецификацию (в том же приложении где и будет выводиться БД. Я думаю, что проще это будет сделать по позиции [ID]. И хранить в файле просто этот [ID] + количество заказанного оборудования (отдельное поле). Ну а этот бред не имеет никакого отношения к проектированию БД. И вообще, вам проще всего будет нанять разработчика - специалиста по базам данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 08:40 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
П-ЛСвойства оборудования - еав.Зачем вы издеваетесь над новичком? Разве по его посту не понятно, что он не знает, что такое EAV ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 08:43 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
А вдруг хороший, годный новичок - будет грызть гранит науки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 08:47 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
да, но после его вопроса Ashoorup Стоит ли делать БД из 2-3 таблиц? Или [b]проще все в одной сделать и не париться ?[/b] его будет преследовать Святая Инквизиция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 08:50 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Я и есть зеленый новичок - не скрываю. Measure Unit - принял! Тогда делать надо 3 таблицы: таблица [Main] поля: [ID] [Name] [Type] [code] [Key_Manufacturer] [Key_Measure_Unit] [Weight] [Dimension] [Description] [Date] [Note] [Image] таблица [Manufacturer] поля: [Key_Manufacturer] [Name] таблица [Measure_Unit] поля: [Key_Measure_Unit] [Measure] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 08:54 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Вы начинаете с конца. СНАЧАЛА изложите коротко назначение, функциональные требования - что ваша база должна мочь. Отсюда будет видно, насколько глубоко надо прорабатывать те или иные части. Ну и схему бд лучше выкладывать графическую. Бесплатный мс скл экспересс имеет нормальный редактор схем, можно выставить режим отображения таблиц, когда будут видны комментарии к каждому полю. Можно добавлять произвольные текстовки на схему. Фронт-енд на схему можно быстренько натянуть на аксесе. Категорически против одинаковых полей Id Name в разных таблицах. При сшивании в запросе их придется алиасить. Я сразу именую ManufacturerID, ManufacturerName, UnitID, UnitName, ... Это вкусовщина, но так схема легче читается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 09:02 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Данная работа это мой курсовой проект. Кому нравится и кому будет приятно - можно шутить, глумиться, показывать свое ЧСВ. Я не обидчивый. Моя цель прежде всего научиться делать БД. Не для корочки в ВУЗе. Заказывать у спецов не буду однозначно. Программа будет реально работать на производстве. Спасибо за понимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 09:05 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
П-ЛСНАЧАЛА изложите коротко назначение, функциональные требования - что ваша база должна мочь. Я думал первого поста будет достаточно... Возможно что-то не учел... Задумка такая: Пользователь ищет по части наименования [Name] нужное оборудование. В таблице должны вывестись варианты (может делают несколько заводов, или есть разные исполнения). Далее пользователь выбирает нужную запись и добавляет ее в свою таблицу (спецификация), где потом только указывает количество. После того как спецификация сформирована - делает экспорт в Word. П-ЛНу и схему бд лучше выкладывать графическую. Еслиб я умел. Но я готов учиться, так-что не подумайте, что я спрыгиваю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 09:19 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupПрограмма будет реально работать на производстве.Вы можете в это искренне верить. Кто является заказчиком ? Кто - спонсором ? Результат проекта зависит от этих - ключевых вопросов а не от технических показателей. Может быть внедрено жуткое говнище, в котором будут страдать и мучаться юзеры, а качественное решение, напротив, выброшено за борт. Постарайтесь таки сформулирвать требования к системе. В учебном проекте все равно должен быть этот важный раздел. Какие средства для реализации предполагаете ? На чем будет клиент, сервер ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 09:22 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupП-ЛСНАЧАЛА изложите коротко назначение, функциональные требования - что ваша база должна мочь. Я думал первого поста будет достаточно... Возможно что-то не учел... Задумка такая: Пользователь ищет по части наименования [Name] нужное оборудование. В таблице должны вывестись варианты (может делают несколько заводов, или есть разные исполнения). Далее пользователь выбирает нужную запись и добавляет ее в свою таблицу (спецификация), где потом только указывает количество. После того как спецификация сформирована - делает экспорт в Word. П-ЛНу и схему бд лучше выкладывать графическую. Еслиб я умел. Но я готов учиться, так-что не подумайте, что я спрыгиваю :) 1. Это - детский сад, ясельная группа. Даже на учебный проект такой уровень изложения не тянет. 2. Установка и использование бесплатной редакции мс скл сервера вполне доступны новичку. Его графический редактор схем - тоже. От нуля можно смело начинать работать. За пару дней наработаете навыки. Сейчас очень много разных средств рисования схем БД разной степени сложности и мощности, если есть особые предпочтения можете выбирать что-то еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 09:27 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Ну понятно что это не ТЗ. Заказчик считайте я. Оплата обычная ЗП:) Не стоит относится к программе как нечто очень важному и ответственному. Сейчас это все руками делается. Но вообще подобную программу когда-то у нас уже написал один наш работник (вроде даже он был программистом) - ушел. Он сделал все в одной таблице. Прога на дельфях писана. Исходников не оставил. Скрин программы прилагаю. Сейчас я после всех "рекомендаций" несколько растерялся и не знаю с какой стороны подступиться. Пока я в Visual Studio уже слепил некое подобие вьвера БД (C#). Там же сделал в SSDT БД и две таблицы. Но они не связаны (не умею пока). Готов все нафик удалить и начать заново. Давайте по порядку. Что сделать первое? Я выполню - покажу результат. Понятное дело, что вот прям все сразу все Ваши рекомендации я не выполню. Хочется последовательности. Спасибо за понимание и терпение! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 09:54 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Ashoorup, автор[ID] [Имя] [Тип] [код] [Key_Manufacturer] [ed_izm] [Вес] [Размер] [Описание] [Дата] [Заметка] [Image] мне более приемлема структура таблицы(опыт работы на заводе,10-30т единиц) наименование поляналичие справочникаидуникальныйинвентарный номеруникальный, но может отсутствоватьзаводской номервводится при отсутствии инвентарногоцехспручоборудованиеспр с наименование-модель-техническая характеристиказавод изготовительспргод выпускагод месяц поступлениякатегории ремонтной сложностивесдлинаширинавысотапервоначальная стоимостьсинтетический счетспргруппа аналитического учетаспргруппа амортизацииспр......и еще 2 десятка полей у вас же непонятно что авторВ главной таблице [Main] у меня получится не более 1.000.000 записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 10:04 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
авторЧто сделать первое? Сформулировать понятия предметной области. Сформулировать бизнес- и функциональные требования. Описать бизнес-процессы. Общее назначение системы. Что такое оборудование. Что такое спецификация. Как ведется каталог оборудования. Какие с ним нужно выполнять действия (бизнес-функции). Как наполняется спецификация. Что с ней можно/нужно делать. Из приведенных данных видно, что оборудования довольно много. Удобно с ним работать в виде плоского списка ? Нужна классификация/каталогизация ? Наименование, технические характеристики почему склеены вместе ? Что такое код оборудования ? Нужно вести учет оборудования в количественном исчислении ? Может оборудование пакетироваться (одна упаковка в общей таре - 12 шт. единиц) ? Собранные спецификации имеют какой-то жизненный цикл (новая, черновик, готова, обработана, исполнена) ? Надо хранить историю обработки спецификаций ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 10:11 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
П-Л, ТС же сказал, что это курсовая работа. А то что вы перечислили тянет на хорошую дипломную, а по объёму работы и на кандидатскую диссертацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 12:25 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Wilhelm HoltoffТС же сказал, что это курсовая работа. Курсовая работа призвана показать чему ТС научился в течении этого самого курса. Пусть делает одну таблицу, получит заслуженную двойку и больше никогда не подходит к программированию. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 12:39 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Хоть примерно понял, что Вы от меня хотите добиться:) В любом случае вся эта текстовка/описание пойдет для курсовой в пояснительную записку. Назначение системы (я бы назвал это попроще - программа для работы со спецификацией) Система предназначена для работников проектных организаций и осуществляет работу с БД оборудования устройств автоматики, телемеханики и связи на железнодорожном транспорте. по сути система должна решать две задачи: 1. выдача справочных данных оборудования для проектировщика (например габаритные размеры оборудования), 2. составление спецификации (т.е. подготовка/выдача проектной документации) Требования к системе Система должна обеспечивать: -поиск необходимого оборудования в БД по всем полям -вывод результатов поиска в виде таблицы со всеми характеристиками оборудования -многоуровневый доступ: "Администратор", "Редактор БД", "Пользователь" -редактирование БД средствами системы -создание таблицы спецификации -добавление выбранного оборудования в спецификацию -сохранение и последующее открытие сформированной спецификации -многодокументный режим с возможностью копирования записей из одной спецификации в другую -экспорт спецификации в Word Оборудование в системе должно быть представлено для пользователя следующими полями: -Наименование оборудования - текстовое поле до 200 знаков -Тип, марка, обозначение - текстовое поле до 50 знаков -Код оборудования - - текстовое поле до 50 знаков -Завод изготовитель - - список (отдельная таблица) не более 50 записей -Единицы измерения - - список (отдельная таблица) не более 20 записей -Масса (кг) - - float поле до 10 знаков -Габаритные размеры - текстовое поле до 30 знаков -Снято с производства - bool checkbox птичка установлена - снято с производства. Как отображать под вопросом еще. -Изображение Будет отображаться не в таблице (на форме в углу) Спецификация должна соответствовать ГОСТ (потом поищу какой - там все поля строго именованы и расположены) В таблице "Спецификация" поле "Количество" должно редактироваться пользователем. Редактирование каталога оборудования (БД) осуществляет пользователь "Редактор БД". Система должна обеспечивать контроль добавляемого оборудования на полный повтор записи. Теперь ответы на вопросы которые не описал: Скрин программы которую я привел, уже давно не пользуют. Там и база устарела, и ошибок много, и неудобно пользоваться, и поменять что-то сложно. Функционал не поменять т.к. нет исходников. авторИз приведенных данных видно, что оборудования довольно много. Удобно с ним работать в виде плоского списка ? - Да удобно. Пользователь например ищет оборудование "светофор" по полю "Наименование"- ему должно вывестись в той же таблице все записи содержащие данное слово. Модификаций может быть около 100. Затем он фильтрует то что найдено задавая критерии поиска в других полях. Например Завод-изготовитель. Одно и то же оборудование может делать несколько заводов. (очень врядли будут искать оборудование по другим полям). Может быть в очень редких случаях пользователь будет искать оборудование по коду изделия. авторНаименование, технические характеристики почему склеены вместе ? - Так и должно быть. В таком виде спецификация передается заказчику (типа стандарт). Разбивать нет смысла. авторНужна классификация/каталогизация ? - Думаю нет. Я хорошо думал над этим :) не получится, да и не нужно. авторЧто такое код оборудования ? - просто текстовое поле. Оно и из цифр и из букв и из точек с прочерками и возможно даже с национальными символами. Пользователь может по нему искать оборудование. Может повторяться. авторНужно вести учет оборудования в количественном исчислении ? Может оборудование пакетироваться (одна упаковка в общей таре - 12 шт. единиц) ? Нет. В БД не нужно. Количество указывается уже в спецификации. авторСобранные спецификации имеют какой-то жизненный цикл (новая, черновик, готова, обработана, исполнена) ? Надо хранить историю обработки спецификаций ? Ну как бы нет... Черновик - это то что сохранили файл. Готово это то что экспортировали в Word. Специальных статусов нет. Вернее они есть но это задача системы документооборота - это она определяет статус файла/объекта . А вот насчет истории... тут мне нужен совет. Дело в том, что запись в БД может меняться. Например завод сменил наименование оборудования для заказа, или например ошибка "Редактора БД". Но пользователь уже добавил эту запись в спецификацию. И хорошо бы ему просигнализировать, если он откроет спецификацию, что такая-то запись изменилась в БД (причину указывать и хранить не нужно). Т.е. как бы надо хранить дату внесения изменения в БД и соответственно копировать ее в спецификацию, но не отображать там (только в файле). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 13:04 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovКурсовая работа призвана показать чему ТС научился в течении этого самого курса. Пусть делает одну таблицу, получит заслуженную двойку и больше никогда не подходит к программированию. +100500 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 13:08 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Ashoorup, тогда можно предположить, что ваша mainэто огромный прайсспецификация заказ с полями кому/дата/наименование/составитель .....спецификацияСоставвыбранные из прайса позиции, причем если из прайса удалили, то добавлять в комментарий сообщение об этом ,периодически выдавать отчет строк, которых нет в прайс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 13:15 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Давайте не будем уходить от темы все таки и переходить на морально-этические стороны вопроса. Я мог бы взять любую другую прогу в сети и выдать ее за свою, получить пять и быть двоечником. Но я честно написал что хочу научиться ! Прошу только немного в этом помочь , и мне как я вижу уже помогают, что конечно же приятно! Причем отвечают довольно быстро. Я благодарен форумчанам за это! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 13:23 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
ПЕНСИОНЕРКАтогда можно предположить, что ваша mainэто огромный прайсспецификация заказ с полями кому/дата/наименование/составитель .....спецификацияСоставвыбранные из прайса позиции, причем если из прайса удалили, то добавлять в комментарий сообщение об этом ,периодически выдавать отчет строк, которых нет в прайс main - ну пускай будет прайс, только цен там нет и не планируется (уж очень плавающая позиция - некому отслеживать) спецификация - нет такого чтобы отдельно заказ шел одному, отдельно другому. Все проще. По какому-то объекту строительства перечисляется все оборудование которое нужно заказать и оформляется в виде документа "Спецификация". Посчитать цену это задача отдела смет... ну как бы это совсем другая песня, хоть и можно подумать над дальнейшем расширением функционала. спецификацияСостав - я думаю это должна быть одна таблица Спецификация. А вот насчет удаленной позиции я и написал - тут надо отслеживать дату редактирования. Причем именно дату - пользователю может и не нада дата редактирования записи, а вот Редактору БД может пригодиться. Например одна и таже запись может редактироваться несколько раз. И нужно знать когда ее редактировали а не то что ее вообще редактировали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 14:20 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupПЕНСИОНЕРКАтогда можно предположить, что ваша mainэто огромный прайсспецификация заказ с полями кому/дата/наименование/составитель .....спецификацияСоставвыбранные из прайса позиции, причем если из прайса удалили, то добавлять в комментарий сообщение об этом ,периодически выдавать отчет строк, которых нет в прайс main - ну пускай будет прайс, только цен там нет и не планируется (уж очень плавающая позиция - некому отслеживать) спецификация - нет такого чтобы отдельно заказ шел одному, отдельно другому. Все проще. По какому-то объекту строительства перечисляется все оборудование которое нужно заказать и оформляется в виде документа "Спецификация". Посчитать цену это задача отдела смет... ну как бы это совсем другая песня, хоть и можно подумать над дальнейшем расширением функционала. спецификацияСостав - я думаю это должна быть одна таблица Спецификация. А вот насчет удаленной позиции я и написал - тут надо отслеживать дату редактирования. Причем именно дату - пользователю может и не нада дата редактирования записи, а вот Редактору БД может пригодиться. Например одна и таже запись может редактироваться несколько раз. И нужно знать когда ее редактировали а не то что ее вообще редактировали. Катастрофическая ошибка. Спецификации и их состав - ДВЕ РАЗНЫЕ таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 14:59 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
т.е. "Спецификация состав" это некая промежуточная таблица (временная) используемая как буфер? Что-то я запутался совсем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 15:31 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
авторт.е. "Спецификация состав" это некая промежуточная таблица (временная) используемая как буфер? Что-то я запутался совсем Нет конечно. Справочник типов оборудования - для классификации оборудования. Справочник единиц измерения - для использования в обрудовании. Справочник оборудования - полный перечень всех видов (единиц) оборудования. Ссылается на айди единицы измерения. Таблица спецификаций - одна спецификация - одна запись. Соответствует шапке вордовского документа. Таблица состава спецификации по единицам оборудования - каждая запись имеет ссылку на айди спецификации, айди оборудования и количество оборудования. Соответствует табличке в вордовском документе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 16:10 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupВсе проще. По какому-то объекту строительства перечисляется все оборудование которое нужно заказать и оформляется в виде документа "Спецификация" уверена, что спецификаций не одна, а много на 1 объект --спецификация на проведение изыскательских работ --спец на проектирование --спец на прокладку коммуникаций --спец на закладку фундамента --спец на строительство корпуса ................ это физически и логически не может быть создано одномоментно и это не считая дополнительных спецификаций, разных цен, разных поставщиков одного и того же пробукта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 16:23 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
ПЕНСИОНЕРКАуверена, что спецификаций не одна, а много на 1 объект Ну конечно не одна. Спецификация постового оборудования изделий и материалов Спецификация напольного оборудования изделия и материалов Спецификация кабельной продукции Спецификация запасного имущества Еще бывают несколько типов но крайне редко. Но это все по структуре одинаковые спецификации - только штамп разный. В общем ночь большая сегодня попробую посидеть в SSDT что-то накидать на что мозга хватит - будет картинка - можно будет что-то корректировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 19:51 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Вопрос несколько не по теме: Стоит ли заморачиваться на названиях БД, таблиц, запросов в плане русских букв и пробелов? Программа не планируется для "не русскоговорящих". БД проектирую в SQL Server 2014 Express. Программу в MS Visual Studio 2013 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2015, 10:35 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupВопрос несколько не по теме: Стоит ли заморачиваться на названиях БД, таблиц, запросов в плане русских букв и пробелов? Программа не планируется для "не русскоговорящих". БД проектирую в SQL Server 2014 Express. Программу в MS Visual Studio 2013 В общем случае не рекомендуется использовать русские символы и пробелы, плюс ряд специфичных символов, т.к. это может привести к проблемам при работе с БД из сторонних приложений. Но если вы точно уверены, что ваша БД будет использоваться только в определенном окружении, то можно и не заморачиваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2015, 15:15 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Уже за одно то, что в редакторе sql кода или при разработке клиента не надо переключать языки. На пробелы - вообще ужос. Где ж это видано - имя переменной С ПРОБЕЛОМ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2015, 15:16 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
mad_nazgulAshoorupВопрос несколько не по теме: Стоит ли заморачиваться на названиях БД, таблиц, запросов в плане русских букв и пробелов? Программа не планируется для "не русскоговорящих". БД проектирую в SQL Server 2014 Express. Программу в MS Visual Studio 2013 В общем случае не рекомендуется использовать русские символы и пробелы, плюс ряд специфичных символов, т.к. это может привести к проблемам при работе с БД из сторонних приложений. Но если вы точно уверены, что ваша БД будет использоваться только в определенном окружении, то можно и не заморачиваться.В общем латиница гарантирует от возможных проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2015, 15:17 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Ну в общем накидал я как мог и то как я понимаю структуру базы. Переговорив с будущими пользователями, ТЗ поменялось, в связи с чем выросло количество таблиц. Получилось 9. Что собственно поменялось: В базе необходимо хранить данные о готовых спецификациях и о пользователях которые ее делали. Нужно это например для того, чтобы взять за образец или сделать на основе выданной спецификации новую. Таблицы: (PK красным) "Каталог оборудования" [Equipment catalogue] Имя столбца Тип Описание ID_Equipment int Идентификатор оборудованияName nvarchar(MAX) Наименование оборудованияModel nvarchar(20) Тип и марка оборудованияIndicator nvarchar(20) Код оборудованияID_Manufacturer int Идентификатор завода-изготовителя[ID_Measure Unit] int Идентификатор единиц измеренияWeight float Масса оборудования в килограммахDimension nvarchar(20) Габаритные размеры оборудованияDiscontinued bit Снято с производстваImage image Изображение (фото/чертеж) оборудованияDescription nvarchar(MAX) Описание оборудованияNote nvarchar(MAX) Примечание к оборудованию сделанное пользователем "Редатктор БД" Заводы-изготовители [Manufactures] Имя столбца Тип Описание ID_Manufacturer int Идентификатор завода-изготовителяName nvarchar(50) Краткое наименование завода-изготовителяDescription nvarchar(MAX) Описание завода-изготовителя (адрес)Logo image Логотип завода-изготовителя Единицы измерения [Measure Units] Имя столбца Тип Описание [ID_Measure Unit] int Идентификатор единиц измеренияName nvarchar(10) Сокращение единицы измерения Строка спецификации [Specification line] Имя столбца Тип Описание [ID_Specification line] int Идентификатор строки спецификацииID_Equipment int Идентификатор оборудованияCount float Количество заказываемого оборудования[User note] nvarchar(MAX) Примечание Спецификация [Specification] Имя столбца Тип Описание ID_Specification int Идентификатор спецификации[ID_Specification line] int Идентификатор строки спецификацииID_User int Идентификатор пользователя[ID_Specification type] int Идентификатор типа спецификации[ID_Specification status] int Идентификатор статуса спецификации[Object number] nvarchar(30) Номер объекта строительства[Construction project] nvarchar(50) Объект строительства (название станции или перегона)[Object name] nvarchar(300) Наименование объекта[Save date] date Дата последнего сохранения Пользователи [Users] Имя столбца Тип Описание ID_User int Идентификатор пользователяName nvarchar(100) Фамилия И.О. пользователяPassword varchar(10) ПарольID_Account int Идентификатор учетной записи Учетные записи [Account] Имя столбца Тип Описание ID_Account int Идентификатор учетной записи[User account] varchar(20) Наименование учетной записи Статусы спецификации [Specification statuses] Имя столбца Тип Описание [ID_Specification status] int Идентификатор статуса спецификацииStatus nvarchar(20) Наименование статуса спецификации Типы спецификаций [Specification types] Имя столбца Тип Описание [ID_Specification type] int Идентификатор типа спецификацииType nvarchar(100) Тип спецификации (сокращенно)[Specification name] nvarchar(300) Наименование спецификации (для штампа) Представления (связи): ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2015, 15:18 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Вот так будет представляться строка: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2015, 15:20 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
А вот так данные по спецификациям которые сделали пользователи: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2015, 15:20 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Вот так общая структура у меня выглядит: (сегодня наверно мой мозг взорвется) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2015, 16:43 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Возникает у меня проблема с сохранением записей за конкретным пользователем. Т.к. приложение теперь многопользовательское и база одна, то разумно предположить, что одновременно несколько человек будут добавлять свои записи в таблицу Specification line. Остается только закрепить конкретные строки за конкретным пользователем+еще кучу полей идентификации конкретной спецификации. Сначала я думал сделать временный массив для каждого пользователя, который после набора определенного оборудования из таблицы Equipment catalog нажмет сохранить и весь массив скопируется в таблицу Specification line. Тогда в таблице Specification вместо поля ID_Specification line нужно два поля - начало и конец записи конкретной спецификации. Но тут возникает проблема когда другой пользователь запишет в таблицу Specification line свой диапазон записей вслед, а предыдущий решит добавить еще записей. Вобщем идея не катит. Ну не перелопачивать же все записи, двигать там и пр... Следующая идея хранить в таблице Specification в поле ID_Specification line список записей (ID_Specification line из таблицы Specification line) пользователя. Тогда всё равно где находится запись. Единственное меня смущает, если пользователь удалит запись(и) и в таблице Specification line образуются "дыры". Другому пользователю я не знаю как "сообщить" про "дыру" в таблице, чтоб он туда писал. Со временем "дыр" может стать больше чем записей, т.к. процесс формирования спецификации пользователем дело долгое с постоянными правками. Возможно несу ерунду, и все можно решить гораздо более практично. Прошу подсказать что делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 08:23 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupВозникает у меня проблема с сохранением записей за конкретным пользователем. Т.к. приложение теперь многопользовательское и база одна, то разумно предположить, что одновременно несколько человек будут добавлять свои записи в таблицу Specification line. Остается только закрепить конкретные строки за конкретным пользователем+еще кучу полей идентификации конкретной спецификации. Сначала я думал сделать временный массив для каждого пользователя, который после набора определенного оборудования из таблицы Equipment catalog нажмет сохранить и весь массив скопируется в таблицу Specification line. Тогда в таблице Specification вместо поля ID_Specification line нужно два поля - начало и конец записи конкретной спецификации. Но тут возникает проблема когда другой пользователь запишет в таблицу Specification line свой диапазон записей вслед, а предыдущий решит добавить еще записей. Вобщем идея не катит. Ну не перелопачивать же все записи, двигать там и пр... Следующая идея хранить в таблице Specification в поле ID_Specification line список записей (ID_Specification line из таблицы Specification line) пользователя. Тогда всё равно где находится запись. Единственное меня смущает, если пользователь удалит запись(и) и в таблице Specification line образуются "дыры". Другому пользователю я не знаю как "сообщить" про "дыру" в таблице, чтоб он туда писал. Со временем "дыр" может стать больше чем записей, т.к. процесс формирования спецификации пользователем дело долгое с постоянными правками. Возможно несу ерунду, и все можно решить гораздо более практично. Прошу подсказать что делать Несете ерунду. У вас Specificafion_Line (пробелы - то в именах зачем ? штоб все время скобки ставить ?) и Specification сделаны с точностью до наоборот. Айди из Specification должен быть в качестве ФК в Specificafion_Line. ОДНА спецификация содержит МНОГО записей по оборудованию. В форме данные Specification будут в шапке - мастер запись. Детальные записи Specificafion_Line во вложенной форме-табличке, связанные через ID_Specifiaction. Это самые азы, они описаны во всех учебниках. Ну и организацию работы в форме вы себе не представляете - такое написали, что ... печатных слов нет. Есть команда приложения "Создать спецификацию" - кнопка, пункт меню, ... Нажали! Открылась форма спецификации с шапокой и детальной табличкой. Задали в шапке основные данные спецификации. Пользователь автоматически триггером записался поле ID_User. Наполнили спецификацию позициями из каталога. Ффсе, можно закрывать форму. Через айди мастер-записи позиции спецификации неотрывно связаны с самой спецификацией. У вас есть таблица Specification и таблица Specification_types. Название поля Specification_Name вопиет о том, что это - атрибут (имя) - специфкации. Ан нет, оно лежит в таблице Specification_types и по смыслу означает Specification_type_Name. Маленький ребус-кроссворд. Побольше таких приятных мелочей в своем приложении и вы сделаете процесс сопровождения и разработки нескучным и увлекательным. Про пробелы в полях уже написал. Названия таблиц - то в единственном числе, то во множественном. Пустячок, а приятно. Одинаковые поля Name в нескольких таблицах - про это я как-то выше писал. Сошьете в запросе две таблицы - нужно будет алиасить. И все время следить - то ли это .Name то ли .<что-то>_Name. Еще вклад в копилочку самим собой разложенных граблей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 09:04 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Продолжение. Чуть по-другому, если ОДНА спецификация будет правится НЕСКОЛЬКИМИ пользователями и вы хотите это фиксировать. Здесь на форуме по проектирования и по MS SQL есть масса готовых рецептов аудита. Я в свое время выбрал один, достаточно простой. Каждая прикладная таблица имеет поля: InsertUserID - кто создал InsertDatetime - дата создания SaveUserID - кто последний сохранил SaveDatetime - дата последнего сохранения для практических разборок этого оказалось достаточно. Эти поля добавляются автоматическим скрипом вместе с заполняющим их триггером, когда таблица регистрируется как прикладная. При работе с таблицами все поля заполняются автоматически триггерами. На прикладных формах поля выводятся во всех гридах и на всех формах-карточках - т.е. видя любой бизнес-объект можно видеть его создателя и последнего редактора. Если ваша спецификация и позиции спецификации будут иметь подобны поля, то вы тоже сможете контролировать этот процесс. На таблицы спецификаций и позиций спецификации можно повесить бизнесовый триггер, который будет запрещать редактирование, если спецификация уже распечатана. Пока то что нарисовали не выходит за рамки простой демонстрационной/учебной базы Борей/Northwind, которую Микрософт долго включала в поставку своего офиса (аксес). Был также клиент-серверный вариант этой базы - фронт Access ADP, клиент - MS SQL сервер. Можете нагуглить, скачать и посмотреть. Там все формы работают. http://www.microsoft.com/en-us/download/details.aspx?id=23654 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 09:21 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Переключите все таблицы на диаграмме в режим кастом, задайте для кастомного режима вывод имя, тип и ОПИСАНИЯ к полю. Рядом с каждой таблицей создайте комментарий и в одном-двух абзацах опишите смысл таблицы и ее главный особенности. Тогда штатный редактор диаграмм станет хорошим рабочим инструментом проектирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 09:31 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Сущность объект строительства надо выносить в отдельную таблицу и, видимо, сильно развивать. С полями типа бит в некоторых клиентах могут быть проблемы. Я бы делал кондово nvarchar(1) Y/N. Смысл экономить биты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 09:49 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Насчет идей хранения... это я ступил, сознаюсь:) Переделал как рекомендовали. Даже понравилась проделанная работа! Красиво и наглядно. Мне уже нравится работать в Managment Studio. Вот только я не понимаю насчет одинаковых полей. Для примера напишите хотя бы несколько как например можно было бы именовать их. И насчет проблем с полями типа bit недопонял. У меня все прекрасно работает... Редактор БД будет ставить птичку если оборудование снято с производства. Возможно потом сделаю розовую подсветку строки, если оборудование снято с производства - для большей наглядности. Насчет интефейса, то я впринципе так и планировал как Вы описали. Только штамп будет на форме открытия/создания спецификации. В главном окне штамп будет занимать лишнее место. На главной форме будет таблица каталога оборудования (если пользователь открыл программу как справочник). Если открыл как пользователь/редактор спецификации, то вверху будет таблица каталога и ниже новая спецификация с добавляемыми полями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 11:48 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Забыл написать: - с одной спецификацией будет работать 1 пользователь. Такого точно не будет, что с одной спецификацией одновременно будет работать несколько пользователей. - одну спецификацию может делать несколько пользователей. Тут все просто как мне кажется. Пользователь чья спецификация, или администратор может назначить другого пользователя для редактирования этой спецификации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 11:59 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Насчёт "Сущность объект строительства": Мне кажется достаточно описания в таблице Specifications, хотя под один объект (номер объекта, наименование объекта, объект строительства) может быть от 1 до 5 спецификаций. Может и стоит сделать отдельную таблицу под объект... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 12:16 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Ashoorup, в таблице specification_lines забыли про поле уникальноко ключа id_specification_lines ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 12:17 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupНасчёт "Сущность объект строительства": Мне кажется достаточно описания в таблице Specifications, хотя под один объект (номер объекта, наименование объекта, объект строительства) может быть от 1 до 5 спецификаций. Может и стоит сделать отдельную таблицу под объект... Абсолютно категорически делать отдельную таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 13:05 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupЗабыл написать: - с одной спецификацией будет работать 1 пользователь. Такого точно не будет, что с одной спецификацией одновременно будет работать несколько пользователей. - одну спецификацию может делать несколько пользователей. Тут все просто как мне кажется. Пользователь чья спецификация, или администратор может назначить другого пользователя для редактирования этой спецификации. Этого достаточно. Если хотя бы раз несколько пользователей могут менять спецификацию или ее состав - надо хранить информацию о пользователе в таблице позиций спецификаций. Примеры полей я приводил выше. Их добавление и заполнение во всех прикладных таблицах ничего не стоит - работает один раз сделанный автомат. С учетом того, что предполагается реальное, производственное использование - я бы обязательно сделал такой простой и компактный аудит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 13:11 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
авторВот только я не понимаю насчет одинаковых полей. Для примера напишите хотя бы несколько как например можно было бы именовать их. Во многом дело вкуса. Применительно к вашей задаче я бы сделал такие имена: EquipmentID Идентификатор оборудования EquipmentName Наименование оборудования EquipmentModel Тип и марка оборудования EquipmentCode Код оборудования ManufacturerID Идентификатор завода-изготовителя MeasureUnitID int Идентификатор единиц измерения EquipmentWeight float Масса оборудования в килограммах EquipmentDimension Габаритные размеры оборудования EquipmentDiscontinuedFlag Снято с производства EquipmentImage Изображение (фото/чертеж) оборудования EquipmentDescription Описание оборудования EquipmentNote Примечание к оборудованию сделанное пользователем "Редатктор БД" Заводы-изготовители Manufacturer ManufacturerID Идентификатор завода-изготовителя ManufacturerName Краткое наименование завода-изготовителя ManufacturerDescription Описание завода-изготовителя (адрес) ManufacturerLogo Логотип завода-изготовителя Единицы измерения MeasureUnit MeasureUnitID int Идентификатор единиц измерения MeasureUnitName Сокращение единицы измерения Строка спецификации SpecificationLine SpecificationLineID Идентификатор строки спецификации EquipmentID Идентификатор оборудования EquipmentCount Количество заказываемого оборудования SpecificationLineNote Примечание Спецификация Specification SpecificationID Идентификатор спецификации UserID Идентификатор пользователя SpecificationTypeID Идентификатор типа спецификации SpecificationStatusID Идентификатор статуса спецификации ObjectID Номер объекта строительства Статусы спецификации SpecificationStatus SpecificationStatusID Идентификатор статуса спецификации SpecificationStatusName Наименование статуса спецификации Типы спецификаций SpecificationType SpecificationTypeID Идентификатор типа спецификации SpecificationTypeCode Тип спецификации (сокращенно) SpecificationTypeName Наименование спецификации (для штампа) Однообразно до отвращения - чем и хорошо. Таблица в единственном числе. Суффиксы - ID - автосчетчик Code - код, шифр, номер Name - наименование Description - длинное описание авторИ насчет проблем с полями типа bit недопонял. У меня все прекрасно работает... Редактор БД будет ставить птичку если оборудование снято с производства. Возможно потом сделаю розовую подсветку строки, если оборудование снято с производства - для большей наглядности. В некоторых клиентах МОГУТ быть проблемы. С кодом Y | N проблем быть не может. Если есть выбор дороги, на которой заведомо нет граблей, то я иду по ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 13:24 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
ПЕНСИОНЕРКА, П-Л, Спасибо за замечания! П-ЛЭтого достаточно. Если хотя бы раз несколько пользователей могут менять спецификацию или ее состав - надо хранить информацию о пользователе в таблице позиций спецификаций. Примеры полей я приводил выше. Их добавление и заполнение во всех прикладных таблицах ничего не стоит - работает один раз сделанный автомат. С учетом того, что предполагается реальное, производственное использование - я бы обязательно сделал такой простой и компактный аудит. Ну вот вроде бы понимаю, что можно каждую запись "пометить" тем пользователем который ее добавил, только не понимаю зачем это надо. У одной спецификации может быть только один разработчик. Этот разработчик может переложить свою работу на другого пользователя или это может сделать администратор (пользователь заболел например). Т.е. в таблице Specifications просто смениться ID_User. Имена полей немного поменял (по своему вкусу) с учетом рекомендаций. ID вначале имени мне привычнее. Поля с "неоднозначными" именами (в том числе и повторяющиеся) name, user сменил на более информативные. Имена таблиц мне кажется должны быть во множественном числе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 14:02 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Постоянно консультируюсь с будущими пользователями... чую курсовой в диплом перетечет. Сразу столько "хотелок" я не ожидал. Например в формируемую таблицу нужно будет добавлять поля не из каталога. Причем и нумерацию строк надо будет сделать с учетом этой строки. А добавлять надо строки: ОБОРУДОВАНИЕ: ИЗДЕЛИЯ И МАТЕРИАЛЫ: <Пользовательская строку>: Это своего рода разделитель в общем списке Ну и нумерация соответственно: 1 ОБОРУДОВАНИЕ: 1.1 1.2 1.3 1. ... 2 ИЗДЕЛИЯ И МАТЕРИАЛЫ: 2.1 2.2 .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 14:40 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Вам надо закладываться на иерархическую спецификацию, состоящую из нескольких разделов, каждый из которых в свою очередь (рекурсивно) может иметь несколько подразделов и т.д. В БД это реализуется ссылкой на себя ID - ParentID. На экране ОБЯЗАТЕЛЬНО должен быть нормальный иерархический/древовидный контрол. При щелчке по узлу должно быть отражено его содержание (с возможностью редактирования). Перемещение уровней вверх/вниз и автоматическая (пере)нумерация. В принципе не очень сложно, многое зависит от клиентского средства. Я несколько лет назад делал на мс скл сервер + аксес адп, дополненный обычным виндоузным тривью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 15:10 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Сейчас соберу мозги после взрыва :) Честно говоря не понимаю зачем эта иерархическая структура. Можно поподробнее что Вы имеете ввиду и как это должно выглядеть применительно к моей базе. Еще вопрос такой. Вот я задал размер некоторых полей 30, 50, 150 и т.д. Вот вроде бы с запасом от 20% до 200%. А вот если случится беда и как выяснится неподрасчитал и нужно потом увеличить? Как я понимаю это довольно большая проблема для клиентского приложения. Если я поля сделаю все MAX или все увеличу до больших размеров так чтобы наверняка, чем это плохо? Понимаю, что ламерские вопросы, но все же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 15:44 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Вы же сами только что заявили, что в спецификации должно быть несколько (более одного) раздела. При разрастании спецификации или ее усложнении очень велика вероятность, что какой-то раздел придется раздробить на подразделы. И так далее. Это - абсолютно стандартный паттерн - древовидная/иерархическая структура. Посмотрите на проводник в режиме отображения структуры папок. Делается несложно, чуть возни с перенумерацией и красивым отображением на экране, чтобы схлопывалось - раскрывалось. Таблица спецификаций должна быть разбита на две. Первая будет хранить структуру уровней спецификации. Вторая - собственно принадлежность единиц оборудования из каталога той или иной веточке структуры. То, что вы сейчас мучительно открываете, на самом деле - стандартные, давно хорошо обкатанные паттерны проектирования. Проблема только в том, что вам они не знакомы. Поэтому я в самом начале предлагал вам сформулировать функциональные требования, как можно полнее и четче. Структура БД из них лепится без напряжения, достаточно одного спинного мозга, головной может отдыхать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 15:59 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Переговорил с "заказчиком", обсудили. В общем думаю надо добавлять еще одно поле ID_Section в таблицу Equipment_catalogue, ну и естественно добавлять таблицу Sections, где будут перечислены разделы. Условно все оборудование в каталоге можно разделить на этих два раздела (Оборудование, Изделия и материалы). И пользователю будет очень удобно при наборе спецификации чтобы автоматом создавался (если нет) раздел и оборудование автоматом добавлялось в этот раздел. Подразделов не бывает в принципе. Но бывают скажем так "авторские разделы" с произвольным именем. Тут я думаю сделать кнопку создания раздела и пользователь потом будет перетягивать из другого раздела в этот "авторский". Или сделать птичку чтобы любое оборудование добавляемое шло в этот авторский раздел. Что думаете насчет такого подхода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 16:36 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Вот так примерно получается: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 17:09 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupПереговорил с "заказчиком", обсудили. В общем думаю надо добавлять еще одно поле ID_Section в таблицу Equipment_catalogue, ну и естественно добавлять таблицу Sections, где будут перечислены разделы. Условно все оборудование в каталоге можно разделить на этих два раздела (Оборудование, Изделия и материалы). И пользователю будет очень удобно при наборе спецификации чтобы автоматом создавался (если нет) раздел и оборудование автоматом добавлялось в этот раздел. Подразделов не бывает в принципе. Но бывают скажем так "авторские разделы" с произвольным именем. Тут я думаю сделать кнопку создания раздела и пользователь потом будет перетягивать из другого раздела в этот "авторский". Или сделать птичку чтобы любое оборудование добавляемое шло в этот авторский раздел. Что думаете насчет такого подхода? Думаю, что вы не можете сформулировать требования. авторУсловно все оборудование в каталоге можно разделить на этих два раздела (Оборудование, Изделия и материалы). Подразделов не бывает в принципе. Каталог состоит из фиксированного числа разделов. Любая единица оборудование в каталоге относится к тому или иному, одному разделу. (в реальности фотосумка - в разделе сумок ? в разделе фототехники ?). Категорический отказ от многоуровнего каталога в будущем может аукнуться невозможностью более тонкой классификации. авторИ пользователю будет очень удобно при наборе спецификации чтобы автоматом создавался (если нет) раздел и оборудование автоматом добавлялось в этот раздел. Спецификация состоит из тех же разделов, что и каталог оборудования ? Пустые разделы создаются при создании спецификации ? При добавлении первого оборудования из раздела, которого еще нет в спецификации ? авторНо бывают скажем так "авторские разделы" с произвольным именем. Тут я думаю сделать кнопку создания раздела и пользователь потом будет перетягивать из другого раздела в этот "авторский". Или сделать птичку чтобы любое оборудование добавляемое шло в этот авторский раздел. Совершенно невнятно и непонятно. Смешано описание структуры и процедуры наполнения данными. Сумбур. Какие кнопки, какие птички... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 17:15 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
П-ЛКаталог состоит из фиксированного числа разделов. Любая единица оборудование в каталоге относится к тому или иному, одному разделу. (в реальности фотосумка - в разделе сумок ? в разделе фототехники ?). Категорический отказ от многоуровнего каталога в будущем может аукнуться невозможностью более тонкой классификации. В каталоге одна запись оборудования - один раздел. Одно и тоже оборудование не может быть в двух разделах (в каталоге). П-Л1. Спецификация состоит из тех же разделов, что и каталог оборудования ? 2. Пустые разделы создаются при создании спецификации ? 3. При добавлении первого оборудования из раздела, которого еще нет в спецификации ? 1. Да. 2. Пустые разделы? Думаю не будет таких. Все оборудование (в каталоге) разделится четко на разделы. В спецификации будет как минимум 1 раздел всегда. 3. Создается строка с именем раздела и ниже добавляется выбранное из каталога оборудование (картинку прилагаю) авторНо бывают скажем так "авторские разделы" ... Совершенно невнятно и непонятно. Смешано описание структуры и процедуры наполнения данными. Сумбур. Какие кнопки, какие птички...[/quot] Под "авторским разделом" я понимаю раздел, который создал сам пользователь в своей спецификации (не каталоге). И занес в спецификацию, из каталога, то оборудование, которое посчитал нужным, даже если оно относится к другому разделу. Вот есть например "Светофор" - это в разделе "Оборудование". И есть "Линза светофора" - это уже "Изделие и материалы". Крайне редко может появится еще какой раздел (для заказчика) например "Мостовое оборудование" и тот же светофор пойдет в этот раздел. Ну вот не получается четкой классификации. Все оборудование делится... ну пусть хоть на 10 разделов. Но подразделов все равно нет и не планируется. И классификации не планируется - это все только усложнит поиск и наполнение каталога - пользы никакой. В спецификации пользователь еще должен иметь возможность добавлять запись не из каталога. Т.е. написать руками, заполнив все поля. Проблем тут не вижу. Просто поле ID_Equipment в таблице Specification_lines будет NULL. Наверно все, что уже можно придумать в ТЗ к программе уже все описал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 17:45 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Вот второй раздел. В поле наименование пишется имя раздела - остальные поля пустые ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 17:49 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupПод "авторским разделом" я понимаю раздел, который создал сам пользователь в своей спецификации (не каталоге). И занес в спецификацию, из каталога, то оборудование, которое посчитал нужным, даже если оно относится к другому разделу. Вот есть например "Светофор" - это в разделе "Оборудование". И есть "Линза светофора" - это уже "Изделие и материалы". Крайне редко может появится еще какой раздел (для заказчика) например "Мостовое оборудование" и тот же светофор пойдет в этот раздел. Ну вот не получается четкой классификации. Все оборудование делится... ну пусть хоть на 10 разделов. Но подразделов все равно нет и не планируется. И классификации не планируется - это все только усложнит поиск и наполнение каталога - пользы никакой. В спецификации пользователь еще должен иметь возможность добавлять запись не из каталога. Т.е. написать руками, заполнив все поля. Проблем тут не вижу. Просто поле ID_Equipment в таблице Specification_lines будет NULL. Наверно все, что уже можно придумать в ТЗ к программе уже все описал... Это вам так кажется. Пока отрывочно, неполно и противоречиво описана только небольшая часть. Но даже из уже описанного видно, что схема не годится. Создание в спецификации своих разделов и возможность помещения в них оборудования из разных разделов каталога требует создания таблицы разделы в спецификациях и привязки позиций не к спецификации, а к ее разделам. Возможность и использования стандартных разделов каталога и произвольных пользовательских разделов придется реализовывать через "мягкие", необязательный связи или через частичную денормализацию. Там, где вы не видите проблемы "написать ручками" на самом деле скрыта довольно тяжелая проблема. Либо написанное ручками нужно будет добавлять в общий каталог, помечая, что это - пользовательский ввод и он должен использоваться только в одной спецификации, либо опять-таки денормализовывать спецификацию и переписывать в нее кроме айди поля из каталога. Я бы сделал по первому сценарию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 18:22 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
"Утро вечера мудренее" (с) Задумался над пользовательским вводом оборудования которого нет в каталоге. Думаю надо еще одна таблица User_eqipment_lines где будут храниться записи с пользовательским вводом. В таблице Specification_lines надо будет еще одно поле ID_user_eqipment_line таблицы User_eqipment_lines. Ну и получается так: если в таблице Specification_lines пустое значение в поле ID_Equipment, то читается значение из таблицы User_eqipment_lines. Либо можно добавить поле User_eqipment в таблицу Eqipment_catalogue, помечая тем самым пользовательские записи (в поиск по каталогу они не должны попадать) - но мне кажется так сложнее потом будет организовать работу. Да и первый вариант как то не смешивает мух и котлеты. Далее проблема с разделом в таблице Specification_lines. Думаю что нужно добавить поле ID_section и копировать значение из таблицы Eqipment_catalogue. Но значение это пользователь может менять (перетягивая в другой раздел), именно поэтому не должно быть четкой связи, а просто копирование значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 09:05 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Ashoorup "Утро вечера мудренее" (с) Задумался над пользовательским вводом оборудования которого нет в каталоге. Думаю надо еще одна таблица User_eqipment_lines где будут храниться записи с пользовательским вводом. В таблице Specification_lines надо будет еще одно поле ID_user_eqipment_line таблицы User_eqipment_lines. Ну и получается так: если в таблице Specification_lines пустое значение в поле ID_Equipment, то читается значение из таблицы User_eqipment_lines. Либо можно добавить поле User_eqipment в таблицу Eqipment_catalogue, помечая тем самым пользовательские записи (в поиск по каталогу они не должны попадать) - но мне кажется так сложнее потом будет организовать работу. Да и первый вариант как то не смешивает мух и котлеты. Далее проблема с разделом в таблице Specification_lines. Думаю что нужно добавить поле ID_section и копировать значение из таблицы Eqipment_catalogue. Но значение это пользователь может менять (перетягивая в другой раздел), именно поэтому не должно быть четкой связи, а просто копирование значения. 1. Делать отдельные таблицы, если данные в них похоже - настоятельно не рекомендуется. Загоняйте все в единую таблицу, помечайте признаком где пользовательский ввод, где - каталожный и в любом случае используйте айди одной (!) таблицы. Именно такой способ будет проще, а не с двумя таблицами. 2. С учетом требования наличия разделов в спецификации решение однозначное. Таблица спецификаций мастер для таблицы разделов. Таблица разделов в спецификации, в свою очередь мастер для строк спецификаций. Вопрос только иметь ли отдельные таблицы разделов для каталога и спецификаций или опять таки одну таблицу с признаком, где используется этот раздел - в каталоге и спецификации или только в спецификации (пользовательский раздел). Ну и дальше обсасывать голую схема и доводить ее до блеска смысла нету. Надо строить прототип или сразу приложение, тогда вы на своей шкуре прочувствуете, как играет то или иное решение. Работающий, полнофункциональный прототип можно экстремально быстро слепить на адп + мс скл сервер. (по этой схеме за 2-3 дня) Он может с успехом работать пока не торопясь пишется красивый клиент на студии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 10:13 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
П-Л, спасибо за рекомендации! Вот что получилось: Еще вопрос такой: У меня в таблице Equipment_catalogue есть поле Equipment_description, которое я планирую выводить отдельно например в RichTextBox (или др.). Задача такая, чтобы запись хранила форматированный текст. Какой тип у поля должен быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 13:05 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Забыл написать что сделал: 1. Добавил поле User_section в таблицу Sections - чтобы пометить разделы которые добавит пользователь (будет специальная кнопка для создания пользовательского раздела) 2. Добавил поле User_equipment в таблицу Equipment_catalogue - чтобы пометить записи добавляемые пользователем в спецификацию руками. 3. Добавил поле ID_section в таблицу Specification_lines - в это поле будет копироваться значение из Equipment_catalogue при добавлении оборудования в спецификацию. Пользователь неявно может менять значение этого поля. Единственное меня смущает отсутствие связи этого поля с таблицей Sections. Если я правильно понимаю, то такая связь и называется "частичная денормализация"? Я так понимаю нужно сделать эту связь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 13:20 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
MS SQL сервер не даст вам два раза связать поле ID_Section сильными связями. Если вы протянете связь от таблицы Specification_Lines до таблицы Sections то вторую связь надо делать без опции каскадного удаления или обновления. На схеме она будет пунктиром. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 13:32 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Не понял как это сделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 14:07 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Обычным образом, как другие связи. Хватаете поле из таблицы Sections и тащите его мышкой в Specification_Lines, там бросаете. В окошке ставите галочки, какая связь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 14:33 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Это я понял. Я не не понял "вторую связь надо делать без опции каскадного удаления или обновления". Это надо поменять для "Спецификация INSERT и UPDATE" поля "Правило обновления" и "Правило удаления"? А на какие значения? (при любых пунктиром ничего не меняется) SQL Server у меня RUS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 14:57 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Надо снять каскадное обновление и каскадное удаление. Пишу по памяти, запустить сервер не могу. Пунктир может быть если снять контроль целостности, что-ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 15:38 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Пунктир становится когда для связи выбираю "Включить использование ограничения внешнего ключа". На что это влияет не понимаю... да и разбираться уже как-то и времени нет. Если не сложно объясните для чего это делать и нужно ли. Активно сажусь писать приложение. Курсовой сдача 04.06.2015 - времени не много. Благо на работе могу спокойно писать/учиться. Для курсового надо показать хоть что-то. На производство программу я конечно же уже сделаю как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 16:38 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Вот картинка как сделал. А что сделал не понял :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 16:53 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Очередной учебный сферический конь в вакууме. Пишите... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 17:01 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Я стараюсь :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2015, 17:18 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Решил перенести БД на рабочий сервер. Писал базу в SQL Server 2014 Express а перенести решил на SQL Server 2012 EE. Данные вроде все перенеслись... жаль диаграмма не копируется. Связи тоже почему-то не скопировались. Но вот фантастика. Открываю БД которая экспортировалась на сервер через Managment Studio от 2014 и вижу что почти все как было есть кроме связей. Даже примечания скопировались. Ну связи подцепить делов на пару минут, но знать как правильно не мешало бы. Может есть какой более правильный способ скопировать диаграмму? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2015, 09:27 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Переносить всю базу надо бэкапом. А бэкап нельзя поднять с более новой версии на более старой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2015, 10:14 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Еще такой вопрос. Мне надо хранить для одной записи от 1 до 3 картинок (ну накрайняк 2). Может я чего не знаю... одно поле хранит 1 картинку или можно как-то запихнуть туда несколько? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 19:00 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupЕще такой вопрос. Мне надо хранить для одной записи от 1 до 3 картинок (ну накрайняк 2). Может я чего не знаю... одно поле хранит 1 картинку или можно как-то запихнуть туда несколько? Поле с типом image хранит бинарные данные - если Вы ему с клиента передадите 3 файла, "скленные" в один массив байтов, то СУБД не станет разбираться, сколько у Вас там картинок ;) Другой вопрос что делать так не рекомендуют - вот, предположим, Вам надо удалить одну картинку из двух. Так Вы просто приравниваете соттветствующее поле NULL (или удаляете запись в подчиненной таблице "картинки"), а так Вам надо выкачать обратно на клиент весь этот "скленный" массив, разделить его и залить обратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 19:16 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Понял. Спасибо! Думаю в моем случае проще добавить еще одно поле Image2 и обходиться максимум двумя картинками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 19:29 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
AshoorupПонял. Спасибо! Думаю в моем случае проще добавить еще одно поле Image2 и обходиться максимум двумя картинками. Прочитай про 1-ую нормальную форму таблицы на досуге, когда замучаешься запросы писать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2015, 08:04 |
|
||
|
Может лучше сделать все одной таблицей?
|
|||
|---|---|---|---|
|
#18+
Думаю стоит отписаться о том, что курсовой защищен и на отлично. Всем спасибо за помощь! Отдельная благодарность П-Л за помощь и терпение :) Следующий этап диплом... тема та-же но расширенная версия. А пока отпуск! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2015, 11:43 |
|
||
|
|

start [/forum/search_topic.php?author=Rjak_ru&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
151ms |
get tp. blocked users: |
2ms |
| others: | 637ms |
| total: | 1029ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...