Bazy danych projekt Piotr Musiel 184812

­­Bazy dany 2 – projekt.

Apteka.

































Autor: Piotr Musiel 184812

Prowadzący: Dr inż. Robert Burduk






  1. Temat oraz cel zastosowania bazy danych.

  1. Zakres i kontekst projektu.

  1. Wymagania funkcjonalne.


  1. Model logiczny bazy danych.

    1. Metodyka oraz notacja.

Poniżej zostało przedstawione ogólny sposób oznaczania związków w systemach bazodanowych.


Poniższe symbole związków występują w opracowanym diagramie ERD.




    1. Model związków encji


Diagram ERD bazy danych dla Apteki.


    1. Określenie reguł poprawności:


  1. Model implementacyjny

    1. Wyzwalacz

W celu udoskonalenia działania bazy danych został stworzony wyzwalacz. Wyzwalacz został zaimplementowany dal tabeli Zamówienie i ma on na celu nie dopuścić do tego, aby jednocześnie lek_id i recepta_id były większe od zera oraz aby nie były one jednocześnie NULL..


alter TRIGGER dbo.[test]

ON dbo.Zamowienie

for INSERT

AS

declare @lek int;

declare @rec int;

declare @licz int;

select @lek = i.lek_id from inserted i;

select @rec = i.recepta_id from inserted i;

select @licz = i.zam_ID from inserted i;

IF @lek > 0 AND @rec is null

begin

PRINT 'Zamówienie wprowadzono poprawnie'

end

if @lek is null AND @rec > 0 begin

PRINT 'Zamówienie wprowadzono poprawnie'

end

if @lek >0 AND @rec > 0 begin

PRINT 'Nieprawidłowe zamówienie'

DELETE FROM dbo.Zamowienie WHERE zam_ID = @licz

end

if @lek is null AND @rec is null begin

PRINT 'Nieprawidłowe zamówienie'

DELETE FROM dbo.Zamowienie WHERE zam_ID = @licz

end





    1. Test wyzwalacza


W ramach testu wprowadzono następujące komendy.



USE [Apteka]

GO


INSERT INTO [dbo].[Zamowienie] ([lek_id],[recepta_id] ,[pracownik_id])

VALUES (1,null,3)

INSERT INTO [dbo].[Zamowienie] ([lek_id],[recepta_id] ,[pracownik_id])

VALUES (null,2,2)

INSERT INTO [dbo].[Zamowienie] ([lek_id],[recepta_id] ,[pracownik_id])

VALUES (1,1,1)


INSERT INTO [dbo].[Zamowienie] ([lek_id],[recepta_id] ,[pracownik_id])

VALUES (null,null,3)

GO




Otrzymane informacje po uruchomieniu komendy.





Podgląd tabeli po wprowadzeniu komedy:

SELECT *

FROM [Apteka].[dbo].[Zamowienie]



    1. Implementacja.

Poniżej została zaprezentowana baza danych przy użyciu kodu SQL.



USE [master]

GO

/****** Object: Database [Apteka] Script Date: 2013-06-10 01:32:10 ******/

CREATE DATABASE [Apteka]

CONTAINMENT = NONE

ON PRIMARY

( NAME = N'Apteka', FILENAME = N'E:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Apteka.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )

LOG ON

( NAME = N'Apteka_log', FILENAME = N'E:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Apteka_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)

GO

ALTER DATABASE [Apteka] SET COMPATIBILITY_LEVEL = 110

GO

IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))

begin

EXEC [Apteka].[dbo].[sp_fulltext_database] @action = 'enable'

end

GO

ALTER DATABASE [Apteka] SET ANSI_NULL_DEFAULT OFF

GO

ALTER DATABASE [Apteka] SET ANSI_NULLS OFF

GO

ALTER DATABASE [Apteka] SET ANSI_PADDING OFF

GO

ALTER DATABASE [Apteka] SET ANSI_WARNINGS OFF

GO

ALTER DATABASE [Apteka] SET ARITHABORT OFF

GO

ALTER DATABASE [Apteka] SET AUTO_CLOSE OFF

GO

ALTER DATABASE [Apteka] SET AUTO_CREATE_STATISTICS ON

GO

ALTER DATABASE [Apteka] SET AUTO_SHRINK OFF

GO

ALTER DATABASE [Apteka] SET AUTO_UPDATE_STATISTICS ON

GO

ALTER DATABASE [Apteka] SET CURSOR_CLOSE_ON_COMMIT OFF

GO

ALTER DATABASE [Apteka] SET CURSOR_DEFAULT GLOBAL

GO

ALTER DATABASE [Apteka] SET CONCAT_NULL_YIELDS_NULL OFF

GO

ALTER DATABASE [Apteka] SET NUMERIC_ROUNDABORT OFF

GO

ALTER DATABASE [Apteka] SET QUOTED_IDENTIFIER OFF

GO

ALTER DATABASE [Apteka] SET RECURSIVE_TRIGGERS OFF

GO

