powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Может лучше сделать все одной таблицей?
25 сообщений из 80, страница 1 из 4
Может лучше сделать все одной таблицей?
    #38949197
Ashoorup
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу помощи в проектировании БД (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] + количество заказанного оборудования (отдельное поле).

Прошу помочь дельными советами в проектировании БД!
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949200
Фотография Wilhelm Holtoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ashoorup,
всё, что вы тут понаписали, выдаёт в вас зелёного новичка.

И потом, раз взялись делать по-хорошему, то вместо ed_izm сделайте уже Measure Unit, а то как-то не стыкуется с Weight, Dimension, Description

Основой любой БД являются классификаторы (справочники)
Займитесь сначала справочником единиц измерения, изучите этот нелёгкий вопрос, что такое единица измерения, какие системы единиц измерения существуют, и т.д.
А если руками будете вбивать текст "кг", "км", "м3", то потом проблем не оберётесь.
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949201
Фотография Wilhelm Holtoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ashoorupсложность которая меня ставит в тупик это то, что у меня в БД нет, в принципе, (многократно) повторяющихся значений в записяхда, и забыл добавить - эта фраза лишена смысла.
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949203
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормальный справочник единиц измерений еще и позволяет пересчитывать тонны в килограммы и т.п. Если задачка не высосана из пальца, то его нужно делать добросовестно.

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

Свойства оборудования - еав.

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

Все перечисленное выше - штук 30 таблиц навскидку.
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949205
Фотография Wilhelm Holtoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AshoorupОтдельно хочется сказать про запись в файл (думаю xml). Выбранные записи в БД нужно будет формировать в спецификацию (в том же приложении где и будет выводиться БД. Я думаю, что проще это будет сделать по позиции [ID]. И хранить в файле просто этот [ID] + количество заказанного оборудования (отдельное поле). Ну а этот бред не имеет никакого отношения к проектированию БД.
И вообще, вам проще всего будет нанять разработчика - специалиста по базам данных.
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949208
Фотография Wilhelm Holtoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П-ЛСвойства оборудования - еав.Зачем вы издеваетесь над новичком? Разве по его посту не понятно, что он не знает, что такое EAV ?
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949212
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вдруг хороший, годный новичок - будет грызть гранит науки.
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949215
Фотография Wilhelm Holtoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, но после его вопроса
Ashoorup Стоит ли делать БД из 2-3 таблиц? Или [b]проще все в одной сделать и не париться ?[/b] его будет преследовать Святая Инквизиция
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949218
Ashoorup
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я и есть зеленый новичок - не скрываю.

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]
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949226
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы начинаете с конца.

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

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

Категорически против одинаковых полей Id Name в разных таблицах. При сшивании в запросе их придется алиасить. Я сразу именую ManufacturerID, ManufacturerName, UnitID, UnitName, ... Это вкусовщина, но так схема легче читается.
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949231
Ashoorup
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данная работа это мой курсовой проект. Кому нравится и кому будет приятно - можно шутить, глумиться, показывать свое ЧСВ. Я не обидчивый.

Моя цель прежде всего научиться делать БД. Не для корочки в ВУЗе. Заказывать у спецов не буду однозначно. Программа будет реально работать на производстве.

Спасибо за понимание.
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949250
Ashoorup
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-ЛСНАЧАЛА изложите коротко назначение, функциональные требования - что ваша база должна мочь.
Я думал первого поста будет достаточно... Возможно что-то не учел...

Задумка такая:
Пользователь ищет по части наименования [Name] нужное оборудование. В таблице должны вывестись варианты (может делают несколько заводов, или есть разные исполнения). Далее пользователь выбирает нужную запись и добавляет ее в свою таблицу (спецификация), где потом только указывает количество. После того как спецификация сформирована - делает экспорт в Word.

П-ЛНу и схему бд лучше выкладывать графическую. Еслиб я умел. Но я готов учиться, так-что не подумайте, что я спрыгиваю :)
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949252
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AshoorupПрограмма будет реально работать на производстве.Вы можете в это искренне верить. Кто является заказчиком ? Кто - спонсором ? Результат проекта зависит от этих - ключевых вопросов а не от технических показателей. Может быть внедрено жуткое говнище, в котором будут страдать и мучаться юзеры, а качественное решение, напротив, выброшено за борт.

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

Какие средства для реализации предполагаете ? На чем будет клиент, сервер ?
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949257
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AshoorupП-ЛСНАЧАЛА изложите коротко назначение, функциональные требования - что ваша база должна мочь.
Я думал первого поста будет достаточно... Возможно что-то не учел...

Задумка такая:
Пользователь ищет по части наименования [Name] нужное оборудование. В таблице должны вывестись варианты (может делают несколько заводов, или есть разные исполнения). Далее пользователь выбирает нужную запись и добавляет ее в свою таблицу (спецификация), где потом только указывает количество. После того как спецификация сформирована - делает экспорт в Word.

П-ЛНу и схему бд лучше выкладывать графическую. Еслиб я умел. Но я готов учиться, так-что не подумайте, что я спрыгиваю :)

1. Это - детский сад, ясельная группа. Даже на учебный проект такой уровень изложения не тянет.

