Проектирование на физическом уровне.




Проектирование на концептуальном уровне.

На концептуальном уровне мы выделили несколько сущностей:

· Жанр

· Автор

· Исполнитель

· Музыкальное произведение.

Проектирование на логическом уровне.

На логическом уровне мы представляем сущности в виде таблиц:

· Жанр – GENRE

· Автор – AUTOR2

· Музыкальное произведение – TRACK

· Исполнитель – AUTOR.

Также, на логическом уровне мы добавили связующую таблицу, которая связывает музыкальное произведение и исполнителя:

· Исполнение - AUTOR_TRACK.

Проектирование на физическом уровне.

На физическом уровне мы создали скрипт:

 

MySQL Workbench 6.0 CE:

SET NAMES utf8 COLLATE utf8_unicode_ci;

DROP DATABASE IF EXISTS mus;

CREATE DATABASE mus

DEFAULT CHARACTER SET utf8

DEFAULT COLLATE utf8_unicode_ci;

USE mus;

 

/*** Жанр ***/

create table GENRE

(codgn char(3), /*Код жанра*/

namegn char(10), /*Название жанра*/

CONSTRAINT PK_GENRE PRIMARY KEY (codgn)

);

 

/*** Автор ***/

create table autor2

(codatr2 char(3), /*Код автора*/

nameatr2 varchar(10), /*Имя автора*/

constraint pk_autor2 primary key (codatr2)

);

 

/*** Трэк ***/

create table TRACK

(codgn char(3), /*Код жанра*/

codatr2 char(3),

codtr CHAR(5), /*Код трэка*/

nametr varchar(10), /*Название трэка*/

CONSTRAINT PK_TRACK PRIMARY KEY (codtr),

CONSTRAINT FK_TRACK

FOREIGN KEY (codgn) REFERENCES GENRE (codgn)

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT FK2_AUTOR2

FOREIGN KEY (codatr2) REFERENCES autor2 (codatr2)

ON DELETE CASCADE

ON UPDATE CASCADE

);

 

/*** Исполнитель ***/

create table AUTOR

(codatr char(3), /*Код исполнителя*/

nameatr varchar(10), /*Имя исполнителя*/

CONSTRAINT PK_AUTOR PRIMARY KEY (codatr)

);

 

/*** Исполнение ***/

create table AUTOR_TRACK

(codlink int, /*Искусственный первичный ключ*/

codtr char(5), /*Код трэка*/

codatr char(3), /*Код автора*/

CONSTRAINT PK_AUTOR_TRACK

PRIMARY KEY (CODLINK),

CONSTRAINT FK1_AUTOR_TRACK

FOREIGN KEY (codatr) REFERENCES AUTOR (codatr)

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT FK2_AUTOR_TRACK

FOREIGN KEY (codtr) REFERENCES TRACK (codtr)

ON DELETE CASCADE

ON UPDATE CASCADE

);

FIREBIRD 2.5:

SET SQL DIALECT 3;

SET NAMES WIN1251;

CONNECT 'C:\MUS.FDB'

USER 'SYSDBA' PASSWORD 'masterkey';

DROP DATABASE;

CREATE DATABASE 'C:\MUS.FDB'

USER 'SYSDBA' PASSWORD 'masterkey'

PAGE_SIZE = 8192

DEFAULT CHARACTER SET WIN1251;

COMMIT;

/*** жанр ***/

create table refjanr

(

codjanr char(3) not null, /* код жанра */

namejanr varchar(20),

 

constraint pk_refjanr primary key (codjanr)

);

CREATE GENERATOR GEN_REFJANR;

commit;

/*** автор ***/

create table refauthor

(

codauthor char(3) not null, /* код автор */

author varchar(100),

 

constraint pk_refauthor primary key (codauthor)

);

CREATE GENERATOR GEN_REFAUTHOR;

commit;

/*** музыкальное произведение ***/

create table refmusworks