ALTER DATABASE [Apteka] SET DISABLE_BROKER

GO

ALTER DATABASE [Apteka] SET AUTO_UPDATE_STATISTICS_ASYNC OFF

GO

ALTER DATABASE [Apteka] SET DATE_CORRELATION_OPTIMIZATION OFF

GO

ALTER DATABASE [Apteka] SET TRUSTWORTHY OFF

GO

ALTER DATABASE [Apteka] SET ALLOW_SNAPSHOT_ISOLATION OFF

GO

ALTER DATABASE [Apteka] SET PARAMETERIZATION SIMPLE

GO

ALTER DATABASE [Apteka] SET READ_COMMITTED_SNAPSHOT OFF

GO

ALTER DATABASE [Apteka] SET HONOR_BROKER_PRIORITY OFF

GO

ALTER DATABASE [Apteka] SET RECOVERY FULL

GO

ALTER DATABASE [Apteka] SET MULTI_USER

GO

ALTER DATABASE [Apteka] SET PAGE_VERIFY CHECKSUM

GO

ALTER DATABASE [Apteka] SET DB_CHAINING OFF

GO

ALTER DATABASE [Apteka] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF )

GO

ALTER DATABASE [Apteka] SET TARGET_RECOVERY_TIME = 0 SECONDS

GO

EXEC sys.sp_db_vardecimal_storage_format N'Apteka', N'ON'

GO

USE [Apteka]

GO

/****** Object: Table [dbo].[Adres] Script Date: 2013-06-10 01:32:10 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Adres](

[adres_ID] [int] NOT NULL,

[miasto] [varchar](50) NULL,

[ulica] [varchar](50) NULL,

[nr_lokalu] [int] NULL,

[kod_pocztowa] [int] NULL,

CONSTRAINT [PK_Adres] PRIMARY KEY CLUSTERED

(

[adres_ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]


GO

SET ANSI_PADDING OFF

GO

/****** Object: Table [dbo].[Klient] Script Date: 2013-06-10 01:32:10 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Klient](

[pesel] [int] NOT NULL,

[nazwisko_k] [varchar](50) NULL,

[imie_k] [varchar](50) NULL,

[adres_id] [int] NULL,

CONSTRAINT [PK_Klient] PRIMARY KEY CLUSTERED

(

[pesel] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]


GO

SET ANSI_PADDING OFF

GO

/****** Object: Table [dbo].[Lek] Script Date: 2013-06-10 01:32:10 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Lek](

[lek_ID] [int] NOT NULL,

[nazwa] [varchar](50) NULL,

[cena] [float] NULL,

[ilosc_w_opakowaniu] [int] NULL,

[dostepna_ilosc_sztuk] [int] NULL,

[data_waznosci] [date] NULL,

[uwagi] [varchar](50) NULL,

CONSTRAINT [PK_Lek] PRIMARY KEY CLUSTERED

(

[lek_ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]


GO

SET ANSI_PADDING OFF

GO

/****** Object: Table [dbo].[Lekarz] Script Date: 2013-06-10 01:32:10 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Lekarz](

[lekarz_ID] [int] NOT NULL,

[imie_l] [varchar](50) NOT NULL,

[nazwisko_l] [varchar](50) NOT NULL,

[telefon] [int] NULL,

[specjalizaca] [varchar](50) NOT NULL,

[adres_id] [int] NOT NULL,

CONSTRAINT [PK_Lekarz] PRIMARY KEY CLUSTERED

(

[lekarz_ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]


GO

SET ANSI_PADDING OFF

GO

/****** Object: Table [dbo].[Pracownik] Script Date: 2013-06-10 01:32:10 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Pracownik](

[pracownik_ID] [int] NOT NULL,

[imie_p] [varchar](50) NOT NULL,

[nazwisko_p] [varchar](50) NOT NULL,

[telefon_p] [int] NULL,

[adres_id] [int] NOT NULL,

CONSTRAINT [PK_Pracownik] PRIMARY KEY CLUSTERED

(

[pracownik_ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]


GO

SET ANSI_PADDING OFF

GO

/****** Object: Table [dbo].[Recepta] Script Date: 2013-06-10 01:32:10 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Recepta](

[recepta_ID] [int] NOT NULL,

[refundacja] [decimal](1, 1) NULL,

[data_wydania] [date] NULL,

[pesel] [int] NOT NULL,

[lekarz_id] [int] NOT NULL,

[lek_id] [int] NOT NULL,

CONSTRAINT [PK_Recepta] PRIMARY KEY CLUSTERED

(

[recepta_ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]


GO

/****** Object: Table [dbo].[Zamowienie] Script Date: 2013-06-10 01:32:10 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Zamowienie](

[zam_ID] [int] IDENTITY(1,1) NOT NULL,

[lek_id] [int] NULL,

[recepta_id] [int] NULL,

[pracownik_id] [int] NOT NULL,

CONSTRAINT [PK_Zamówienie] PRIMARY KEY CLUSTERED

(

[zam_ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]


GO

ALTER TABLE [dbo].[Klient] WITH CHECK ADD CONSTRAINT [FK_Klient_Adres] FOREIGN KEY([adres_id])

REFERENCES [dbo].[Adres] ([adres_ID])

GO

ALTER TABLE [dbo].[Klient] CHECK CONSTRAINT [FK_Klient_Adres]

GO

ALTER TABLE [dbo].[Lekarz] WITH CHECK ADD CONSTRAINT [FK_Lekarz_Adres] FOREIGN KEY([adres_id])

REFERENCES [dbo].[Adres] ([adres_ID])

GO

ALTER TABLE [dbo].[Lekarz] CHECK CONSTRAINT [FK_Lekarz_Adres]

GO

ALTER TABLE [dbo].[Pracownik] WITH CHECK ADD CONSTRAINT [FK_Pracownik_Adres] FOREIGN KEY([adres_id])

REFERENCES [dbo].[Adres] ([adres_ID])

GO

ALTER TABLE [dbo].[Pracownik] CHECK CONSTRAINT [FK_Pracownik_Adres]

GO

ALTER TABLE [dbo].[Recepta] WITH CHECK ADD CONSTRAINT [FK_Recepta_Klient] FOREIGN KEY([pesel])

REFERENCES [dbo].[Klient] ([pesel])

GO

ALTER TABLE [dbo].[Recepta] CHECK CONSTRAINT [FK_Recepta_Klient]

GO

ALTER TABLE [dbo].[Recepta] WITH CHECK ADD CONSTRAINT [FK_Recepta_Lek] FOREIGN KEY([lek_id])

REFERENCES [dbo].[Lek] ([lek_ID])

GO

ALTER TABLE [dbo].[Recepta] CHECK CONSTRAINT [FK_Recepta_Lek]

GO

ALTER TABLE [dbo].[Recepta] WITH CHECK ADD CONSTRAINT [FK_Recepta_Lekarz] FOREIGN KEY([lekarz_id])

REFERENCES [dbo].[Lekarz] ([lekarz_ID])

GO

ALTER TABLE [dbo].[Recepta] CHECK CONSTRAINT [FK_Recepta_Lekarz]

GO

ALTER TABLE [dbo].[Zamowienie] WITH CHECK ADD CONSTRAINT [FK_Zamówienie_Lek] FOREIGN KEY([lek_id])

REFERENCES [dbo].[Lek] ([lek_ID])

GO

ALTER TABLE [dbo].[Zamowienie] CHECK CONSTRAINT [FK_Zamówienie_Lek]

GO

ALTER TABLE [dbo].[Zamowienie] WITH CHECK ADD CONSTRAINT [FK_Zamówienie_Pracownik] FOREIGN KEY([pracownik_id])

REFERENCES [dbo].[Pracownik] ([pracownik_ID])

GO

ALTER TABLE [dbo].[Zamowienie] CHECK CONSTRAINT [FK_Zamówienie_Pracownik]

GO

ALTER TABLE [dbo].[Zamowienie] WITH CHECK ADD CONSTRAINT [FK_Zamówienie_Recepta] FOREIGN KEY([recepta_id])

REFERENCES [dbo].[Recepta] ([recepta_ID])

GO

ALTER TABLE [dbo].[Zamowienie] CHECK CONSTRAINT [FK_Zamówienie_Recepta]

GO

USE [master]

GO

ALTER DATABASE [Apteka] SET READ_WRITE

GO




­­­


Wyszukiwarka

Podobne podstrony:
2 Bazy danych projektowanie wykład
7 Bazy Danych projektowanie
2 Bazy danych projektowanie wykład
7 Bazy Danych projektowanie
2 Bazy danych projektowanie wykład
mazur & mazur, bazy danych P, Projekt bazy danych krajowej agencji pracy tymczasowej
Projekt Bazy Danych
Projekt bazy danych dla Przycho Nieznany
Wzor projektu bazy danych (3), INIB rok II, PIOSI janiak
Projektowanie i tworzenie bazy danych, 2431, Prace, Informatyka
etapy projektowania bazy danych, Pomoce naukowe, studia, informatyka
Bazy danych - podstawowe kroki w projektowaniu cz 2 - wyklady, Zajęcia z Baz Danych - MS Access, cz
Bazy danych - podstawowe kroki w projektowaniu cz 2 - wyklady, Zajęcia z Baz Danych - MS Access, cz
Projekt BD Relacyjne Bazy Danych obligat ET II II 01
Projekt i implementacja internetowej bazy danych do wymiany i promowania wiedzy ekologicznej
Access2 Projektowanie bazy danych, Ogrodnictwo 2011, INFORMATYKA, Informatyka, MS Access
mgr Piotr Greniewski - zadania sem.4(1), ewsie, Bazy Danych
Bazy danych II program proj, Politechnika Opolska, Informatyka, Semestr VI, Bazy danych II, Projekt
projekt bazy danych, PWR, Zarządzanie, SEMESTR VI, Przedsięw. inf. w zarządzaniu

więcej podobnych podstron