2. Установка и использование бесплатной редакции мс скл сервера вполне доступны новичку. Его графический редактор схем - тоже. От нуля можно смело начинать работать. За пару дней наработаете навыки.

Сейчас очень много разных средств рисования схем БД разной степени сложности и мощности, если есть особые предпочтения можете выбирать что-то еще.
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949297
Ashoorup
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну понятно что это не ТЗ.
Заказчик считайте я. Оплата обычная ЗП:) Не стоит относится к программе как нечто очень важному и ответственному. Сейчас это все руками делается. Но вообще подобную программу когда-то у нас уже написал один наш работник (вроде даже он был программистом) - ушел. Он сделал все в одной таблице. Прога на дельфях писана. Исходников не оставил. Скрин программы прилагаю.

Сейчас я после всех "рекомендаций" несколько растерялся и не знаю с какой стороны подступиться.

Пока я в Visual Studio уже слепил некое подобие вьвера БД (C#). Там же сделал в SSDT БД и две таблицы. Но они не связаны (не умею пока). Готов все нафик удалить и начать заново.

Давайте по порядку. Что сделать первое? Я выполню - покажу результат. Понятное дело, что вот прям все сразу все Ваши рекомендации я не выполню. Хочется последовательности.

Спасибо за понимание и терпение!
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949314
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ashoorup,

автор[ID]
[Имя]
[Тип]
[код]
[Key_Manufacturer]
[ed_izm]
[Вес]
[Размер]
[Описание]
[Дата]
[Заметка]
[Image]

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

у вас же непонятно что
авторВ главной таблице [Main] у меня получится не более 1.000.000 записей
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949330
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧто сделать первое?

Сформулировать понятия предметной области. Сформулировать бизнес- и функциональные требования. Описать бизнес-процессы.

Общее назначение системы. Что такое оборудование. Что такое спецификация. Как ведется каталог оборудования. Какие с ним нужно выполнять действия (бизнес-функции). Как наполняется спецификация. Что с ней можно/нужно делать.

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

Собранные спецификации имеют какой-то жизненный цикл (новая, черновик, готова, обработана, исполнена) ? Надо хранить историю обработки спецификаций ?
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949556
Фотография Wilhelm Holtoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
П-Л,

ТС же сказал, что это курсовая работа.
А то что вы перечислили тянет на хорошую дипломную,
а по объёму работы и на кандидатскую диссертацию.
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949577
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wilhelm HoltoffТС же сказал, что это курсовая работа.
Курсовая работа призвана показать чему ТС научился в течении этого самого курса. Пусть
делает одну таблицу, получит заслуженную двойку и больше никогда не подходит к
программированию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949615
Ashoorup
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хоть примерно понял, что Вы от меня хотите добиться:) В любом случае вся эта текстовка/описание пойдет для курсовой в пояснительную записку.

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

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


Требования к системе
Система должна обеспечивать:
-поиск необходимого оборудования в БД по всем полям
-вывод результатов поиска в виде таблицы со всеми характеристиками оборудования
-многоуровневый доступ: "Администратор", "Редактор БД", "Пользователь"
-редактирование БД средствами системы
-создание таблицы спецификации
-добавление выбранного оборудования в спецификацию
-сохранение и последующее открытие сформированной спецификации
-многодокументный режим с возможностью копирования записей из одной спецификации в другую
-экспорт спецификации в Word

Оборудование в системе должно быть представлено для пользователя следующими полями:
-Наименование оборудования - текстовое поле до 200 знаков
-Тип, марка, обозначение - текстовое поле до 50 знаков
-Код оборудования - - текстовое поле до 50 знаков
-Завод изготовитель - - список (отдельная таблица) не более 50 записей
-Единицы измерения - - список (отдельная таблица) не более 20 записей
-Масса (кг) - - float поле до 10 знаков
-Габаритные размеры - текстовое поле до 30 знаков
-Снято с производства - bool checkbox птичка установлена - снято с производства. Как отображать под вопросом еще.

-Изображение Будет отображаться не в таблице (на форме в углу)

Спецификация должна соответствовать ГОСТ (потом поищу какой - там все поля строго именованы и расположены)
В таблице "Спецификация" поле "Количество" должно редактироваться пользователем.

Редактирование каталога оборудования (БД) осуществляет пользователь "Редактор БД". Система должна обеспечивать контроль добавляемого оборудования на полный повтор записи.


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

авторИз приведенных данных видно, что оборудования довольно много. Удобно с ним работать в виде плоского списка ? - Да удобно. Пользователь например ищет оборудование "светофор" по полю "Наименование"- ему должно вывестись в той же таблице все записи содержащие данное слово. Модификаций может быть около 100. Затем он фильтрует то что найдено задавая критерии поиска в других полях. Например Завод-изготовитель. Одно и то же оборудование может делать несколько заводов. (очень врядли будут искать оборудование по другим полям). Может быть в очень редких случаях пользователь будет искать оборудование по коду изделия.
авторНаименование, технические характеристики почему склеены вместе ? - Так и должно быть. В таком виде спецификация передается заказчику (типа стандарт). Разбивать нет смысла.
авторНужна классификация/каталогизация ? - Думаю нет. Я хорошо думал над этим :) не получится, да и не нужно.
авторЧто такое код оборудования ? - просто текстовое поле. Оно и из цифр и из букв и из точек с прочерками и возможно даже с национальными символами. Пользователь может по нему искать оборудование. Может повторяться.
авторНужно вести учет оборудования в количественном исчислении ? Может оборудование пакетироваться (одна упаковка в общей таре - 12 шт. единиц) ? Нет. В БД не нужно. Количество указывается уже в спецификации.

