powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / организация структуры базы
13 сообщений из 13, страница 1 из 1
организация структуры базы
    #32721019
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо сконструировать базу деталей. Разновидностей деталей около 50, т.е. болты, трафареты и т.д. Разумеется, они имеют разное количество характеристик.

Хотелось-бы услышать Ваше мнение по поводу того, что является более рацональным решением - создать 50 таблиц (по таблице на каждый вид), или создать одну таблицу, запихать в нее все возможные характеристики, а в неиспользуемых полях для конкретного типа использовать null.
...
Рейтинг: 0 / 0
организация структуры базы
    #32721031
Breakneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
организация структуры базы
    #32756005
Yuraz.com
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StalkerSчто является более рацональным решением - создать 50 таблиц (по таблице на каждый вид)
Если хар-ки схожие, я бы так и сделал, если нет, то 1 таблица шаблонов, а из нее уже берем данные для изготовления в любой момент таблицы для каждой детали.
...
Рейтинг: 0 / 0
организация структуры базы
    #32756042
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StalkerSНеобходимо сконструировать базу деталей. Разновидностей деталей около 50, т.е. болты, трафареты и т.д. Разумеется, они имеют разное количество характеристик.

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

Я бы сделал ЧЕТЫРЕ таблицы:
1. Детали (болты, трафареты и т.д.)
2. Характеристики (длина, ширина, толщина и т.д.)
3. Характеристики деталей
4. Единицы измерения

Структура таблиц:
1. Детали ; поля PartID, NamePart
2. Единицы измерения ; поля IzmID, NameIzm
3. Характеристики ; поля CharID, IzmID, NameChar
4. Характеристики деталей ; поля PartID, CharID, Value

При этом, возникает следующая схема данных (стрелочки указывают соответствующие связи (Relations)):

Детали -> Характеристики деталей <- Характеристики <- Единицы измерения

В чем достоинства данной схемы:
- Она расширяема;
- Разные детали могут иметь разное количество характеристик
- Не надо хранить значение Null

В чем недостатки данной схемы:
- Для просмотра/ввода характеристик деталей надо написать соответствующий Select и поместить его во View...
...
Рейтинг: 0 / 0
организация структуры базы
    #32761242
db_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторДетали->Характеристики деталей<-Характеристики <-Единицы измерения

Это самый нормальный (в полном смысле этого слова) способ хранения информации.

Будут небольшие сложности с реализацией.
...
Рейтинг: 0 / 0
организация структуры базы
    #32762491
Sergey_SK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Станислав C.
Код: plaintext
1.
 4 . Характеристики деталей; поля PartID, CharID, Value
уточните пожалуйста:
Value - какой тип предполагается varchar, float, sql_variant?
да, и надо понимать что хранение характеристик не самоцель, вероятно потом нужно будет и расчёты вести расхот, отход, незавершёнка там, да и в разных единицах, кому надо будет в штуках кому в килограммах...
...
Рейтинг: 0 / 0
организация структуры базы
    #32762500
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_SKto Станислав C.
Код: plaintext
1.
 4 . Характеристики деталей; поля PartID, CharID, Value
уточните пожалуйста:
Value - какой тип предполагается varchar, float, sql_variant?...
Если Вы заметили, то я не прописывал типы полей. Оставил это на откуп разработчику. Хотя, насколько я понял из первого сообщения топика, здесь подошел бы тип float...
Sergey_SKto Станислав C.
... надо понимать что хранение характеристик не самоцель, вероятно потом нужно будет и расчёты вести расхот, отход, незавершёнка там, да и в разных единицах, кому надо будет в штуках кому в килограммах...
Я бы согласился с Вами, но стояла задача именно сконструировать базу деталей... Приведите мне пример, когда моя схема не сработает... Кроме того,как я уже говорил, предложенная мной модель является расширяемой. Если необходимы пересчеты между единицами измерения, то, наверное, можно ввести коэффициент пересчета, например в виде еще одной таблицы:
Код: plaintext
1.
2.
Пересчет, поля IzmID_From,IzmID_To,Koeff,
где поля IzmID_From,IzmID_To являются "ссылками" на поле IzmID таблицы "Единицы измерения", а Koeff - соответствующий коэффициент пересчета
а в программе выбирать нужный коэффициент и делать преобразование...
...
Рейтинг: 0 / 0
организация структуры базы
    #32762546
Sergey_SK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да схема замечательная...
еслиб единственной задачей было найти и распечатать характеристики.
Но на основе этих характеристик потом нужно будет вести расчёты,
Подробностей расчёта - престчёта ни кчему, приведённые мной примеры расчётных задач это только чтоб показать достаточную серьёзность необходимых расчётов.
Вы не указали типы полей, я по этому и задал вопрос т.к. он принципиально важен и без его решения данная схема не жизнеспособна.

Вот вы предполагаете тип flоat, а как быть с:
1. постоянное вываливание на клиенте в экспоненциальный вид,
2. точность вычислений скажем так, оставляет желать лучшего(это ведь приближённый тип) ?
просто может я типом float пользоваться не умею и поэтому везде где нужны рачсёты пользую decimal.
...
Рейтинг: 0 / 0
организация структуры базы
    #32762575
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_SKДа схема замечательная...
если б единственной задачей было найти и распечатать характеристики.
Но на основе этих характеристик потом нужно будет вести расчёты,
Подробностей расчёта - престчёта ни кчему, приведённые мной примеры расчётных задач это только чтоб показать достаточную серьёзность необходимых расчётов.
Был задан КОНКРЕТНЫЙ вопрос:
автор
Необходимо сконструировать базу деталей . Разновидностей деталей около 50, т.е. болты, трафареты и т.д. Разумеется, они имеют разное количество характеристик.

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

Не расширяйте трактовку вопроса. А то ведь так можно расширить его и до CASE-системы...

Sergey_SK Вы не указали типы полей, я по этому и задал вопрос т.к. он принципиально важен и без его решения данная схема не жизнеспособна.

Я не указывал типы полей специально, чтобы указать лишь ИДЕЮ реализации, а не конкретную реализацию. Разработчик, у которого есть голова, возмет ИДЕЮ и, немного модифицировав, применит ее в своей конкретной ситуации, а не будет ждать готового решения...

Sergey_SK
Вот вы предполагаете тип flоat, а как быть с:
1. постоянное вываливание на клиенте в экспоненциальный вид,
2. точность вычислений скажем так, оставляет желать лучшего(это ведь приближённый тип) ?
просто может я типом float пользоваться не умею и поэтому везде где нужны рачсёты пользую decimal.
Это опять же идет речь о КОНКРЕТНОЙ РЕАЛИЗАЦИИ. (мне почему-то кажется, что на SQL Server'e). Соглашусь, МОЖНО использовать тип decimal. Хотя, также НЕ ЗАПРЕЩЕНО использовать и типы char, varchar и др. и проводить преобразование по мере надобности....
...
Рейтинг: 0 / 0
организация структуры базы
    #32762737
Sergey_SK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Это опять же идет речь о КОНКРЕТНОЙ РЕАЛИЗАЦИИ. (мне почему-то кажется, что на SQL Server'e).

шаман :)

автор
Это опять же идет речь о КОНКРЕТНОЙ РЕАЛИЗАЦИИ. (мне почему-то кажется, что на SQL Server'e). Соглашусь, МОЖНО использовать тип decimal. Хотя, также НЕ ЗАПРЕЩЕНО использовать и типы char, varchar и др. и проводить преобразование по мере надобности....
именно о конкретно ВАШЕЙ реализации и идёт речь,
схема так красиво описана что я смел предположить что она была вами использована на практике.

автор
varchar и др. и проводить преобразование по мере надобности....

то есть практически на каждом шагу.

Данная схема давно известна, только вот стоит ли с ней заморачиваться в серьёзных проектах, просто часто выясняется что данная схема была применена для хранения настроек пользователей или ещё чего не серьёзного,
а вот чтоб кто-то сказал что он её использовал как ядро проекта и не пожалел об этом я ещё не слышал, а былоб интересно (действительно интересно, без всякой иронии).
...
Рейтинг: 0 / 0
организация структуры базы
    #32762807
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_SK
именно о конкретно ВАШЕЙ реализации и идёт речь,
схема так красиво описана что я смел предположить что она была вами использована на практике.

Конкретно ЭТА схема не была реализована на практике. Но было реализовано несколько подобных при адаптации КИС "Эталон" (ДОС-версия) для нужд нашего предприятия. А конкретно при описании задачи "Производство"...

Sergey_SK
Данная схема давно известна, только вот стоит ли с ней заморачиваться в серьёзных проектах... а вот чтоб кто-то сказал что он её использовал как ядро проекта и не пожалел об этом я ещё не слышал...
Долой реляционную модель из практики! Даешь денормализацию!
...
Рейтинг: 0 / 0
организация структуры базы
    #32763018
tchn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Станислав C.В чем недостатки данной схемы:
- Для просмотра/ввода характеристик деталей надо написать соответствующий Select и поместить его во View...

Вы имеете в виду запрос, который будет возвращать НД что-то типа:

Код: plaintext
1.
2.
Деталь    Характеристика1    Характеристика2    Характеристика3
===============================================================

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

действительно, вопрос извлечения данных из такой структуры стал лично для меня проблемой. интересно, кто как из такой ситуации выходит?
...
Рейтинг: 0 / 0
организация структуры базы
    #32763180
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это я, автор топика :)

>Это опять же идет речь о КОНКРЕТНОЙ РЕАЛИЗАЦИИ. (мне почему-то кажется, что на SQL Server'e).

именно на нем, родимом

Реализация данной структуры пока в подвешенном состоянии, но я уже реализовал практически идеинтичную структуру, как раз
по способу, о котором говорит Станислав_С.
Задача следующая : необходимо хранить таблицу номенклатурных номеров. Она представляет собой таблицу с 18 полями,
причем в каждом конкретном номере используется лишь 5-6 полей. Если использовать лишь одну таблицу, то фактически, мы
будем хранить одни null. Причем, по сравнению с таблицей деталей (из топика), ситуация осложняется тем, что в части
полей храняться реальные значения (например, размер сортамента = 500 мм.), а в остальных полях - только ссылки на
значения из других таблиц (к примеру - ГОСТ материала, все используемые ГОСТы собраны в отдельной таблице, так как
иначе придется дублировать строку типа ГОСТ 12276-87 немеренное количество раз).
В итоге, сама таблица Номенклатурных номеров выглядит так :

- Id номера
- Номер характеристики
- Значение

Характеристики (18 шт.) собраны в другой таблице, ну и соответственно, еще 12 таблиц, хранящих данные (типа ГОСТ'ов).
Пришлось написать хитрую ХП, которая по номеру, возвращает текст Номенклатурного Номера. Причем, для каждой конкретной
характеристики, ей приходиться определять, реальное-ли значение это, или ссылка на другую таблицу.
В принципе, получилось замудрено (13 таблиц вместо одной), но это явно лучше, чем одна здоровая неповоротливая
таблица. Тем более, что microsoft рекомендует держаться подальше от большого числа null-значений в таблицах, а в данном
варианте реализации null отсутствуют в принципе.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / организация структуры базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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