powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вопрос по проектированию базы
2 сообщений из 2, страница 1 из 1
Вопрос по проектированию базы
    #32273799
serg_russia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Требуется подсказка опытного проектировщика БД. Фирма занимается автоперевозками груза, ремонтом автомобилей, ... Ежесуточно составляется план работ, распределение работников, механизмов. Всего 4 таблицы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Таблица  1 :  "Автозаезд" 
Код_автозаезда (PK) №_заказа  №_а/м  Дата_план       Дата_факт       ... Клиент
   1       	   	      1001     23 - 45    01 . 01 . 03   12 : 00    05 . 01 . 03   15 : 00   ... Строй склад  1 
   2       		      1002     55 - 35    10 . 02 . 03   23 : 00    10 . 02 . 03   22 : 00   ... Строй склад  2 

Таблица  2 :  "План работ на сутки" 
Код_работ(PK)  Дата     Тип_задания Код_автозаезда(FK) Груз    Место_работ А/м_для_ремонта Тонн Кол-во  Ед_изм
   1            10 . 02 . 03    Перевозка            1  	Стекло 				         100   Упаковка
   2            10 . 02 . 03    Перевозка            1  	Двери   				           8   Штук
   3            10 . 02 . 03    Перевозка            1  	Окна   				          45   Штук
  
   4            10 . 02 . 03    Ремонт 				            Камаз 			  1 
   5            10 . 02 . 03    Ремонт 				            Тайота 		  1 
   6            10 . 02 . 03    Ремонт 				            Хонда 			  1 
   7            10 . 02 . 03    Ремонт 				            Краз 			  1     
  
   8            10 . 02 . 03    Уборка      			          Склад №  1 
  ...

Таблица  3 :  "Планирование деятельности работников"     
Код_работ(FK)  ФИО       Должность   Операция
         1       Иванов    Грузчик	 Погрузка
         1       Петров    Грузчик	 Погрузка
         1       Сидор     Грузчик	 Погрузка
        ...
         8       Климов    Слесарь     Ремонт
  		
Таблица  4 :  "Планирование деятельности механизмов"     
Код_работ(FK)  Мех-м     
         1       Погрузчик № 1 
         1       Кран      
        ...
         8       Погрузчик # 2 



Вопрос: Таблица 2 сочетает в себе 3 потенциальные сущности: "Перевозка"(атрибуты: Код_автозаезда,Груз,Тонн,Кол-во,Ед_изм), "Ремонт"(атрибуты: А/м_для_ремонта, Кол-во), "Уборка"(атрибуты: Место_работ). Поле "Код_автозаезда" является FK только при значении поля Тип_задания - Перевозка, во всех других случаях значение данного поля null. В случае добавления новых Типов_задания будут добавлены новые поля в таблицу № 2 для данного типа_задания. Понимаю что таблица № 2 не нормализована, содержит избыточные поля неиспользуемые в зависимости от Типа_задания. Схема данных такова Табл№1(Код_автозаездаPK)->Табл№2(Код_автозаездаFK)-(Код_работPK)->Табл№3(Код_работFK) и ->->Табл№4(Код_работFK) схема данных проста. Если разделять сущности из таблицы 2, то с нормализацией будет все Ok, но таблицы будет иметь вид:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Таблица 2_1:  "План работ на сутки перевозка" 
Код_работ(PK)  Дата     Код_автозаезда(FK) Груз    Тонн Кол-во  Ед_изм
   1  	     10 . 02 . 03            	  1     Стекло   	    100   Упаковка
   2   	     10 . 02 . 03  		  1     Двери    	      8   Штук
   3 	     10 . 02 . 03  		  1     Окна     	     45   Штук
  ...

Таблица 2_2:  "План работ на сутки перевозка ремонт" 
Код_работ(PK)  Дата     А/м_для_ремонта Кол-во
   1  	     10 . 02 . 03    Камаз 		 1 
   2  	     10 . 02 . 03    Тайота 		 1 
   3  	     10 . 02 . 03    Хонда 		 1   
   4  	     10 . 02 . 03    Краз 		 1     
  ...

Таблица 2_3:  "План работ на сутки уборка" 
Код_работ(PK)  Дата     Место_работ
   1  	     10 . 02 . 03    Склад №  1 
  ...

Таблица  3 :  "Планирование деятельности работников"     
Код_работ_перевозка(FK)  Код_работ_ремонт(FK) Код_работ_уборка(FK) ФИО 	   Должность Операция
         1   	   					   Иванов   Грузчик  Погрузка
         1   	   					   Петров   Грузчик   Погрузка
         1   	   					   Сидор    Грузчик   Погрузка
        ...
  				 8   		   	   Климов   Слесарь   Ремонт
  		
Таблица  4 :  "Планирование деятельности механизмов"     
Код_работ_перевозка(FK)  Код_работ_ремонт(FK) Код_работ_уборка(FK) Мех-м
         1       						   Погрузчик № 1 
         1       						   Кран
        ...
  				 8       			   Погрузчик # 2 


Усложнились таблицы 3-4, т.к. там появились дополнительные FK, учитывая то, что для FK желателен индекс для быстрой SQL связки, то на элементарную таблицу (Код_работ(FK), Мех-м) три индекса многовато. Посоветуйте опытные проектировщики как оптимально организовать таблицы, я склонен к первому варианту, но что-то не устраивает не могу врубиться что.
...
Рейтинг: 0 / 0
Вопрос по проектированию базы
    #32275041
Фотография babaEGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно попробовать сделать "связь-категоризации". (Если ты проектируешь БД в ERwin'е, там есть кнопочка complete sub-category).
Например, сделать сущность Тип_задания с атрибутами Код_работ(PK), Дата и дескриптером - тип_номер (можно по другому обозвать). Это будет "общая сущность". А сущности категории:
1. Перевозка (Код_работ(FK), Код_автозаезда, Груз, Тонн_Кол-во, Ед_изм)
2. Ремонт (Код_работ(FK), А/м_для_ремонта,Кол-во)
и 3. УБорка (Код_работ(FK), Место_работ)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вопрос по проектированию базы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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