авторСобранные спецификации имеют какой-то жизненный цикл (новая, черновик, готова, обработана, исполнена) ? Надо хранить историю обработки спецификаций ?
Ну как бы нет... Черновик - это то что сохранили файл. Готово это то что экспортировали в Word. Специальных статусов нет. Вернее они есть но это задача системы документооборота - это она определяет статус файла/объекта .

А вот насчет истории... тут мне нужен совет.
Дело в том, что запись в БД может меняться. Например завод сменил наименование оборудования для заказа, или например ошибка "Редактора БД". Но пользователь уже добавил эту запись в спецификацию. И хорошо бы ему просигнализировать, если он откроет спецификацию, что такая-то запись изменилась в БД (причину указывать и хранить не нужно). Т.е. как бы надо хранить дату внесения изменения в БД и соответственно копировать ее в спецификацию, но не отображать там (только в файле).
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949623
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКурсовая работа призвана показать чему ТС научился в течении этого самого курса. Пусть
делает одну таблицу, получит заслуженную двойку и больше никогда не подходит к
программированию.

+100500
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949632
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ashoorup,

тогда можно предположить, что
ваша mainэто огромный прайсспецификация заказ с полями кому/дата/наименование/составитель .....спецификацияСоставвыбранные из прайса позиции, причем если из прайса удалили, то добавлять в комментарий сообщение об этом ,периодически выдавать отчет строк, которых нет в прайс
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949643
Ashoorup
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давайте не будем уходить от темы все таки и переходить на морально-этические стороны вопроса. Я мог бы взять любую другую прогу в сети и выдать ее за свою, получить пять и быть двоечником. Но я честно написал что хочу научиться ! Прошу только немного в этом помочь , и мне как я вижу уже помогают, что конечно же приятно! Причем отвечают довольно быстро. Я благодарен форумчанам за это!
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949704
Ashoorup
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАтогда можно предположить, что
ваша mainэто огромный прайсспецификация заказ с полями кому/дата/наименование/составитель .....спецификацияСоставвыбранные из прайса позиции, причем если из прайса удалили, то добавлять в комментарий сообщение об этом ,периодически выдавать отчет строк, которых нет в прайс
main - ну пускай будет прайс, только цен там нет и не планируется (уж очень плавающая позиция - некому отслеживать)
спецификация - нет такого чтобы отдельно заказ шел одному, отдельно другому. Все проще. По какому-то объекту строительства перечисляется все оборудование которое нужно заказать и оформляется в виде документа "Спецификация". Посчитать цену это задача отдела смет... ну как бы это совсем другая песня, хоть и можно подумать над дальнейшем расширением функционала.
спецификацияСостав - я думаю это должна быть одна таблица Спецификация. А вот насчет удаленной позиции я и написал - тут надо отслеживать дату редактирования. Причем именно дату - пользователю может и не нада дата редактирования записи, а вот Редактору БД может пригодиться. Например одна и таже запись может редактироваться несколько раз. И нужно знать когда ее редактировали а не то что ее вообще редактировали.
...
Рейтинг: 0 / 0
Может лучше сделать все одной таблицей?
    #38949776
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AshoorupПЕНСИОНЕРКАтогда можно предположить, что
ваша mainэто огромный прайсспецификация заказ с полями кому/дата/наименование/составитель .....спецификацияСоставвыбранные из прайса позиции, причем если из прайса удалили, то добавлять в комментарий сообщение об этом ,периодически выдавать отчет строк, которых нет в прайс
main - ну пускай будет прайс, только цен там нет и не планируется (уж очень плавающая позиция - некому отслеживать)
спецификация - нет такого чтобы отдельно заказ шел одному, отдельно другому. Все проще. По какому-то объекту строительства перечисляется все оборудование которое нужно заказать и оформляется в виде документа "Спецификация". Посчитать цену это задача отдела смет... ну как бы это совсем другая песня, хоть и можно подумать над дальнейшем расширением функционала.
спецификацияСостав - я думаю это должна быть одна таблица Спецификация. А вот насчет удаленной позиции я и написал - тут надо отслеживать дату редактирования. Причем именно дату - пользователю может и не нада дата редактирования записи, а вот Редактору БД может пригодиться. Например одна и таже запись может редактироваться несколько раз. И нужно знать когда ее редактировали а не то что ее вообще редактировали.
Катастрофическая ошибка. Спецификации и их состав - ДВЕ РАЗНЫЕ таблицы.
...
Рейтинг: 0 / 0
25 сообщений из 80, страница 1 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Может лучше сделать все одной таблицей?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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