继续请教一个面试题目,高手帮忙啊,先谢了!
Scenario:
A company has several small tables in their database. These tables consisted of two columns and less than one thousand rows.
Below an example of table schema,
create table hairColor
(
hairColorID int identity(1,1),
description varchar(16) not null
)
Go
insert into hairColor values(‘Brown’)
insert into hairColor values(‘Blonde’)
create table eyeColor
(
eyeColorID int identity(1,1),
name varchar(10) not null
)
Go
insert into hairColor values(‘Black’)
insert into hairColor values(‘Grey’)
create table submitStatus
(
statusID int identity(1,1),
description varchar(30) not null
)
Go
Question:
How would you combine these tables into one table and enforce the data integrity? Please provide the table schema and few insert statement to demonstration how to fill the table.
------解决方案--------------------create table T
(
id int identity(1,1),
description varchar(30) not null,
flag varchar(02) not null
)
insert into T(description,flag)
select 'Brown ', 'H ' union all
select 'Blonde ', 'H ' union all
select 'Black ', 'E ' union all
select 'Gray ', 'E ' union all
select 'xxx ', 'S '
.....
------解决方案--------------------create table T
(
id int identity(1,1),
description varchar(30) not null,
eyeColorID int not null,
hairColorID int not null,
statusID int not null
)
------解决方案--------------------create table hairColor
(
hairColorID int identity(1,1),
description varchar(16) not null
)
Go
insert into hairColor values(‘Brown’)
insert into hairColor values(‘Blonde’)
create table eyeColor
(
eyeColorID int identity(1,1),
name varchar(10) not null
)
Go
insert into hairColor values(‘Black’)
insert into hairColor values(‘Grey’)
create table submitStatus
(
statusID int identity(1,1),
description varchar(30) not null
)
Go
select id=identity(int,1,1),* into #t from
(
select description,1 as flag from hairColor
union all
select description,2 from eyeColor
union all
select description,3 from submitStatus
)a