我想知道,比如库存表,是存放商品编码呢,还是存 商品编码+商品名称?
如果商品再有分类呢?大类小类什么的,再加上品牌型号?是不是只存放
编码呢?如果是这样,我怎么同时从库存表中查出单价和从分类表中查出
品牌?谁能给写个sql码?

解决方案 »

  1.   

    你说的那些商品的基本信息存贮在商品的基本信息表aa(单价,代码,名称...)当中
    然后再加上产品的分类(类别代码,类别名称)bb表还有你的库存表cc(商品代码,数量...)aa的商品分类编码和bb的分类编码相关联
    aa的商品编码和cc的商品编码关联
      

  2.   

    看看你的设计是不是满足第三范式3NF .范式
    构造数据库必须遵循一定的规则在关系数据库中这种规则就是范式范式是符合
    某一种级别的关系模式的集合关系数据库中的关系必须满足一定的要求即满足不同的
    范式目前关系数据库有六种范式第一范式1NF 第二范式2NF 第三范式3NF
    第四范式4NF 第五范式5NF 和第六范式6NF 满足最低要求的范式是第一
    范式1NF 在第一范式的基础上进一步满足更多要求的称为第二范式2NF 其余
    范式以次类推一般说来数据库只需满足第三范式3NF 就行了下面我们举例介绍
    第一范式1NF 第二范式2NF 和第三范式3NF
    第一范式1NF
    在任何一个关系数据库中第一范式1NF 是对关系模式的基本要求不满足第一
    范式1NF 的数据库就不是关系数据库
    所谓第一范式1NF 是指数据库表的每一列都是不可分割的基本数据项同一列中
    不能有多个值即实体中的某个属性不能有多个值或者不能有重复的属性如果出现重复
    的属性就可能需要定义一个新的实体新的实体由重复的属性构成新实体与原实体之
    间为一对多关系在第一范式1NF 中表的每一行只包含一个实例的信息例如对
    于图3-2 中的员工信息表不能将员工信息都放在一列中显示也不能将其中的两列或多
    列在一列中显示员工信息表的每一行只表示一个员工的信息一个员工的信息在表中只
    出现一次简而言之第一范式就是无重复的列
    第二范式2NF
    第二范式2NF 是在第一范式1NF 的基础上建立起来的即满足第二范式2NF
    必须先满足第一范式1NF 第二范式2NF 要求数据库表中的每个实例或行必须可
    以被惟一地区分为实现区分通常需要为表加上一个列以存储各个实例的惟一标识如
    图3-2 员工信息表中加上了员工编号emp_id 列因为每个员工的员工编号是惟一的
    因此每个员工可以被惟一区分这个惟一属性列被称为主关键字或主键主码
    第二范式2NF 要求实体的属性完全依赖于主关键字所谓完全依赖是指不能存在
    仅依赖主关键字一部分的属性如果存在那么这个属性和主关键字的这一部分应该分离
    出来形成一个新的实体新实体与原实体之间是一对多的关系为实现区分通常需要为表
    加上一个列以存储各个实例的惟一标识简而言之第二范式就是非主属性非部分依赖
    于主关键字
    第三范式3NF
    满足第三范式3NF 必须先满足第二范式2NF 简而言之第三范式3NF
    要求一个数据库表中不包含已在其它表中已包含的非主关键字信息例如存在一个部门
    信息表其中每个部门有部门编号dept_id 部门名称部门简介等信息那么在图3-2
    的员工信息表中列出部门编号后就不能再将部门名称部门简介等与部门有关的信息再加
    入员工信息表中如果不存在部门信息表则根据第三范式3NF 也应该构建它否则
    就会有大量的数据冗余简而言之第三范式就是属性不依赖于其它非主属性
      

  3.   

    品牌表
      品牌编号,品牌名称  分类表结构:
      分类编号,从属类编号,品牌编号  产品表结构:
      商品编号,产品名称,分类编号,单价  库存表结构:
      商品编号,分类编号,单价,数量
      
      select d.品牌名称,d.分类名称,b.产品名称,b.单价,a.数量  
      from 库存表 a,产品表 b,分类表 c,品牌表 d
      where a.产品编号=b.产品编号
      and b.分类编号=c.分类编号
      and c.品牌编号=d.品牌编号  如果你要显示大类小类等等那就麻烦写,最好在delphi里写
      

  4.   

    同意txlicenhe(马可)的意见,先根据你自己的需求,设计各表的字段和表之间的关系,然后看这些表是否符合表设计的这几个范式!