powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Курсовой Магазин БД
1 сообщений из 1, страница 1 из 1
Курсовой Магазин БД
    #39641122
Rengler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тема курсового .
"магазин с одним продавцом . Компьютер вместо кассового аппарата . База наличия товаров ; наименование , единица измерения , цена еденицы , количевство , дата последнего завоза . Регистрация поступления товара ( как старых , так и новых наименований ). Оформление покупки : выписка чека , корректировка база . Проблема уценки и списания . И инвентаризация остататков товара с вычислением суммарной стоимости . "

В общем прошу помочь , опыт работы с SQL 2 ночи , профиль учебы тоже очень долек , но увы дали курсовой на бд . Я начитавшись сылок в гугле и покурив сайт майков + форум .

="Код бд на T-SQL ,делал в ssms2012"
Код: sql
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.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
--create database magazin.net
 
use [magazin.net]
go
 
create table [customers]
(
[ID] INT NOT NULL IDENTITY ,
[FName] nvarchar(20) null,
[MName] nvarchar(20) null,
[LName] nvarchar(20) null,
[address] nvarchar(50) null,
[Citu] nvarchar(20) null,
[Phone] nvarchar(12) null,
[DateInSystem] date DEFAULT GETDATE() 
) 
 
create table [products]
(
[ID] INT NOT NULL IDENTITY ,
[Name] nvarchar(50) not null ,
 
) 
 
create table [products_details]
(
[ID] INT NOT NULL,
[tupe] varchar(20) ,
[Naimenovanie] varchar(100) not null,
[description] varchar(500) not null,
[data_zavoza] date not null
)
 
create table [stock]
(
[ProductID] INT NOT NULL,
[Qtu] int DEFAULT 0 ,
[Name_Edinitsy] varchar(30) not null,
[prise] money NOT NULL ,
[total_prise] AS CONVERT ( money, Qtu*prise)
)
 
create table [order]
(
[ID] INT NOT NULL IDENTITY ,
[customersID] INT NULL ,
[OrderDate] date DEFAULT GETDATE() 
) 
 
create table [order_details]
(
[orderID] INT NOT NULL  ,
[line_item] INT NOT NULL ,
[ProductID] INT NULL ,
[Qtu] int NOT NULL,
[prise] money NOT NULL ,
[total_prise] AS CONVERT ( money, Qtu*prise)
) 
 
--КЛЮЧИ
ALTER TABLE [dbo].[customers]
ADD
PRIMARY KEY (ID)
go
 
ALTER TABLE [dbo].[products]
ADD
PRIMARY KEY (ID)
go
 
 
ALTER TABLE [dbo].[products_details]
ADD
UNIQUE(ID)
go
 
ALTER TABLE [dbo].[products_details]
ADD
   FOREIGN KEY (ID) REFERENCES [dbo].[products](ID)
     ON DELETE CASCADE 
go
 
ALTER TABLE [dbo].[stock]
ADD
UNIQUE([ProductID])
go
 
ALTER TABLE [dbo].[stock]
ADD
   FOREIGN KEY ([ProductID]) REFERENCES [dbo].[products](ID)
     ON DELETE CASCADE 
go
 
ALTER TABLE [dbo].[order]
ADD
PRIMARY KEY (ID)
go
 
ALTER TABLE [dbo].[order]
ADD
   FOREIGN KEY ([customersID]) REFERENCES [dbo].[customers](ID)
     ON DELETE SET NULL
go
 
ALTER TABLE [dbo].[order_details]
ADD
PRIMARY KEY ([orderID],[line_item])
go
 
 
ALTER TABLE [dbo].[order_details]
ADD
   FOREIGN KEY ([orderID]) REFERENCES [dbo].[order](ID)
                                                            --НЕТ УДАЛЕНИЯ ЗКАЗА 
go
 
ALTER TABLE [dbo].[order_details]
ADD
   FOREIGN KEY ([ProductID]) REFERENCES [dbo].[products](ID)
     ON DELETE SET NULL
go
 
--ПОЛЬЗОВАТЕЛЬСКИЕ ОГРАНИЧЕНИЯ 
 
ALTER TABLE [dbo].[customers]
ADD
CHECK  ([Phone] LIKE '([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])') 
GO
 
