Advertisement
Dimique

Untitled

May 23rd, 2020
2,252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.84 KB | None | 0 0
  1. -- Лабораторная работа №3, дисциплина "Базы данных", СПбГУАП, весенний семестр 2020
  2. -- Fedoriy D.A.//4742
  3.  
  4. -- Включение форсирования ограничений ссылочной целостности
  5. PRAGMA foreign_keys = ON;
  6.  
  7. -- ОХимия схемы данных
  8. -- DROP TABLE IF EXISTS Table1 ...
  9. -- ваш код здесь!
  10. DROP TABLE IF EXISTS Клиент;
  11. DROP TABLE IF EXISTS Заказ;
  12. DROP TABLE IF EXISTS Сотрудник;
  13. DROP TABLE IF EXISTS Материал;
  14. DROP TABLE IF EXISTS Тип;
  15. DROP TABLE IF EXISTS Вещь;
  16. DROP TABLE IF EXISTS Результат;
  17. DROP TABLE IF EXISTS Попытка;
  18. DROP TABLE IF EXISTS ХимияДляПопытки;
  19. DROP TABLE IF EXISTS Химия;
  20. -- Конец очистки
  21.  
  22. -- Создание схемы данных
  23. -- CREATE TABLE Table1 ...
  24. CREATE TABLE Клиент (
  25. Телефон CHAR(12) NOT NULL,
  26. ФИО VARCHAR(40) NOT NULL,
  27. ДатаРождения DATE NOT NULL,
  28. Пол CHAR(1),
  29. Email VARCHAR(40),
  30. PRIMARY KEY(Телефон));
  31.  
  32. CREATE TABLE Сотрудник (
  33. id INTEGER NOT NULL CHECK (id>0),
  34. ФИ VARCHAR(30) NOT NULL,
  35. Материал VARCHAR(80) NOT NULL,
  36. Оклад DECIMAL(10,2) NOT NULL CHECK (Оклад>0),
  37. PRIMARY KEY(id));
  38.  
  39. CREATE TABLE Заказ (
  40. Стоимость DECIMAL(10,2) NOT NULL CHECK (Стоимость > Компенсация),
  41. ТелефонКлиента CHAR(12) NOT NULL REFERENCES Клиент(Телефон),
  42. КодСотрудника INTEGER NOT NULL REFERENCES Сотрудник(id),
  43. ПриемЗаказа DATE NOT NULL,
  44. ФактДата DATE NOT NULL CHECK (ФактДата > DATE(ПриемЗаказа, '+ 2 DAY')),
  45. НомерЗаказа INTEGER NOT NULL,
  46. Компенсация DECIMAL(10,2) NOT NULL,
  47. PRIMARY KEY(НомерЗаказа));
  48.  
  49.  
  50. CREATE TABLE Материал (
  51. МатериалВещи VARCHAR(20) NOT NULL,
  52. КомпенсацияМатериала DECIMAL(10,2) NOT NULL,
  53. PRIMARY KEY(МатериалВещи));
  54.  
  55. CREATE TABLE Тип (
  56. ТипВещи VARCHAR(20) NOT NULL,
  57. МатериалВещи VARCHAR(20) NOT NULL REFERENCES Материал(МатериалВещи),
  58. КоэффКомпенсации DECIMAL(10,2) NOT NULL,
  59. ТребованияОбработки CHAR(25) NOT NULL,
  60. PRIMARY KEY(ТипВещи, МатериалВещи),
  61. FOREIGN KEY (МатериалВещи) REFERENCES Материал(МатериалВещи));
  62.  
  63. CREATE TABLE Вещь (
  64. КодЗаказа INTEGER NOT NULL,
  65. Наименование INTEGER NOT NULL,
  66. ТипВещи VARCHAR(20) NOT NULL,
  67. МатериалВещи VARCHAR (20) NOT NULL,
  68. PRIMARY KEY (КодЗаказа, Наименование),
  69. FOREIGN KEY (КодЗаказа) REFERENCES Заказ(НомерЗаказа),
  70. FOREIGN KEY (ТипВещи) REFERENCES Тип(ТипВещи),
  71. FOREIGN KEY (МатериалВещи) REFERENCES Тип(МатериалВещи));
  72.  
  73. CREATE TABLE Результат (
  74. Результат VARCHAR(35) NOT NULL PRIMARY KEY);
  75.  
  76. CREATE TABLE Попытка (
  77. КодСотрудника INTEGER NOT NULL,
  78. НомерПопытки INTEGER NOT NULL,
  79. ДатаПопытки DATE NOT NULL,
  80. КодЗаказа INTEGER NOT NULL,
  81. НаименованиеВещи INTEGER NOT NULL,
  82. РезультатДляВещи VARCHAR(30) NOT NULL,
  83. PRIMARY KEY(НомерПопытки, КодЗаказа, НаименованиеВещи),
  84. FOREIGN KEY (КодСотрудника) REFERENCES Сотрудник(id),
  85. FOREIGN KEY (КодЗаказа) REFERENCES Вещь(НомерЗаказа),
  86. FOREIGN KEY (НаименованиеВещи) REFERENCES Вещь(Наименование),
  87. FOREIGN KEY (РезультатДляВещи) REFERENCES Результат(Результат));
  88.  
  89.  
  90. CREATE TABLE Химия (
  91. Название VARCHAR(30) NOT NULL,
  92. PRIMARY KEY(Название));
  93.  
  94. CREATE TABLE ХимияДляПопытки (
  95. Название VARCHAR(30) NOT NULL,
  96. НомерПопытки INTEGER NOT NULL,
  97. КодЗаказа INTEGER NOT NULL,
  98. НаименованиеВещи INTEGER NOT NULL,
  99. FOREIGN KEY (НомерПопытки) REFERENCES Попытка(НомерПопытки),
  100. FOREIGN KEY (КодЗаказа) REFERENCES Попытка(НомерЗаказа),
  101. FOREIGN KEY (НаименованиеВещи) REFERENCES Попытка(Наименование),
  102. FOREIGN KEY (Название) REFERENCES Химия(Название));
  103. -- Конец заполнения схем данных
  104.  
  105. -- Заполнение данными
  106. -- INSERT INTO Table1 ...
  107. INSERT INTO Клиент VALUES ('+79041315574','Андреев И.О.','13.05.1990','М','AndDrey@gmail.com');
  108. INSERT INTO Клиент VALUES ('+79649167692','Морозов А.В.','01.01.1999','М','Anatoliy72rus@tripper.ya');
  109.  
  110. INSERT INTO Сотрудник VALUES ('Григорий','1337','Оператор утюга','73000,00');
  111. INSERT INTO Сотрудник VALUES ('Форман И.В','4444','Рабочий сферы обслуживания','20000,00');
  112.  
  113. INSERT INTO Заказ VALUES ('120,00','+79041315574','1337','13.05.2020','17.05.2020','10','70,00');
  114. INSERT INTO Заказ VALUES ('500,00','+79649167692','4444','08.05.2020','12.05.2020','20','200,00');
  115.  
  116. INSERT INTO Материал VALUES ('Шелк','1200,00');
  117. INSERT INTO Материал VALUES ('Полиэстер','180,00');
  118. INSERT INTO Материал VALUES ('Шерсть','750,00');
  119.  
  120. INSERT INTO Тип VALUES ('Пальто','Шерсть','4,75','Не утюжить');
  121. INSERT INTO Тип VALUES ('Шарф','Шелк','0,73','Не более 30 гр.');
  122. INSERT INTO Тип VALUES ('Штаны','Полиэстер','1,3','Холодная вода, не утюжить');
  123.  
  124. INSERT INTO Вещь VALUES ('10','17856','Шарф','Шелк','Вещь очищена');
  125. INSERT INTO Вещь VALUES ('20','12864','Штаны','Полиэстер','Вещь испорчена');
  126.  
  127. INSERT INTO Результат VALUES ('Вещь испорчена');
  128. INSERT INTO Результат VALUES ('Вещь очищена');
  129. INSERT INTO Результат VALUES ('Очистить не удалось, но и хуже не стало');
  130.  
  131. INSERT INTO Попытка VALUES ('4444','1','09.05.2020','20','12864','Вещь испорчена');
  132. INSERT INTO Попытка VALUES ('1337','5','14.05.2020','10','17856','Вещь очищена');
  133.  
  134. INSERT INTO Химия VALUES ('Dr.Schnell для ковров');
  135. INSERT INTO Химия VALUES ('Pramol антивспениватель');
  136. INSERT INTO Химия VALUES ('Solemate');
  137. INSERT INTO Химия VALUES ('Tapi-3000');
  138. INSERT INTO Химия VALUES ('Белизна');
  139.  
  140. INSERT INTO ХимияДляПопытки VALUES ('Solemate','5','10','17856');
  141. INSERT INTO ХимияДляПопытки VALUES ('Tapi-3000','1','20','12864');
  142. -- Конец заполнения данных
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement