powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / БД продажи комплектующих
6 сообщений из 31, страница 2 из 2
БД продажи комплектующих
    #37321804
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал формочку для материнских плат. При двойном щелке на плате в карточке сборки компьютера открывается карточка платы. В ней, при двойном щелке на записи с компьютером открывается карточка сборки компьютера.
...
Рейтинг: 0 / 0
БД продажи комплектующих
    #37321851
Proggirl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
П-Л,
мне б ваши знания..) Мне поставили 61 балл условно, т.е. во время практики должна показать. Вы не знаете можно ли пересдавать официально, чтоб исправить оценку? а то уж очень меня эта оценка расстраивает... Теперь есть немного больше времени, что посоветуете доделать эту, или начать почти все заново?
...
Рейтинг: 0 / 0
БД продажи комплектующих
    #37321885
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕРЕДЕЛАТЬ!!! ПОЛНОСТЬЮ!!!
...
Рейтинг: 0 / 0
БД продажи комплектующих
    #37321967
Proggirl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Справочники думаю оставить. т.е. типы сокетов, форм-факторы и т.д. Создаю одну таблицу Product со всеми товарами:
Код: plaintext
1.
2.
3.
4.
5.
6.
Create table Product
(ID int NOT NULL,
manufacturer char( 30 ),
model char( 30 ),
info char( 30 ) NOT NULL,
price int NOT NULL,
Constraint Primary key PK_Product ([ID]))
Примерно так... вот пару вопросов: Можно ли сделать так чтоб айди матплаты отличался от айди процессора? возможно формы для добавления товара оставить раздельными, и можно ли в форму, которая не будет хранить свои данные в таблице, записать больше одной записи? как в данном случае можно будет осуществить сборку? т.е. Мне понятно, что можно сделать лайк с инфо и "LGA775" например. Но вот как сделать так чтоб выбрала я например матплату и чтобы из инфо оно извлекло именно "LGA775" мне непонятно.
...
Рейтинг: 0 / 0
БД продажи комплектующих
    #37322020
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та-а-ак.

В нулевых. Сроки и рамки проекта.

Сколько должо быть форм в приложении ? Весь заявленный ранее функционал магазина по продаже железа и собранных компьютеров ?

Во-первых.

Проблема собственно в учете цен, прихода/расхода. Тот вариант, что был заложен вами АБСОЛЮТНО неприемлем даже ни в каком учебном приближении. Кол-во = сумма прихода - сумма расхода. Как только сюда добавляется учет цен вы попадаете по полной на партионный учет, фифо, лифо и т.п. Это сильно выбивается за всякие разумные рамки по трудоемкости.

Поэтому: Можно вести учет цен по прайс листам, висящим в воздухе, и простейший количественный учет. Но цена закупки, себестоимость, расчет прибыли сделать будет НЕВОЗМОЖНО. Это - ограничение проекта.

Во-вторых.

Есть масса замечаний по системе именования таблиц, полей, работе с процедурами и т.п. Вы все сумели сделать наихудшим образом. Первое, что пришлось сделать мне, чтобы получить работающий пример - переименовать все таблиц и поля в вашей базе. У вас были поля nchar, хранившие названия с пробелами. Имена ПК и FK различались и часто не содержали корень, общий с именем сущности. Мой пример работает на одном запросе без каких-либо процедур. Триггер, висевший у вас для расчета цены, совершено не верный. Цена собранного компьютера считается как обычное вычисляемое поле в запросе.

В-третьих.

Самой главный вопрос - правильная структура базы. Однотипных таблиц, содержащих похожие наборы полей в базе быть НЕ ДОЛЖНО. Вам надо решить как хранить дополнительные атрибуты разных типов комплектующих. Глубина и качество решения здесь должны зависеть от того, сколько времени вы можете на это потратить. В любом случае, подробно прочитайте про методику EAV.

В-четвертых.

ДО ТОГО как начать делать какие-то таблицы надо СЛОВАМИ НА РУССКОМ языке четко сформулировать основыные сущности и отношения в базе данных. Только потом - таблицы, физическая модель. ТОЛЬКО ПОТОМ - формы в аксесе.

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

Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
GO
--------------------------------------------------------------------------------
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'qrComputer') DROP VIEW dbo.qrComputer
--------------------------------------------------------------------------------
GO
--------------------------------------------------------------------------------
CREATE VIEW dbo.qrComputer AS

