prestige

Lab1_BD

May 16th, 2012
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 4.69 KB | None | 0 0
  1. GO
  2. USE master
  3. GO
  4. IF EXISTS (SELECT * from sys.databases where name='moedata')
  5.         DROP DATABASE moedata
  6. GO
  7. CREATE DATABASE moedata
  8. GO
  9. ALTER DATABASE moedata SET MULTI_USER
  10. GO
  11. USE moedata
  12. GO
  13. if OBJECT_ID('f1','function') is not null
  14.     drop function dbo.f1
  15. go
  16. create function dbo.f1(@chislo int)
  17. returns bit
  18. as
  19.     begin
  20.         declare @flag bit=0
  21.         declare @a nvarchar(10)
  22.         set @a=Convert(nvarchar(10),@chislo)
  23.         if @a like '%0%'
  24.             set @flag=1
  25.             return @flag
  26.     end
  27. go
  28. if OBJECT_ID('f2','function') is not null
  29.     drop function dbo.f2
  30. go
  31. create function dbo.f2(@phone nvarchar(9))
  32. returns bit
  33. as
  34.   begin
  35.     declare @flag bit='false'
  36.     declare @sum int=0
  37.     set @sum=@sum+SUBSTRING(@phone,1,1)+SUBSTRING(@phone,2,1)+SUBSTRING(@phone,3,1)+
  38.     +SUBSTRING(@phone,5,1)+SUBSTRING(@phone,6,1)+SUBSTRING(@phone,8,1)+SUBSTRING(@phone,9,1)
  39.     set @sum=@sum%2
  40.     if (@sum)=1
  41.         set @flag='true'
  42.     return @flag
  43.   end
  44. go
  45. if OBJECT_ID('f3','function') is not null
  46.     drop function dbo.f3
  47. go
  48. create function dbo.f3(@fam nvarchar(25))
  49. returns bit
  50. as
  51.   begin
  52.     declare @flag bit='false'
  53.     declare @i int=1
  54.     declare @cc int=0
  55.     declare @dfg nvarchar(1)
  56.     while @i<25
  57.     begin
  58.         set @dfg=substring(@fam,@i,1)
  59.         if(substring(@fam,@i,1) like'[ёуеэоаяию]')
  60.         begin
  61.             set @cc=@cc+1
  62.         end
  63.         set @i=@i+1
  64.     end
  65.     if(@cc<6)
  66.         set @flag='true'
  67.     return @flag
  68.   end
  69. go
  70. if OBJECT_ID('f4','function') is not null
  71.     drop function dbo.f4
  72. go
  73. create function dbo.f4(@fam nvarchar(7))
  74. returns bit
  75. as
  76.   begin
  77.     declare @flag bit='false'
  78.     declare @i int=1
  79.     declare @cc int=0
  80.     while @i<=LEN(@fam)
  81.     begin
  82.         if(substring(@fam,@i,1) like'/')
  83.          set @cc=@cc+1
  84.          set @i=@i+1
  85.     end
  86.     if @cc<2
  87.         set @flag='true'
  88.     return @flag
  89.   end
  90. go
  91. if OBJECT_ID('f5','function') is not null
  92.     drop function dbo.f5
  93. go
  94. create function dbo.f5(@fam nvarchar(7))
  95. returns bit
  96. as
  97.   begin
  98.     declare @flag bit='false'
  99.     declare @i int=1
  100.     declare @cc int=0
  101.     while @i<=LEN(@fam)
  102.     begin
  103.         if(substring(@fam,@i,1) like'[^0-9]')
  104.          set @cc=@cc+1
  105.          set @i=@i+1
  106.     end
  107.     if @cc=0
  108.         set @flag='true'
  109.     return @flag
  110.   end
  111. go
  112. if OBJECT_ID('f6','function') is not null
  113.     drop function dbo.f6
  114. go
  115. create function dbo.f6(@fam nvarchar(7))
  116. returns bit
  117. as
  118.   begin
  119.     declare @flag bit='false'
  120.     declare @i int=1
  121.     declare @cc int=0
  122.     while @i<=LEN(@fam)
  123.     begin
  124.         if(substring(@fam,@i,1) like'[0-9]')
  125.          set @cc=@cc+1
  126.          set @i=@i+1
  127.     end
  128.     if @cc=LEN(@fam)-1 and substring(@fam,LEN(@fam),1) like'[а-я]'
  129.         set @flag='true'
  130.     return @flag
  131.   end
  132. go
  133. CREATE TABLE Street
  134. (StreetId int NOT NULL identity(1,1)PRIMARY KEY,
  135. Name nvarchar(25) NOT NULL)
  136. GO
  137. CREATE TABLE Fam
  138. (FamId int NOT NULL identity(1,1) PRIMARY KEY,
  139. Name nvarchar(25) NOT NULL check(dbo.f3(Name)='true'))--Name not like '%[яиюэоауеё]%[яиюэоауеё]%[яиюэоауёе]%[яиюэёоауе]%[яиёюэоауе]%[яиюэоаёуе]%'))
  140. GO
  141. INSERT INTO Fam(Name)
  142.          VALUES ('Яблочных')
  143. INSERT INTO Fam(Name)
  144.          VALUES ('Апельсинов')
  145. INSERT INTO Fam(Name)
  146.          VALUES ('Виноградов')
  147. INSERT INTO Fam(Name)
  148.          VALUES ('Грушев')
  149. INSERT INTO Fam(Name)
  150.          VALUES ('Арбузова')
  151. insert into Fam(Name) values('eeeeeее')
  152. GO
  153. CREATE TABLE Subscriber
  154. (SubscriberId int NOT NULL identity(1,1) Primary Key,
  155. PhoneNumber nvarchar(9) check(PhoneNumber like'[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]' and dbo.f2(PhoneNumber)='true'),
  156. FamId int NOT NULL,
  157. Iniz nvarchar(4),
  158. Indeks nvarchar(5),
  159. StreetId int NOT NULL,
  160. HouseNumber nvarchar(7) check (dbo.f4(HouseNumber)='true' or dbo.f5(HouseNumber)='true' or dbo.f6(HouseNumber)='true'),-- check(not like '%/%/%' or like'[0-9][0-9][0-9][0-9]' or like''),
  161. FlatNumber int check(dbo.f1(FlatNumber)='true'),
  162. Sex nvarchar(1),
  163. FOREIGN KEY (FamID) REFERENCES Fam(FamId),
  164. FOREIGN KEY (StreetId) REFERENCES Street(StreetId))
  165. GO
  166. INSERT INTO Street(Name)
  167.                  VALUES ('Пушкинская')
  168. INSERT INTO Street(Name)
  169.                  VALUES ('Лермонтовская')
  170. INSERT INTO Street(Name)
  171.                  VALUES ('Чуковская')
  172. INSERT INTO Street(Name)
  173.                  VALUES ('Толкиенская')
  174.                  
  175. go            
  176. INSERT INTO Subscriber(PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  177.          VALUES ('777-77-77',1, 'А.А.','61005',2, '13а',30,'М')
  178. INSERT INTO Subscriber(PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  179.          VALUES ('999-99-99',2, 'Р.В', '61005', 1,'1/2',40,'М')
  180. INSERT INTO Subscriber(PhoneNumber, FamId, Iniz,Indeks,StreetId, HouseNumber, FlatNumber, Sex)
  181.          VALUES ('555-55-55',1, 'Р.В', '61005', 1,'1',405,'М')        
  182. go
  183. select * from Subscriber
  184. go
Advertisement
Add Comment
Please, Sign In to add comment