数据库设计有两种方案,哪种好?

theetc 发布于 2013/08/19 12:44
阅读 823
收藏 2
一件衣服的


尺码:1,2,3,4,5,6,7,8,9,0
颜色:a,b,c,d,e,f


数据库设计有两种方案:


第一种:


颜色,尺码1,尺码2,尺码3,尺码4,……
例如:
a,1,2,3,4,5,6,7,……
b,1,2,3,4,5,6,7,……
c,1,2,3,4,5,6,7,……
……




第二种:


颜色,尺码


例如:
a,1
a,2
a,3
……
b,1
b,2
加载中
0
晴风晓月
晴风晓月

不用说了,肯定是第二种。

第一种情况不支持尺码的扩展,比如要新增一种尺码,你就必须要修改表结构了。而第二种情况就不需要了,只是增加相应的尺码与颜色对应数据就行了。

另外根据你的描述,颜色和尺码应该是满足多对多的关系,按照数据库设计的一般原则,多对多的关系也应该设计成一个单独的表。

因此应该选择第二种方案

0
伊藤熊吉
伊藤熊吉
我认为第一种好
xmut
xmut
⊙﹏⊙b汗
0
ksfzhaohui
ksfzhaohui
第三种: 颜色表,尺码 
theetc
theetc
颜色表,尺码表是有的,现在是放具体数据时
0
Dorje
Dorje
具体看业务。
0
viney
viney

两种都不好,如果我设计的话,三张表。

1、尺码表:尺码信息

-- id为自增长,主键

create table tb_size(

-- 可以自增长ID

size_id NUMBER(16) primary key,

-- 尺码(如:s、m、l、xl、xxl、xxxl等等)

name varchar32(20)

)

2、颜色表

create table color(

-- 可以自增长ID

color_id NUMBER(16) primary key,

-- 颜色名称,如(红,黄,粉红等等)

name varchar32(20)

)


-- 尺寸颜色关系表

create table tb_size_color(

size_id NUMBER(16) not null,

color_id NUMBER(16) not null

)

-- 建size外键

alter table tb_size_color add constraint tb_size_color_size_id_fk foreign key(tb_size) references tb_size(size_id) on delete cascade;

-- 建color外键

alter table tb_size_color add constraint tb_size_color_color_id_fk foreign key(tb_color) references tb_color(color_id) on delete cascade;

0
中山野鬼
中山野鬼

引用来自“viney”的答案

两种都不好,如果我设计的话,三张表。

1、尺码表:尺码信息

-- id为自增长,主键

create table tb_size(

-- 可以自增长ID

size_id NUMBER(16) primary key,

-- 尺码(如:s、m、l、xl、xxl、xxxl等等)

name varchar32(20)

)

2、颜色表

create table color(

-- 可以自增长ID

color_id NUMBER(16) primary key,

-- 颜色名称,如(红,黄,粉红等等)

name varchar32(20)

)


-- 尺寸颜色关系表

create table tb_size_color(

size_id NUMBER(16) not null,

color_id NUMBER(16) not null

)

-- 建size外键

alter table tb_size_color add constraint tb_size_color_size_id_fk foreign key(tb_size) references tb_size(size_id) on delete cascade;

-- 建color外键

alter table tb_size_color add constraint tb_size_color_color_id_fk foreign key(tb_color) references tb_color(color_id) on delete cascade;

你这个等同第二种。哈。不谈我是否支持第二种,第一种算数据库的表嘛??
老网民
老网民
第二种、和第三种 都好,如果颜色和尺码不是很多,感觉第二种,如果颜色、尺码太多,第三种比较完美。
老网民
老网民
个人感觉有时候设计思想太细分了,反而变得有些复杂。
晴风晓月
晴风晓月
果然
0
IdleMan
IdleMan
不知道如何设计时,遵照范式是不错的选择
0
八木
八木

第二种呗,第一种是个坑

0
純白陰影
純白陰影
尺码和颜色是多对多关系,显然采用第二种,作为尺码和颜色的关系表
0
sunyh
sunyh

引用来自“晴风晓月”的答案

不用说了,肯定是第二种。

第一种情况不支持尺码的扩展,比如要新增一种尺码,你就必须要修改表结构了。而第二种情况就不需要了,只是增加相应的尺码与颜色对应数据就行了。

另外根据你的描述,颜色和尺码应该是满足多对多的关系,按照数据库设计的一般原则,多对多的关系也应该设计成一个单独的表。

因此应该选择第二种方案

毫无疑问 第二种。

返回顶部
顶部