vakho

Bazebi Giga

Jun 8th, 2013
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 28.69 KB | None | 0 0
  1. ------------------------------------------------------------------------------------------
  2. /*  
  3.     ვამოწმებთ ბაზის არსებობას Database–ბში
  4.     არსებობის შემთხვევაში ვშლით ბაზას და თავიდან ვქმნით
  5. */
  6. USE master
  7. IF EXISTS (SELECT name FROM sys.DATABASES WHERE name=N'პენტიუმი')
  8. DROP DATABASE პენტიუმი
  9. GO
  10. CREATE DATABASE პენტიუმი
  11. GO
  12. USE პენტიუმი
  13. ------------------------------------------------------------------------------------------
  14. /*
  15. არსები:
  16.     თანამშრომელი
  17.     მომწოდებელი
  18.     კლიენტი
  19.     ნაწილები
  20.     პროდუქტი
  21. */
  22. ------------------------------------------------------------------------------------------
  23. /*
  24.     არსი [თანამშრომელი]:
  25.         კომპოზიტური ატრიბუტით [მისამართი]
  26.         და მრავალმნიშვნელოვანი ატრიბუტით [ტელეფონი]
  27. */
  28. -- თანამშრომელი:
  29. IF OBJECT_ID(N'თანამშრომელი', 'u') IS NOT NULL
  30. DROP TABLE თანამშრომელი
  31. GO
  32. CREATE TABLE თანამშრომელი
  33. (
  34.     პირადი_ნომერი INT PRIMARY KEY, /* <-PRIMARY KEY გამოყენებულია აქ */
  35.     სახელი nvarchar(50),
  36.     გვარი nvarchar(50),
  37.     დაბადების_თარიღი DATE,
  38.     --მისამართი
  39.     --ტელეფონი
  40.     თანამდებობა nvarchar(50)
  41. )
  42.  
  43. -- [მისამართი][1:1]:
  44. IF OBJECT_ID(N'თანამშრომლის_მისამართი', 'u') IS NOT NULL
  45. DROP TABLE თანამშრომლის_მისამართი
  46. GO
  47. CREATE TABLE თანამშრომლის_მისამართი
  48. (
  49.     ID INT UNIQUE, /* <-UNIQUE გამოყენებულია აქ */
  50.     ქალაქი nvarchar(50) DEFAULT(N'თბილისი'), /* <-DEFAULT გამოყენებულია აქ */
  51.     ქუჩა nvarchar(50),
  52.     სახლი INT,
  53.     ბინა INT
  54. )
  55.  
  56. ALTER TABLE თანამშრომლის_მისამართი
  57. ADD CONSTRAINT FK_თანამშრომლის_მისამართი
  58. FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
  59. REFERENCES თანამშრომელი(პირადი_ნომერი)
  60. ON DELETE cascade
  61. ON UPDATE cascade
  62.  
  63. ALTER TABLE თანამშრომლის_მისამართი
  64. DROP CONSTRAINT FK_თანამშრომლის_მისამართი
  65.  
  66. -- [ტელეფონი][1:N]:
  67. IF OBJECT_ID(N'თანამშრომლის_ტელეფონი', 'u') IS NOT NULL
  68. DROP TABLE თანამშრომლის_ტელეფონი
  69. GO
  70. CREATE TABLE თანამშრომლის_ტელეფონი
  71. (
  72.     ID INT,
  73.     ტელეფონის_ნომერი nvarchar(50)
  74. )
  75.  
  76. ALTER TABLE თანამშრომლის_ტელეფონი
  77. ADD CONSTRAINT FK_თანამშრომლის_ტელეფონი
  78. FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
  79. REFERENCES თანამშრომელი(პირადი_ნომერი)
  80. ON DELETE cascade
  81. ON UPDATE cascade
  82.  
  83. ALTER TABLE თანამშრომლის_ტელეფონი
  84. DROP CONSTRAINT FK_თანამშრომლის_ტელეფონი
  85.  
  86. SELECT * FROM თანამშრომელი
  87. SELECT * FROM თანამშრომლის_მისამართი
  88. SELECT * FROM თანამშრომლის_ტელეფონი
  89.  
  90. INSERT INTO თანამშრომელი
  91. VALUES
  92.     (1111, N'ასლან', N'აბაშიძე', '1951-12-31', N'დირექტორი'),
  93.     (2222, N'იური', N'რუსიშვილი', '1975-07-08', N'მოადგილე'),
  94.    
  95.     (3333, N'ირაკლი', N'სხილაძე', '1987-11-28', N'ამწყობი'),
  96.     (4444, N'გიორგი', N'მიქაძე', '1982-07-25', N'ამწყობი'),
  97.     (5555, N'რამაზ', N'გიორგაძე', '1964-01-18', N'ამწყობი'),
  98.     (7777, N'ზურაბ', N'ფაფაიძე', '1990-05-22', N'ამწყობი')
  99.  
  100. INSERT INTO თანამშრომლის_მისამართი
  101. VALUES
  102.     (1111, N'თბილისი', N'დადიანი', 102, 12),
  103.     (2222, N'თბილისი', N'გურამიშვილი', 86, 7),
  104.     (3333, N'თბილისი', N'გურამიშვილი', 14, 1),
  105.     (4444, N'თბილისი', N'ბეჟანიშვილი', 25, 8),
  106.     (5555, N'თბილისი', N'ღრმაღელე', 9, 94),
  107.     (7777, N'თბილისი', N'წერეთელი', 32, 72)
  108.  
  109. INSERT INTO თანამშრომლის_ტელეფონი
  110. VALUES
  111.     (1111, '599123456'),
  112.     (1111, '577123456'),
  113.    
  114.     (2222, '591782314'),
  115.     (2222, '577782314'),
  116.     (2222, '575782314'),
  117.    
  118.     (3333, '599654321'),
  119.     (4444, '577112233'),
  120.     (5555, '591325127'),
  121.    
  122.     (7777, '597162873'),
  123.     (7777, '551232323')
  124.  
  125. -- SIMPLE JOIN (NOTHING SPECIAL)
  126. SELECT პირადი_ნომერი, თანამშრომლის_ტელეფონი.ტელეფონის_ნომერი
  127. FROM თანამშრომელი
  128. LEFT JOIN თანამშრომლის_ტელეფონი
  129. ON თანამშრომელი.პირადი_ნომერი=თანამშრომლის_ტელეფონი.ID
  130.  
  131. -- დავითვალოთ ვის რამდენი ტელეფონი აქვს:
  132. SELECT თანამშრომელი.პირადი_ნომერი AS [პირადი ნომერი], თანამშრომელი.სახელი, თანამშრომელი.გვარი, COUNT(თანამშრომლის_ტელეფონი.ID) AS [ტელეფონების რაოდენობა]
  133. FROM თანამშრომლის_ტელეფონი
  134. LEFT JOIN თანამშრომელი
  135. ON თანამშრომლის_ტელეფონი.ID=თანამშრომელი.პირადი_ნომერი
  136. GROUP BY პირადი_ნომერი, სახელი, გვარი
  137. ORDER BY COUNT(თანამშრომლის_ტელეფონი.ID) DESC -- კლებადობით დალაგება
  138.  
  139. -- END თანამშრომელი
  140. ------------------------------------------------------------------------------------------
  141. /*
  142.     არსი [მომწოდებელი]:
  143.         კომპოზიტური ატრიბუტით [მისამართი]
  144.         და მრავალმნიშვნელოვანი ატრიბუტით [ტელეფონი]
  145. */
  146. -- მომწოდებელი:
  147. IF OBJECT_ID(N'მომწოდებელი', 'u') IS NOT NULL
  148. DROP TABLE მომწოდებელი
  149. GO
  150. CREATE TABLE მომწოდებელი
  151. (
  152.     რეგისტრაციის_ნომერი  INT PRIMARY KEY IDENTITY(1, 1), /* <-IDENTITY გამოყენებულია აქ */
  153.     სახელი nvarchar(50),
  154.     ხელმძღვანელი nvarchar(50),
  155.     საკონტაქტო_პირი nvarchar(50)
  156.     --მისამართი
  157.     --ტელეფონი
  158. )
  159.  
  160. -- [მისამართი][1:1]:
  161. IF OBJECT_ID(N'მომწოდებლის_მისამართი', 'u') IS NOT NULL
  162. DROP TABLE მომწოდებლის_მისამართი
  163. GO
  164. CREATE TABLE მომწოდებლის_მისამართი
  165. (
  166.     ID INT UNIQUE, /* <-UNIQUE გამოყენებულია აქ */
  167.     ქალაქი nvarchar(50) DEFAULT(N'თბილისი'), /* <-DEFAULT გამოყენებულია აქ */
  168.     ქუჩა nvarchar(50)
  169. )
  170.  
  171. ALTER TABLE მომწოდებლის_მისამართი
  172. ADD CONSTRAINT FK_მომწოდებლის_მისამართი
  173. FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
  174. REFERENCES მომწოდებელი(რეგისტრაციის_ნომერი)
  175. ON UPDATE cascade
  176. ON DELETE cascade
  177.  
  178. ALTER TABLE მომწოდებლის_მისამართი
  179. DROP CONSTRAINT FK_მომწოდებლის_მისამართი
  180.  
  181. -- [ტელეფონი][1:N]:
  182. IF OBJECT_ID(N'მომწოდებლის_ტელეფონი', 'u') IS NOT NULL
  183. DROP TABLE მომწოდებლის_ტელეფონი
  184. GO
  185. CREATE TABLE მომწოდებლის_ტელეფონი
  186. (
  187.     ID INT,
  188.     ტელეფონის_ნომერი nvarchar(50)
  189. )
  190.  
  191. ALTER TABLE მომწოდებლის_ტელეფონი
  192. ADD CONSTRAINT FK_მომწოდებლის_ტელეფონი
  193. FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
  194. REFERENCES მომწოდებელი(რეგისტრაციის_ნომერი)
  195. ON UPDATE cascade
  196. ON DELETE cascade
  197.  
  198. ALTER TABLE მომწოდებლის_ტელეფონი
  199. DROP CONSTRAINT FK_მომწოდებლის_ტელეფონი
  200.  
  201. SELECT * FROM მომწოდებელი
  202. SELECT * FROM მომწოდებლის_მისამართი
  203. SELECT * FROM მომწოდებლის_ტელეფონი
  204.  
  205. INSERT INTO მომწოდებელი
  206. VALUES
  207.     ('ASUS', N'ნუგზარ ბლიაძე', N'ვიქტორა'),
  208.     ('NVIDIA', N'დავით გიორგაძე', N'ჯემალა'),
  209.     ('Intel', N'ჯემალი ფერაძე', N'მავთულა'),
  210.     ('AMD', N'ალექსანდრე გორდაძე', N'მჭედველა')
  211.  
  212. INSERT INTO მომწოდებლის_მისამართი
  213. VALUES
  214.     (1, N'თბილისი', N'დადიანი'),
  215.     (2, N'თბილისი', N'გურამიშვილი'),
  216.     (3, N'თბილისი', N'გურამიშვილი'),
  217.     (4, N'თბილისი', N'ბეჟანიშვილი')
  218.  
  219. INSERT INTO მომწოდებლის_ტელეფონი
  220. VALUES
  221.     (1, '599123456'),
  222.     (1, '577123456'),
  223.    
  224.     (2, '591782314'),
  225.     (2, '577782314'),
  226.     (2, '575782314'),
  227.    
  228.     (3, '599654321'),
  229.     (3, '577112233'),
  230.     (3, '591325127'),
  231.    
  232.     (4, '597162873'),
  233.     (4, '551232323')
  234.  
  235. -- END მომწოდებელი
  236. ------------------------------------------------------------------------------------------
  237. /*
  238.     არსი [კლიენტი]:
  239.         ქვეტიპებით[კლიენტი_იურიდიული_პირი] და [კლიენტი_ფიზიკური_პირი]
  240.         კომპოზიტური ატრიბუტით [მისამართი]
  241.         და მრავალმნიშვნელოვანი ატრიბუტით [ტელეფონი]
  242. */
  243. -- კლიენტი:
  244. IF OBJECT_ID(N'კლიენტი', 'u') IS NOT NULL
  245. DROP TABLE კლიენტი
  246. GO
  247. CREATE TABLE კლიენტი
  248. (
  249.     რეგისტრაციის_ნომერი  INT PRIMARY KEY IDENTITY(1, 1),/* <-PRIMARY KEY გამოყენებულია აქ */
  250.     კლიენტის_ტიპი nvarchar(50)
  251.     --მისამართი
  252.     --ტელეფონი
  253. )
  254.  
  255. -- [კლიენტი_იურიდიული_პირი][1:1]:
  256. IF OBJECT_ID(N'კლიენტი_იურიდიული_პირი', 'u') IS NOT NULL
  257. DROP TABLE კლიენტი_იურიდიული_პირი
  258. GO
  259. CREATE TABLE კლიენტი_იურიდიული_პირი
  260. (
  261.     სახელი nvarchar(50),
  262.     საგადასახადო_კოდი nvarchar(50),
  263.     ორგანიზაციის_ტიპი nvarchar(50),
  264.     ხელმძღვანელი nvarchar(50),
  265.     საკონტაქტო_პირი nvarchar(50),
  266.     რეგისტრაციის_ნომერი INT PRIMARY KEY /* <-PRIMARY KEY გამოყენებულია აქ */
  267. )
  268.  
  269. ALTER TABLE კლიენტი_იურიდიული_პირი
  270. ADD CONSTRAINT FK_კლიენტი_იურიდიული_პირი
  271. FOREIGN KEY (რეგისტრაციის_ნომერი) /* <-FOREIGN KEY გამოყენებულია აქ */
  272. REFERENCES კლიენტი(რეგისტრაციის_ნომერი)
  273. ON DELETE cascade
  274. ON UPDATE cascade
  275.  
  276. ALTER TABLE კლიენტი_იურიდიული_პირი
  277. DROP CONSTRAINT FK_კლიენტი_იურიდიული_პირი
  278.  
  279. -- [კლიენტი_ფიზიკური_პირი][1:1]:
  280. IF OBJECT_ID(N'კლიენტი_ფიზიკური_პირი', 'u') IS NOT NULL
  281. DROP TABLE კლიენტი_ფიზიკური_პირი
  282. GO
  283. CREATE TABLE კლიენტი_ფიზიკური_პირი
  284. (
  285.     პირადი_ნომერი INT,
  286.     სახელი nvarchar(50),
  287.     გვარი nvarchar(50),
  288.     რეგისტრაციის_ნომერი INT PRIMARY KEY /* <-PRIMARY KEY გამოყენებულია აქ */
  289. )
  290.  
  291. ALTER TABLE კლიენტი_ფიზიკური_პირი
  292. ADD CONSTRAINT FK_კლიენტი_ფიზიკური_პირი
  293. FOREIGN KEY (რეგისტრაციის_ნომერი) /* <-FOREIGN KEY გამოყენებულია აქ */
  294. REFERENCES კლიენტი(რეგისტრაციის_ნომერი)
  295. ON DELETE cascade
  296. ON UPDATE cascade
  297.  
  298. ALTER TABLE კლიენტი_ფიზიკური_პირი
  299. DROP CONSTRAINT FK_კლიენტი_ფიზიკური_პირი
  300.  
  301. -- [მისამართი][1:1]:
  302. IF OBJECT_ID(N'კლიენტის_მისამართი', 'u') IS NOT NULL
  303. DROP TABLE კლიენტის_მისამართი
  304. GO
  305. CREATE TABLE კლიენტის_მისამართი
  306. (
  307.     ID INT UNIQUE, /* <-UNIQUE გამოყენებულია აქ */
  308.     ქალაქი nvarchar(50) DEFAULT(N'თბილისი'), /* <-DEFAULT გამოყენებულია აქ */
  309.     ქუჩა nvarchar(50)
  310. )
  311.  
  312. ALTER TABLE კლიენტის_მისამართი
  313. ADD CONSTRAINT FK_კლიენტის_მისამართი
  314. FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
  315. REFERENCES კლიენტი(რეგისტრაციის_ნომერი)
  316. ON DELETE cascade
  317. ON UPDATE cascade
  318.  
  319. -- [ტელეფონი][1:N]:
  320. IF OBJECT_ID(N'კლიენტის_ტელეფონი', 'u') IS NOT NULL
  321. DROP TABLE კლიენტის_ტელეფონი
  322. GO
  323. CREATE TABLE კლიენტის_ტელეფონი
  324. (
  325.     ID INT,
  326.     ტელეფონის_ნომერი nvarchar(50)
  327. )
  328.  
  329. ALTER TABLE კლიენტის_ტელეფონი
  330. ADD CONSTRAINT FK_კლიენტის_ტელეფონი
  331. FOREIGN KEY (ID) /* <-FOREIGN KEY გამოყენებულია აქ */
  332. REFERENCES კლიენტი(რეგისტრაციის_ნომერი)
  333. ON DELETE cascade
  334. ON UPDATE cascade
  335.  
  336. INSERT INTO კლიენტი
  337. VALUES
  338.     (N'ფიზიკური პირი'),
  339.     (N'ფიზიკური პირი'),
  340.     (N'ფიზიკური პირი'),
  341.     (N'იურიდიული პირი')
  342.  
  343. INSERT INTO კლიენტი_ფიზიკური_პირი
  344. VALUES
  345.     (1111, N'გიორგი', N'აზუბაშვილი', 1),
  346.     (2222, N'დავით', N'დადოშვილი', 2),
  347.     (3333, N'ალეკო', N'პაპაშვილი', 3)
  348.    
  349. INSERT INTO კლიენტი_იურიდიული_პირი
  350. VALUES
  351.     (N'ტექნობუმი', '5923872364', N'მაღაზია', N'ირაკლი ხუჭუა', N'ნოდარა', 4)
  352.  
  353. SELECT * FROM კლიენტი
  354. SELECT * FROM კლიენტი_ფიზიკური_პირი
  355. SELECT * FROM კლიენტი_იურიდიული_პირი
  356.  
  357. INSERT INTO კლიენტის_მისამართი
  358. VALUES
  359.     (1, N'თბილისი', N'დადიანი'),
  360.     (2, N'თბილისი', N'გურამიშვილი'),
  361.     (3, N'თბილისი', N'გურამიშვილი'),
  362.     (4, N'თბილისი', N'ბეჟანიშვილი')
  363.  
  364. INSERT INTO კლიენტის_ტელეფონი
  365. VALUES
  366.     (1, '599123456'),
  367.     (1, '577123456'),
  368.    
  369.     (2, '591782314'),
  370.     (2, '577782314'),
  371.     (2, '575782314'),
  372.    
  373.     (3, '599654321'),
  374.     (3, '577112233'),
  375.     (3, '591325127'),
  376.    
  377.     (4, '597162873'),
  378.     (4, '551232323')
  379.  
  380. SELECT * FROM კლიენტი
  381. SELECT * FROM კლიენტის_მისამართი
  382. SELECT * FROM კლიენტის_ტელეფონი
  383.  
  384. -- მაჩვენე 'ფიზიკური პირები' მთლიანად
  385. SELECT * FROM კლიენტი
  386. INNER JOIN კლიენტი_ფიზიკური_პირი
  387. ON კლიენტი.რეგისტრაციის_ნომერი=კლიენტი_ფიზიკური_პირი.რეგისტრაციის_ნომერი
  388. WHERE კლიენტი.კლიენტის_ტიპი=N'ფიზიკური პირი'
  389.  
  390. -- მაჩვენე 'იურიდიული პირები' მთლიანად
  391. SELECT * FROM კლიენტი
  392. INNER JOIN კლიენტი_იურიდიული_პირი
  393. ON კლიენტი.რეგისტრაციის_ნომერი=კლიენტი_იურიდიული_პირი.რეგისტრაციის_ნომერი
  394. WHERE კლიენტი.კლიენტის_ტიპი=N'იურიდიული პირი'
  395.  
  396. -- END კლიენტი
  397. ------------------------------------------------------------------------------------------
  398. /*
  399.     არსი [ნაწილები]:
  400. */
  401. -- ნაწილები:
  402. IF OBJECT_ID(N'ნაწილები', 'u') IS NOT NULL
  403. DROP TABLE ნაწილები
  404. GO
  405. CREATE TABLE ნაწილები
  406. (
  407.     ნაწილის_კოდი  INT PRIMARY KEY IDENTITY(1, 1), /* <-PRIMARY KEY გამოყენებულია აქ */
  408.     დასახელება nvarchar(50),
  409.     --იყენებს_ID int,
  410.     --აწვდის_ID int not null
  411. )
  412.  
  413. INSERT INTO ნაწილები
  414. VALUES
  415.     (N'პროცესორი'),
  416.     (N'დედაპლატა'),
  417.     (N'ქულერი'),
  418.     (N'პროცესორი'),
  419.     (N'ქეისი')
  420.    
  421. SELECT * FROM ნაწილები
  422.  
  423. -- END ნაწილები
  424. ------------------------------------------------------------------------------------------
  425. /*
  426.     არსი [პროდუქტი]:
  427. */
  428. -- პროდუქტი:
  429. IF OBJECT_ID(N'პროდუქტი', 'u') IS NOT NULL
  430. DROP TABLE პროდუქტი
  431. GO
  432. CREATE TABLE პროდუქტი
  433. (
  434.     პროდუქტის_კოდი  INT PRIMARY KEY IDENTITY(1, 1), /* <-PRIMARY KEY გამოყენებულია აქ */
  435.     დასახელება nvarchar(50),
  436.     გაკეთების_თარიღი DATE,
  437.     გარანტია DATE,
  438.     ფასი money
  439. )
  440.  
  441. -- END პროდუქტი
  442. ------------------------------------------------------------------------------------------
  443. /*
  444. კავშირები:
  445.     თანამშრომელი <პასუხს_აგებს> პროდუქტი 1:N
  446.     თანამშრომელი <ამზადებს> პროდუქტი (თარიღი, კოდი) 1:N
  447.     თანამშრომელი <იყენებს> ნაწილები (რაოდენობა) 1:N
  448.     მომწოდებელი <აწვდის> ნაწილები (რაოდენობა) 1:N
  449.     კლიენტი <უკვეთავს> პროდუქტი (შეკვეთის_თარიღი, შეკვეთის_ნომერი) N:M
  450. */
  451.  
  452. -- თანამშრომელი <პასუხს_აგებს> პროდუქტი 1:N
  453. ALTER TABLE პროდუქტი
  454. DROP COLUMN პასუხს_აგებს_ID
  455.  
  456. ALTER TABLE პროდუქტი
  457. ADD პასუხს_აგებს_ID INT
  458.  
  459. ALTER TABLE პროდუქტი
  460. ADD CONSTRAINT FK_პასუხს_აგებს
  461. FOREIGN KEY (პასუხს_აგებს_ID) /* <-FOREIGN KEY გამოყენებულია აქ */
  462. REFERENCES თანამშრომელი(პირადი_ნომერი)
  463. ON DELETE cascade
  464. ON UPDATE cascade
  465.  
  466. ALTER TABLE პროდუქტი
  467. DROP CONSTRAINT FK_პასუხს_აგებს
  468.  
  469. SELECT * FROM პროდუქტი
  470.  
  471. -- თანამშრომელი <ამზადებს> პროდუქტი (თარიღი, კოდი) 1:N
  472. IF OBJECT_ID(N'ამზადებს', 'u') IS NOT NULL
  473. DROP TABLE ამზადებს
  474. GO
  475. CREATE TABLE ამზადებს
  476. (
  477.     დამზადების_თარიღი DATE,
  478.     დამზადების_კოდი INT,
  479.     პირადი_ნომერი INT UNIQUE FOREIGN KEY REFERENCES თანამშრომელი (პირადი_ნომერი) NOT NULL,
  480.     პროდუქტის_კოდი INT FOREIGN KEY REFERENCES პროდუქტი (პროდუქტის_კოდი) NOT NULL
  481. )
  482.  
  483. -- თანამშრომელი <იყენებს> ნაწილები (რაოდენობა) 1:N
  484. IF OBJECT_ID(N'იყენებს', 'u') IS NOT NULL
  485. DROP TABLE იყენებს
  486. GO
  487. CREATE TABLE იყენებს
  488. (
  489.     რაოდენობა INT NOT NULL,
  490.     პირადი_ნომერი INT FOREIGN KEY REFERENCES თანამშრომელი (პირადი_ნომერი) NOT NULL,
  491.     ნაწილის_კოდი INT FOREIGN KEY REFERENCES ნაწილები (ნაწილის_კოდი) NOT NULL
  492. )
  493.  
  494. -- მომწოდებელი <აწვდის> ნაწილები (რაოდენობა) 1:N
  495. IF OBJECT_ID(N'აწვდის', 'u') IS NOT NULL
  496. DROP TABLE აწვდის
  497. GO
  498. CREATE TABLE აწვდის
  499. (
  500.     რაოდენობა INT NOT NULL,
  501.     რეგისტრაციის_ნომერი INT FOREIGN KEY REFERENCES მომწოდებელი (რეგისტრაციის_ნომერი) NOT NULL,
  502.     ნაწილის_კოდი INT FOREIGN KEY REFERENCES ნაწილები (ნაწილის_კოდი) NOT NULL
  503. )
  504.  
  505. -- კლიენტი <უკვეთავს> პროდუქტი (შეკვეთის_თარიღი, შეკვეთის_ნომერი) N:M
  506. IF OBJECT_ID(N'უკვეთავს', 'u') IS NOT NULL
  507. DROP TABLE უკვეთავს
  508. GO
  509. CREATE TABLE უკვეთავს
  510. (
  511.     შეკვეთის_ნომერი INT PRIMARY KEY IDENTITY(1, 1), /* <-PRIMARY KEY გამოყენებულია აქ */
  512.     შეკვეთის_თარიღი DATE,
  513.     პროდუქტი_ID INT FOREIGN KEY REFERENCES პროდუქტი(პროდუქტის_კოდი) NOT NULL,
  514.     კლიენტი_ID INT FOREIGN KEY REFERENCES კლიენტი(რეგისტრაციის_ნომერი) NOT NULL
  515. )
  516. ------------------------------------------------------------------------------------------
  517.  
  518. -- თანამშრომლის დამატება [თანამშრომელი ცხრილში]:
  519. IF OBJECT_ID(N'ამწყობის_შეყვანა', 'p') IS NOT NULL
  520. DROP PROCEDURE ამწყობის_შეყვანა
  521. GO
  522. CREATE PROCEDURE ამწყობის_შეყვანა
  523.     @პირადი_ნომერი INT,
  524.     @სახელი nvarchar(50),
  525.     @გვარი nvarchar(50),
  526.     @დაბადების_თარიღი DATE
  527. --  @თანამდებობა nvarchar(50)
  528. AS
  529. INSERT INTO თანამშრომელი
  530. VALUES
  531.     (@პირადი_ნომერი,@სახელი,@გვარი,@დაბადების_თარიღი, N'ამწყობი')
  532.  
  533. EXECUTE ამწყობის_შეყვანა  8888, N'ვახტანგ', N'ლალუაშვილი', '1993-05-14'
  534. SELECT * FROM თანამშრომელი
  535.  
  536. -- თანამშრომლის წაშლა სახელისა და გვარის მიხედვით [თანამშრომელი ცხრილიდან]:
  537. IF OBJECT_ID(N'თანამშრომლის_წაშლა', 'p') IS NOT NULL
  538. DROP PROCEDURE თანამშრომლის_წაშლა
  539. GO
  540. CREATE PROCEDURE თანამშრომლის_წაშლა  @name nvarchar(50), @surname nvarchar(50)
  541. AS
  542. BEGIN
  543.     DELETE FROM თანამშრომელი
  544.     WHERE თანამშრომელი.სახელი=@name AND თანამშრომელი.გვარი=@surname
  545. END
  546.  
  547. EXECUTE თანამშრომლის_წაშლა N'ვახტანგ', N'ლალუაშვილი'
  548. SELECT * FROM თანამშრომელი
  549.  
  550. -- ჩვენება ამწყობი თანამშრომლებისა [თანამშრომლები ცხრილიდან]
  551. IF OBJECT_ID(N'მაჩვენე_ამწყობი_თანამშრომლები', 'p') IS NOT NULL
  552. DROP PROCEDURE მაჩვენე_ამწყობი_თანამშრომლები
  553. GO
  554. CREATE PROCEDURE მაჩვენე_ამწყობი_თანამშრომლები
  555. AS
  556. SELECT * FROM თანამშრომელი
  557. WHERE თანამდებობა=N'ამწყობი'
  558. ORDER BY პირადი_ნომერი
  559.  
  560. EXEC მაჩვენე_ამწყობი_თანამშრომლები
  561.  
  562. -- TRIGGERS:
  563. IF OBJECT_ID('ფიზიკური_პირის_წაშლის_შეფერხება', 'tr') IS NOT NULL
  564. DROP TRIGGER ფიზიკური_პირის_წაშლის_შეფერხება
  565. GO
  566. CREATE TRIGGER ფიზიკური_პირის_წაშლის_შეფერხება
  567. ON კლიენტი_ფიზიკური_პირი
  568. after DELETE
  569. AS
  570. print(N'შეცდომა! არ შეგიძლიათ კლიენტის ქვეტიპის წაშლა.');
  571. ROLLBACK tran -- მოქმედების უკან დაბრუნება
  572.  
  573. DELETE FROM კლიენტი_ფიზიკური_პირი WHERE სახელი=N'იგორა'
  574. --
  575. IF OBJECT_ID('იურიდიული_პირის_წაშლის_შეფერხება', 'tr') IS NOT NULL
  576. DROP TRIGGER იურიდიული_პირის_წაშლის_შეფერხება
  577. GO
  578. CREATE TRIGGER იურიდიული_პირის_წაშლის_შეფერხება
  579. ON კლიენტი_იურიდიული_პირი
  580. after DELETE
  581. AS
  582. print(N'შეცდომა! არ შეგიძლიათ კლიენტის ქვეტიპის წაშლა.');
  583. ROLLBACK tran -- მოქმედების უკან დაბრუნება
  584.  
  585. DELETE FROM კლიენტი_იურიდიული_პირი WHERE სახელი=N'ALTA'
  586.  
  587. -- ფუნქციები:
  588. print(getdate());
  589. print(CONVERT(DATE, getdate()));
  590. print(CONVERT(TIME, getdate()));
  591.  
  592. print(ascii('a'));
  593.  
  594. print(len('vakho'));
  595. print(UPPER('vakho'));
  596. print(LOWER('VAKHO'));
  597.  
  598. print(rtrim('vakho   ') + 'asd');
  599. print(ltrim('    vakho'));
  600. print('a' + ltrim(rtrim('     vakho   ')) + 'a');
  601.  
  602. print(CAST('15' AS INT) + 17);
Advertisement
Add Comment
Please, Sign In to add comment