ALTER TABLE [dbo].[order]
ADD
CHECK  ([OrderDate] >= DATEADD(DAY ,- 900, GETDATE()) AND [OrderDate] <= GETDATE())
GO
 
ALTER TABLE [dbo].[stock]
ADD
CHECK  ([Name_Edinitsy] IN ('л','м','кг','шт','ед'))
GO
 
ALTER TABLE [dbo].[customers]
ADD
CHECK  ([DateInSystem] >= DATEADD(DAY ,- 900, GETDATE()) AND [DateInSystem] <= GETDATE())
GO
 
ALTER TABLE [dbo].[stock]
ADD
CHECK  ([Qtu] >=0 )
GO
 
 
--ТРИГГЕРЫ  
 
CREATE TRIGGER уменьшение_склада_при_заказе   
ON [dbo].[order_details]
FOR INSERT
AS
  IF @@ROWCOUNT = 0 
      RETURN 
      SET NOCOUNT ON 
 
UPDATE [dbo].[stock]
SET Qtu = s.Qtu - i.Qtu
FROM [dbo].[stock] s JOIN 
(SELECT [ProductID], SUM (Qtu) Qtu FROM inserted  GROUP BY [ProductID] ) i 
ON s.[ProductID] = i.[ProductID]
go
 
 
CREATE TRIGGER увеличение_склада_при_заказе   
ON [dbo].[order_details]
FOR DELETE
AS
  IF @@ROWCOUNT = 0 
      RETURN 
      SET NOCOUNT ON 
 
UPDATE [dbo].[stock]
SET Qtu = s.Qtu + d.Qtu
FROM [dbo].[stock] s JOIN 
(SELECT [ProductID], SUM (Qtu) Qtu FROM deleted  GROUP BY [ProductID] ) d 
ON s.[ProductID] = d.[ProductID]
go
 
 
CREATE TRIGGER изменение_заказа_и_склада   
ON [dbo].[order_details]
FOR UPDATE
AS
  IF @@ROWCOUNT = 0 
      RETURN 
  IF NOT UPDATE (Qtu) 
      RETURN
      SET NOCOUNT ON 
 
UPDATE [dbo].[stock]
SET Qtu = s.Qtu - (i.Qtu - d.Qtu)
FROM [dbo].[stock] s JOIN 
(SELECT [ProductID], SUM (Qtu) Qtu FROM deleted  GROUP BY [ProductID] ) d 
ON s.[ProductID] = d.[ProductID]
JOIN 
(SELECT [ProductID], SUM (Qtu) Qtu FROM inserted  GROUP BY [ProductID] ) i 
ON s.[ProductID] = i.[ProductID]
go
 
 
CREATE TRIGGER вз_удал_тавара_при_ост0_и_нет_в_заказах
ON [dbo].[products]
INSTEAD OF DELETE
AS
  IF @@ROWCOUNT = 0 
      RETURN 
      SET NOCOUNT ON 
  IF EXISTS (SELECT 1 FROM [dbo].[order_details] od
                      JOIN deleted d
                      ON od.ProductID = d.ID)
      RAISERROR ('Тавар не может быть удален т.к состоит в заказах', 10,1)
 
  ELSE IF EXISTS (SELECT 1 FROM [dbo].[stock] s
                      JOIN deleted d
                      ON s.ProductID = d.ID
                      WHERE s.Qtu <> 0 )
      RAISERROR ('Тавар не может быть удален т.к есть остаток на складе ', 10,2)
  ELSE 
      DELETE [dbo].[products] WHERE ID IN (SELECT ID FROM deleted)
 
go



Прошу помочь . Прошу проявить терпение , вопросы наверное нубские .

1)Насколько соответствует заданию ?
2)Правильно реализована ?
3)Есть-ли критические ошибки ?
4)Насколько работоспособна ?(требуется всего ничего главное чтоб хоть 1 транзакцию/операцию совершила , увы таковы реалии )
5)Есть ли возможность упростить ?
6)Как реализовать чек , уценку и списание . Или это уже в раздел С#/VB ?
7)Триггеры корректны ?


Если есть какую полезную ссылку/материал/методичку (преподаватель отправил в пешее , дал только задание ).
Заранее спасибо !
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Курсовой Магазин БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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