Тема: Проектування бази даних
Всім привіт !
Маю завдання:
Створіть базу даних «Музична колекція». База даних повинна містити інформацію по музичних дисках, виконавців, стилях. Необхідно зберігати наступну інформацію:
1. Про музичному диску: назва диска, виконавець, дата випуску, стиль, видавець
2. Про стилях: назви стилів
3. Про виконавців: назва
4. Про видавців: назва, країна
5. Про пісні: назва пісні, назва диска, тривалість пісні, музичний стиль пісні, виконавець.
Реалізував так:
use master
go
if db_id('Music_Library') is not null
begin
drop database [Music_Library]
end
go
create database [Music_Library]
go
use [Music_Library]
go
create table [Styles]
(
[Id] int primary key identity not null,
[Name] nvarchar(256) not null check([Name] <> '') unique
);
go
create table [Singers]
(
[Id] int primary key identity not null,
[Name] nvarchar(256) not null check([Name] <> '') unique,
);
go
create table [Countries]
(
[Id] int primary key identity not null,
[Name] nvarchar(256) not null check([Name] <> '') unique
);
go
create table [Publishers]
(
[Id] int primary key identity not null,
[Name] nvarchar(256) not null check([Name] <> '') unique,
[CountrieId] int not null references [Countries](Id)
);
go
create table [Discs]
(
[Id] int primary key identity not null,
[Name] nvarchar(max) not null check([Name] <> ''),
[Date] date not null check(date <= getdate()),
);
go
create table [DiscsPublishers]
(
[PublisherId] int not null references [Publishers](Id),
[DiscId] int not null references [Discs](Id),
primary key ( [PublisherId],[DiscId])
);
go
create table [Songs]
(
[Id] int primary key identity not null,
[Name] nvarchar(max) not null check([Name] <> ''),
[SingerId] int not null references [Singers](Id),
[StyleId] int not null references [Styles](Id)
);
go
create table [DiscsSongs]
(
[SongId] int not null references [Songs](Id),
[DiscId] int not null references [Discs](Id),
primary key ( [SongId],[DiscId])
);
go
Але є одна проблема.В завданні сказано що на диску має бути один виконавець і один стиль музики.
А в такому варіанті в диск можна додати будь яку пісню.
Як заборонити додавати до диску пісні з іншим виконавцем чи стилем?