(

codjanr char(3) not null, /* код жанра */

codauthor char(3) not null, /* код автор */

codmusworks char(3) not null, /* код музыкального поизведения */

nameworks varchar(100), /* название произведения*/

 

constraint pk_refmusworks primary key (codjanr,codauthor,codmusworks),

constraint fk1_refmusworks

foreign key (codjanr) references refjanr(codjanr)

on delete cascade

on update cascade,

constraint fk2_refmusworks

foreign key (codauthor) references refauthor(codauthor)

on delete cascade

on update cascade

);

CREATE GENERATOR GEN_REFMUSWORKS;

commit;

/*** исполнитель ***/

create table refexct

(

codexct char(3) not null, /* код исполнителя */

nameexct varchar(100), /* имя исполнителя */

 

constraint pk_refexect primary key (codexct)

);

CREATE GENERATOR GEN_REFEXCT;

commit;

 

/*** исполнение ***/

create table refexecution

(

codjanr char(3) not null, /* код жанра */

codauthor char(3) not null, /* код автор */

codmusworks char(3) not null, /* код музыкального поизведения */

codexct char(3) not null, /* код исполнителя */

 

constraint pk_refexecution primary key (codjanr,codauthor,codmusworks,codexct),

constraint fk1_refexecution

foreign key (codjanr,codauthor,codmusworks) references refmusworks(codjanr,codauthor,codmusworks)

on delete cascade

on update cascade,

constraint fk2_refexecution

foreign key (codexct) references refexct(codexct)

on delete cascade

on update cascade

 

);

CREATE GENERATOR GEN_REFEXECUTION;

commit;

SQL Server Management Studio:

USE master;

GO

IF DB_ID('musica') IS NOT NULL

DROP DATABASE musica;

GO

CREATE DATABASE musica

ON PRIMARY (NAME = musica_dat,

FILENAME = 'C:\STUDY\musica.mdf',

SIZE = 5 MB,

MAXSIZE = UNLIMITED,

FILEGROWTH = 80 KB)

go

use musica;

go

/*** Жанр ***/

create table GENRE

(codgn char(3), /*Код жанра*/

namegn char(10), /*Название жанра*/

CONSTRAINT PK_GENRE PRIMARY KEY (codgn)

);

GO

/*** Автор ***/

create table AUTOR

(codatr2 char(3), /*Код автора*/

nameatr2 varchar(10), /*Имя автора*/

constraint pk_AUTOR primary key (codatr2)

);

GO

 

/*** Трэк ***/

create table TRACK

(codgn char(3), /*Код жанра*/

codatr2 char(3),

codtr CHAR(5), /*Код трэка*/

nametr varchar(10), /*Название трэка*/

CONSTRAINT PK_TRACK PRIMARY KEY (codtr),

CONSTRAINT FK_TRACK

FOREIGN KEY (codgn) REFERENCES GENRE (codgn)

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT FK2_AUTOR

FOREIGN KEY (codatr2) REFERENCES autor (codatr2)

ON DELETE CASCADE

ON UPDATE CASCADE

);

GO

/*** Исполнитель ***/

create table ISPOL

(codatr char(3), /*Код исполнителя*/

nameatr varchar(10), /*Имя исполнителя*/

CONSTRAINT PK_ISPOL PRIMARY KEY (codatr)

);

GO

/*** Исполнение ***/

create table AUTOR_TRACK

(codlink int, /*Искусственный первичный ключ*/

codtr char(5), /*Код трэка*/

codatr char(3), /*Код автора*/

CONSTRAINT PK_AUTOR_TRACK

PRIMARY KEY (CODLINK),

CONSTRAINT FK1_AUTOR_TRACK

FOREIGN KEY (codatr) REFERENCES ispol (codatr)

ON DELETE CASCADE

ON UPDATE CASCADE,

CONSTRAINT FK2_AUTOR_TRACK

FOREIGN KEY (codtr) REFERENCES TRACK (codtr)

ON DELETE CASCADE

ON UPDATE CASCADE

);

GO



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-05-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: