- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
CREATE TABLE [Battles] (
[name] [varchar] (20) NOT NULL ,
[date] [datetime] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [Classes] (
[class] [varchar] (50) NOT NULL ,
[type] [varchar] (2) NOT NULL ,
[country] [varchar] (20) NOT NULL ,
[numGuns] [tinyint] NULL ,
[bore] [real] NULL ,
[displacement] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Ships] (
[name] [varchar] (50) NOT NULL ,
[class] [varchar] (50) NOT NULL ,
[launched] [smallint] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Outcomes] (
[ship] [varchar] (50) NOT NULL ,
[battle] [varchar] (20) NOT NULL ,
[result] [varchar] (10) NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Battles] ADD
CONSTRAINT [PK_Battles] PRIMARY KEY CLUSTERED
(
[name]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Classes] ADD
CONSTRAINT [PK_Classes] PRIMARY KEY CLUSTERED
(
[class]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Ships] ADD
CONSTRAINT [PK_Ships] PRIMARY KEY CLUSTERED
(
[name]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Outcomes] ADD
CONSTRAINT [PK_Outcomes] PRIMARY KEY CLUSTERED
(
[ship],
[battle]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Ships] ADD
CONSTRAINT [FK_Ships_Classes] FOREIGN KEY
(
[class]
) REFERENCES [dbo].[Classes] (
[class]
) NOT FOR REPLICATION
GO
ALTER TABLE [dbo].[Outcomes] ADD
CONSTRAINT [FK_Outcomes_Battles] FOREIGN KEY
(
[battle]
) REFERENCES [dbo].[Battles] (
[name]
)
GO
lexx 27.08.2009 20:33 # −1
Дополняют пейзаж естественные ключи, и странная ненормальная форма.
Oleg_quadro 27.08.2009 21:03 # −1
labutinpa 28.08.2009 01:27 # −1
3. Почему для решения упражнений используется плохо структурированная база данных "Корабли"?
Не рекомендуется при проектировании баз данных следовать примеру, демонстрируемому структурой "Корабли", для которой таблица Outcomes может содержать висящие строки, т.е. корабли, класс которых неизвестен. В результате нельзя обеспечить ссылочную целостность между таблицами Outcomes и Ships. Использование такой структуры в учебных целях можно оправдать тем, что это позволяет строить более сложные запросы и более полно использовать синтаксис оператора SELECT. Справедливости ради заметим, что сами таблицы данной базы данных являются вполне нормализованными, т.е. они находятся в 3НФ и даже в НФБК.
guest 28.08.2009 08:26 # −1
ссылалось на разные таблицы. Мотив - экономия места.
ППЦ!
guest 07.09.2009 12:32 # 0
3oJloTou_nemyx 24.08.2021 21:06 # 0