Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с организацией БД. Делить или не делить вот в чем вопрос? 
:(
    Опции темы
x404
Дата 28.1.2004, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.11.2003

Репутация: нет
Всего: нет



Помогите с организацией БД
Проблема в следующем(а может это и напрасные опасения, тогда просто скажите, что все нормально):
Есть ИЗДЕЛИЕ, оно включает в себя несколько ДЕТАЛЕЙ, каждое из которых имеет на изготовление свою норму времени и расценку. ДЕТАЛЬ можно изготовить на нескольких цехах(их 7 штук - цехов) и естественно различные нормы. Так вот как мне хранить эти цеха в одной табличке (как я и хочу, там просто названия цехов без всяких дополнительной информации по нему, хотя они и находятся в разных городах) или в различных таблицах? ИЗДЕЛИЕ хранить в отдельной таблице или нет? (хочу в этой же). thumbs-up.gif

На данный момент таблица мне представляется такойsad.gifбуду по русски писать)
----------------------
id_izd
id_det (ключевое)
Наименование изделия
Диаметр изделия
Наименование детали
Количество деталей(Это вроде примечания. Ни на что влиять не будет)
Норма времени
Расценка
Цех1
Цех2
...
Цех7
---------------------
Изделие не могу хранить в другой таблице, потому как вообще изделие включает в себя другие дополнительные параметры
расценка это только часть, а для того чтобы предложить внесение в полный состав ИЗДЕЛИЯ(id_izd как раз для этого) необходимо выбрать как раз из таблицы по Наименованию изделия и Диаметру изделия.
з.ы.Может это вообще ни к чему я написал.

Используется SYBASE.
Пишу на Delphi.(если это чем то поможет)
Спасибо!
PM MAIL WWW ICQ Skype   Вверх
Cashey
Дата 28.1.2004, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Связанные таблицы и только так.

Пример:

Таблица 1.
1. | Изделие№1 | Другие характиристики Изделия№1
2. | Изделие№2 | Другие характиристики Изделия№2
N. | .................. | ...........................................................

Справочник цехов
1. | Цех№1
2. | Цех№2

Справочник деталий
1. | Деталь1 | 1(идентификатор принадлежности к 1-му изделию) | 2(идентификатор принадлежности к 2-му цеху) | Другие характиристики Детали1
2. | Деталь2 | 2(идентификатор принадлежности к 2-му изделию) | 2 | Другие характиристики Детали2
3. | Деталь3 | 1 | 1(идентификатор принадлежности к 1-му цеху) | Другие характиристики Детали2
N. | ............. | .. | .................................................... | ..........

Это сообщение отредактировал(а) Cashey - 28.1.2004, 11:33


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
AntonSaburov
Дата 28.1.2004, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Я бы сделал так:

1. Таблица для изделия включает в себя только описание изделия. И больше ничего.
2. Отдельная таблица для деталей.
3. Таблица для связи иделия и деталей, входящих в него.
4. Отдельная талица для списка цехов. ИД, наименование, месторасположение и прочая.
5. Таблица для связи детали и цеха. Вот тут можно поиграть вовсю.
Номер детали, номер цеха, норма для этого цеха. Это просто минимум.

Вот получается 5 таблиц. Поехали дальше smile.gif

Также можно легко перейти к виду, когда деталь просто необходимо делать в нескольких цехах. Например сначала в первом, потом в четвертом, потом в десятом. Просто добавляется столбец "порядок обработки".
Причем если порядок обработки например для цеха1 и цеха4 одинаковый, это значит, что данную операцию над деталью можно исполнять как в цехе 1, так и в цехе 4. Если деталь может быть сделана в любом цехе - значит у всех одинаковы1 "порядок обработки".

Можно пойти еще дальше smile.gif
Сделать таблицу операций - обточка, фрезировка, шлифовка и прочая. И в таблице связи цеха и детали добавить столбец для операции.

Вообщем фантазия разбежалась далеко smile.gif
Как видишь при моем варианте более высокая гибкость получается - цехов немерянно, легко расширять (показал на примере операций), деталь можно ограничить обработкой только в нескольких цехах, а не во всех 7 (как у тебя).
PM MAIL WWW ICQ   Вверх
term
Дата 28.1.2004, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 22.1.2004

Репутация: нет
Всего: нет



Еще вариант:
1. изделия
2. детали
3. нормы времени и расценки с ссылкой на детали и цеха
4. цеха
Если же таблица изделий содержит справочную информацию о всех возможных деталях для
изделия, а реально выпускаемое изделие отличается от справочного, тогда понадобится еще две
таблицы:
5. выпускаемые изделия (id_izdV, ссылка на справочное изделие id_izd)
6. соответствие деталей выпускаемому изделию (id_izdV, id_det)

Если одна деталь может подходить для разных изделий, тогда понадобится 7 таблица для связи 1 и 2:
7. соответствие деталей справочному изделию.

Если нормы времени и расценки будут меняться, тогда в 3 таблицу вводится поле <дата начала действия новых норм и расценок>. Старые нормы удалять не надо. Понадобится еще одна таблица 8 (по порядку после 6):
8. ссылки на нормы и расценки (ссылки на записи 3-ей таблицы).
PM MAIL   Вверх
Cashey
Дата 28.1.2004, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата
5. Таблица для связи детали и цеха. Вот тут можно поиграть вовсю.
Номер детали, номер цеха, норма для этого цеха. Это просто минимум.

Если точно известно, что цехов ровно 7, то это можно упростить. И создать в таблице с деталями семь логических полей и заполнять их в соответсвие с цехом.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
AntonSaburov
Дата 28.1.2004, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Цитата
Если точно известно, что цехов ровно 7, то это можно упростить

Может быть. Но я бы так не делал. Слишком жесткая связь получается. Мало ли что там произойдет. А что если деталь надо дважды, а то и трижды через один цех проводить в разном порядке ?

Я имею в виду, что в первоначальной таблице нет возможности установить произвольный порядок обработки детали. А если технология изменится, а если вдруг цех разделят на два или сольют из двух один.

По теории лучше бить на части. Хотя это как обычно только IMHO.
PM MAIL WWW ICQ   Вверх
x404
Дата 31.1.2004, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.11.2003

Репутация: нет
Всего: нет



-------------------------------------------------------
AntonSaburov
1. Таблица для изделия включает в себя только описание изделия. И больше ничего.
2. Отдельная таблица для деталей.
3. Таблица для связи иделия и деталей, входящих в него.
4. Отдельная талица для списка цехов. ИД, наименование, месторасположение и прочая.
5. Таблица для связи детали и цеха. Вот тут можно поиграть вовсю. // ТУТ Я ЕЩЕ ДОБАВЛЯЮ СВЯЗКУ НА ЗАВОД И В ИТОГЕ : ЗАВОД-ЦЕХ-ДЕТАЛЬ
Номер детали, номер цеха, норма для этого цеха. Это просто минимум.
-------------------------------------------------------


Тут оказалось, что цеха все-таки разнесены по заводам(вроде их железно 3 штуки, но то как оказалось на самом деле с цехами не очень то хорошо confused.gif (их порядка 20 на каждом из заводов и внедрятся они будут по ходу) и теперь я насчет количества заводов все таки начал сомневаться).
и решил добавить еще таблицу ЗАВОДЫ. Или проще вводить ~60 штук цехов сразу в одну таблицу?

6. ЗАВОД

И ище как сделать так, если деталь не будет изготавливаться на одном из заводов, а покупаться где-то на стороне.(применить ответ term?)
PM MAIL WWW ICQ Skype   Вверх
x404
Дата 1.2.2004, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 30.11.2003

Репутация: нет
Всего: нет



А что если сделать так:
1. Перечень изделий и деталей
-ИД_Дет
-Наименование изделия
-Диаметр
-Наименование детали
-Количество

2.Завод1
-ИД
-ИД_Дет(связка на 1-ю таблицу)
-Норма времени1 (1 - это для первого цеха на этом заводе)
-Расценка 1
-Норма времени2 (второй цех)
-Расценка 2
...

3. Завод2
-ИД
-ИД_Дет(связка на 1-ю таблицу)
-Норма времени1 (1 - это для первого цеха на этом заводе)
-Расценка 1
-Норма времени2 (второй цех)
--Расценка 2
-Норма времени3 -Расценка 3
...



И таблиц будет столько сколько заводов. И по мере ввода будут добавляться по 2 поля на каждый цех
PM MAIL WWW ICQ Skype   Вверх
AntonSaburov
Дата 2.2.2004, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Цитата
А что если сделать так:

Не нравится мне эта идея.

IMHO лучше сделать столько таблиц, сколько есть реальных сущностей.
А это:
- изделие
- детали + таблица для связи с изделиями
- завод
- цех (в нем поле, к какому заводу принадлежит)
- ну и связь детали с цехом. Причем т.к. все цеха в одной таблице и каждый имеет свой ИД, то уже завод в принципе может быть не всегда использоваться - его всегда можно найти через цех.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.