日期:2014-05-18  浏览次数:20562 次

继续请教一个面试题目,高手帮忙啊,先谢了!
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