该如何建立这样一个数据库?
“电脑”(名称)由“显示器”“主机”“键盘”“鼠标”(部件)组成“显示器”有“LCD”“CRT”。。。(分类)“主机”有“大机箱”,“小机箱”。。。。。。“LCD”里面含...
“电脑”(名称)由“显示器”“主机”“键盘”“鼠标”(部件)组成
“显示器”有“LCD”“CRT”。。。(分类)
“主机”有“大机箱”,“小机箱”。。。
。。。
“LCD”里面含有a,b,c,e....(物质)
“CRT”里面含有a,c,f,g....
.....
我要实现的功能是:
1、输入名称,可以查到相应的组成部件和部件分类,以及里面含有的物质;
2、输入物质名称,可以反查到哪些部件里面含有这些物质
请问各位高手,该如何规划数据库的结构?要建立几张表?我是新手,刚接触这东西,对各位高手来说这可能是小儿科的问题,但对我来说不亚于哥德巴赫猜想,所以请各位高手不吝赐教!!!!!
非常感谢一楼!!您说的组成-物质关联表我理解,但关联表中的数据分别采用什么类型比较好?如果组成与物质都有自己的ID,是不是可以用ID进行关联,关联时采用什么类型数据?我采用的是php+mysql 展开
“显示器”有“LCD”“CRT”。。。(分类)
“主机”有“大机箱”,“小机箱”。。。
。。。
“LCD”里面含有a,b,c,e....(物质)
“CRT”里面含有a,c,f,g....
.....
我要实现的功能是:
1、输入名称,可以查到相应的组成部件和部件分类,以及里面含有的物质;
2、输入物质名称,可以反查到哪些部件里面含有这些物质
请问各位高手,该如何规划数据库的结构?要建立几张表?我是新手,刚接触这东西,对各位高手来说这可能是小儿科的问题,但对我来说不亚于哥德巴赫猜想,所以请各位高手不吝赐教!!!!!
非常感谢一楼!!您说的组成-物质关联表我理解,但关联表中的数据分别采用什么类型比较好?如果组成与物质都有自己的ID,是不是可以用ID进行关联,关联时采用什么类型数据?我采用的是php+mysql 展开
2个回答
展开全部
我说说我怎么看啊,我觉得一楼的做法一方面在数据完整性方面有点不大严谨,另一方面在实现上有一定困难,因为在组件和物质的问题上会出现一对多的对应关系,貌似这样的方案在某种组件包括大于等于两种物质的情况下首先组织-物质关联表的PK是不能允许的,如果把PK去掉就会出现单表数据过重的现象,影响数据库效率。楼主看看这个方案行不行?
电脑表
tab_computers
computer_name text,
monitor_id number (FK reference to tab_compontents(compontent_id)),
computer_case number (FK reference to tab_compontents(compontent_id)),
keyboard number (FK reference to tab_compontents(compontent_id)),
mouse number (FK reference to tab_compontents(compontent_id)),
...;
组件表
tab_compontents
compontent_id number (PK),
compontent_name text;
组件关联
tab_relation
compontent_id number (FK reference to tab_compontents(compontent_id)) (index),
substance_id number (FK reference to tab_substances(substance_id));
物质表
tab_substances
substance_id number (PK),
substance_name text,
substance_description text;
这个方案把所有一对多的关系的过重数据全部集中到tab_relation表中,而这个表只有两个外键id列,一方面确保了数据完整性,一方面在compontent_id列有索引再加上本身只有两个数字列,可以增加数据库检索速度。减少了text数据类型在其他表中的冗余条目。
如果看不明白的话我可以再给你个例子^-^
电脑表
tab_computers
computer_name text,
monitor_id number (FK reference to tab_compontents(compontent_id)),
computer_case number (FK reference to tab_compontents(compontent_id)),
keyboard number (FK reference to tab_compontents(compontent_id)),
mouse number (FK reference to tab_compontents(compontent_id)),
...;
组件表
tab_compontents
compontent_id number (PK),
compontent_name text;
组件关联
tab_relation
compontent_id number (FK reference to tab_compontents(compontent_id)) (index),
substance_id number (FK reference to tab_substances(substance_id));
物质表
tab_substances
substance_id number (PK),
substance_name text,
substance_description text;
这个方案把所有一对多的关系的过重数据全部集中到tab_relation表中,而这个表只有两个外键id列,一方面确保了数据完整性,一方面在compontent_id列有索引再加上本身只有两个数字列,可以增加数据库检索速度。减少了text数据类型在其他表中的冗余条目。
如果看不明白的话我可以再给你个例子^-^
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询