SELECT 

   -- Сборка компьютера
   cmp.Computer_ID,
   
   -- Материнская плата
   cmp.Board_ID,
      brd.Board_Manufacturer,
      brd.Board_Model,
      brd.Board_Chipset,
      Board_FormFactor = brd.FormFactor_ID,
         frm.FormFactor_Code,
      -- Дублирование полей в сборке и в материнской плате,
      -- поэтому добавлен уточняющий префикс Board_
      Board_SocketType_ID = brd.SocketType_ID,
      Board_RAMType_ID = brd.RAMType_ID,
      Board_SATAType_ID = brd.SATAType_ID,
      brd.SATA_Quantity,
      brd.PATA_Quantity,
      brd.Board_Power,
      brd.Board_Count,
      brd.Board_Price,         
   -- Процессор
   cmp.CPU_ID,
      cpu.CPU_Manufacturer,
      cpu.CPU_Model,
      cpu.SocketType_ID,
      cpu.CPU_Clock,
      cpu.CPU_FSB_Clock,
      cpu.CPU_Power,
      cpu.CPU_Count,
      cpu.CPU_Price,
   -- Память
   cmp.RAM_ID,
      ram.RAM_Manufacturer,
      ram.RAM_Model,
      ram.RAM_Kit,
      ram.RAMType_ID,
         ram_typ.RAMType_Code,
      ram.RAM_Clock,
      ram.RAM_Timings,
      ram.RAM_Power,
      ram.RAM_Count,
      ram.RAM_Price,
   -- Диск
   cmp.HDD_ID,
      hdd.HDD_Manufacturer,
      hdd.HDD_Model,
      hdd.Capacity_ID,
      hdd.CacheType_ID,
      hdd.RPMType_ID,
      hdd.SATAType_ID,
      hdd.HDD_Power,
      hdd.HDD_Count,
      hdd.HDD_Price,
   -- Видео
   cmp.VGA_ID,
      vga.VGA_Manufacturer,
      vga.VGA_Model,
      vga.VGA_Length,
      vga.VGA_Power,
      vga.VGA_Count,
      vga.VGA_Price,
   -- Case совпадает с ключевым словом SQL, 
   -- поэтому корпус должен быть назван любым другим синонимом
   cmp.Chasis_ID,
      ch.Chasis_Manufacturer,
      ch.Chasis_Model,
      ch.ChasisType_ID,
      ch.FormFactor_ID,
      ch.Chasis_Power_Module,
      ch.Chasis_Count,
      ch.Chasis_Price,
   -- Блок питания
   cmp.Power_ID,
      pwr.Power_Manufacturer,
      pwr.Power_Model,
      pwr.Power_Power,
      pwr.Power_PATA,
      pwr.Power_SATA,
      pwr.Power_Count,
      pwr.Power_Price,
      
   -- Расчет цены      
   Computer_Price = 
      ISNULL(brd.Board_Price,  0 )
      + ISNULL(cpu.CPU_Price,  0 )
      + ISNULL(hdd.HDD_Price,  0 )
      + ISNULL(vga.VGA_Price,  0 )
      + ISNULL(ch.Chasis_Price,  0 )
      + ISNULL(pwr.Power_Price,  0 )
   
FROM 

   dbo.Computer cmp
   LEFT OUTER JOIN dbo.Board brd ON brd.Board_ID = cmp.Board_ID
   LEFT OUTER JOIN dbo.FormFactor frm ON frm.FormFactor_ID = brd.FormFactor_ID
   LEFT OUTER JOIN dbo.CPU cpu ON cpu.CPU_ID = cmp.CPU_ID
   LEFT OUTER JOIN dbo.RAM ram ON ram.RAM_ID = cmp.RAM_ID
   LEFT OUTER JOIN dbo.RAMType ram_typ ON ram_typ.RAMType_ID = ram.RAMType_ID
   LEFT OUTER JOIN dbo.HDD hdd ON hdd.HDD_ID = cmp.HDD_ID
   LEFT OUTER JOIN dbo.VGA vga ON vga.VGA_ID = cmp.VGA_ID
   LEFT OUTER JOIN dbo.Chasis ch ON ch.Chasis_ID = cmp.Chasis_ID
   LEFT OUTER JOIN dbo.Power pwr ON pwr.Power_ID = cmp.Power_ID
--------------------------------------------------------------------------------
GO
...
Рейтинг: 0 / 0
БД продажи комплектующих
    #37322898
Volochkova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Моя так и не понимать...
Сколько вешать в граммах?
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / БД продажи комплектующих
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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