本帖最后由 programmer_wei 于 2013-12-06 16:16:52 编辑

解决方案 »

  1.   

    那是不是应该就是我理解的,人工再去建立一张表, 字段:(id,uid),其中id是“用户信息表”的主键,uid是“语言水平表”的外键呢?
      

  2.   

    哦 ,不用建什么索引。就是这样的语句,通过left join关联就行,后面的on写个关联添加,比如:select *
    from 用户表 a
    left join 语言水平表 b
           on a.uid = b.uid
      

  3.   

    那是不是应该就是我理解的,人工再去建立一张表, 字段:(id,uid),其中id是“用户信息表”的主键,uid是“语言水平表”的外键呢?不需要的,你现在用户信息表和语言表都有 用户ID,你就只要用这个字段做关联就可以的,查询的时候就像  阳泉酒家小当家 写的语句那样
      

  4.   

    那是不是应该就是我理解的,人工再去建立一张表, 字段:(id,uid),其中id是“用户信息表”的主键,uid是“语言水平表”的外键呢?
    是这样的,用户信息表里存储的是用户信息,而语言水平表存储的是语言信息,比如:用户信息表:
    uid , name
    1     张三语言水平表:
    id,uid,语言, 水平
    1   1    英语   高级
    2   1    普通话 熟练
    3   1    广东话 一般 
      

  5.   

    另外再问一个问题,为什么公司设计数据库时候直接是设计表的字段,都不用画E-R图什么的,现在正在做的这套系统可是有几十张表的,难道学校说的画E-R图现在已经过时了吗。
      

  6.   


    呵呵,e-r图很经典,没有过时,只不过一般的系统,都是从几个表,慢慢的增长,随着功能的增多,表的数量也越来越多,所以一般不会特意去设计e-r,但是分析问题的时候,e-r图是很有用的。
      

  7.   


    另外,需要特别指出的是,一般的大型系统,比较好的方法,就是一开始就设计 e-r图,但由于一个系统,有的都有几百张的表,所以需要用辅助工具来设计,比如power designer 就是一个很好的工具,可以在里面画e-r图的
      

  8.   

    那是不是应该就是我理解的,人工再去建立一张表, 字段:(id,uid),其中id是“用户信息表”的主键,uid是“语言水平表”的外键呢?
    是这样的,用户信息表里存储的是用户信息,而语言水平表存储的是语言信息,比如:用户信息表:
    uid , name
    1     张三语言水平表:
    id,uid,语言, 水平
    1   1    英语   高级
    2   1    普通话 熟练
    3   1    广东话 一般 我好像有一点明白了,按照你之上一个回复说的用
    select *
    from 用户表 a
    left join 语言水平表 b
           on a.uid = b.uid 
    那么应该就不用再去自己建立一个表了吧?就“用户信息表”和“语言水平表”就ok了
      

  9.   

    那是不是应该就是我理解的,人工再去建立一张表, 字段:(id,uid),其中id是“用户信息表”的主键,uid是“语言水平表”的外键呢?
    是这样的,用户信息表里存储的是用户信息,而语言水平表存储的是语言信息,比如:用户信息表:
    uid , name
    1     张三语言水平表:
    id,uid,语言, 水平
    1   1    英语   高级
    2   1    普通话 熟练
    3   1    广东话 一般 我好像有一点明白了,按照你之上一个回复说的用
    select *
    from 用户表 a
    left join 语言水平表 b
           on a.uid = b.uid 
    那么应该就不用再去自己建立一个表了吧?就“用户信息表”和“语言水平表”就ok了
    嗯 ,对
      

  10.   

    那是不是应该就是我理解的,人工再去建立一张表, 字段:(id,uid),其中id是“用户信息表”的主键,uid是“语言水平表”的外键呢?
    是这样的,用户信息表里存储的是用户信息,而语言水平表存储的是语言信息,比如:用户信息表:
    uid , name
    1     张三语言水平表:
    id,uid,语言, 水平
    1   1    英语   高级
    2   1    普通话 熟练
    3   1    广东话 一般 我好像有一点明白了,按照你之上一个回复说的用
    select *
    from 用户表 a
    left join 语言水平表 b
           on a.uid = b.uid 
    那么应该就不用再去自己建立一个表了吧?就“用户信息表”和“语言水平表”就ok了
    嗯 ,对
    还有一个小小的问题哈,我看了一下他们设计的数据库表格是这样的
    用户信息表:(id,xx,xx)
    语言水平表:(id,uid,xx,xx)语言水平表这里的uid其实指的是用户信息表里面的id,即是user_id的意思呢?
      

  11.   

    很多公司不使用外键,很多公司全部存储过程实现,很多公司禁止存储过程,之用SQL语句。ER图其实是要的,这个不仅可以清晰思路,还能作为数据字典,不过国内大部分公司都在赶进度,不会在意这些,都以为“以后再补”,等到以后,就没有以后了
      

  12.   

    但是理论毕竟是理论,国内的情况,软件工程上的东西基本上很难实施。除了大公司或者为了某些原因,才会去后期准备,比如CMMI。除非你能做管理层,不然这个现象有点难短期处理,你就当锻炼一下自己的分析能力吧
      

  13.   

    那是不是应该就是我理解的,人工再去建立一张表, 字段:(id,uid),其中id是“用户信息表”的主键,uid是“语言水平表”的外键呢?
    是这样的,用户信息表里存储的是用户信息,而语言水平表存储的是语言信息,比如:用户信息表:
    uid , name
    1     张三语言水平表:
    id,uid,语言, 水平
    1   1    英语   高级
    2   1    普通话 熟练
    3   1    广东话 一般 我好像有一点明白了,按照你之上一个回复说的用
    select *
    from 用户表 a
    left join 语言水平表 b
           on a.uid = b.uid 
    那么应该就不用再去自己建立一个表了吧?就“用户信息表”和“语言水平表”就ok了
    嗯 ,对
    还有一个小小的问题哈,我看了一下他们设计的数据库表格是这样的
    用户信息表:(id,xx,xx)
    语言水平表:(id,uid,xx,xx)语言水平表这里的uid其实指的是用户信息表里面的id,即是user_id的意思呢?那是不是应该就是我理解的,人工再去建立一张表, 字段:(id,uid),其中id是“用户信息表”的主键,uid是“语言水平表”的外键呢?
    是这样的,用户信息表里存储的是用户信息,而语言水平表存储的是语言信息,比如:用户信息表:
    uid , name
    1     张三语言水平表:
    id,uid,语言, 水平
    1   1    英语   高级
    2   1    普通话 熟练
    3   1    广东话 一般 我好像有一点明白了,按照你之上一个回复说的用
    select *
    from 用户表 a
    left join 语言水平表 b
           on a.uid = b.uid 
    那么应该就不用再去自己建立一个表了吧?就“用户信息表”和“语言水平表”就ok了
    嗯 ,对
    明白了,谢谢你啦
      

  14.   

    那是不是应该就是我理解的,人工再去建立一张表, 字段:(id,uid),其中id是“用户信息表”的主键,uid是“语言水平表”的外键呢?
    是这样的,用户信息表里存储的是用户信息,而语言水平表存储的是语言信息,比如:用户信息表:
    uid , name
    1     张三语言水平表:
    id,uid,语言, 水平
    1   1    英语   高级
    2   1    普通话 熟练
    3   1    广东话 一般 我好像有一点明白了,按照你之上一个回复说的用
    select *
    from 用户表 a
    left join 语言水平表 b
           on a.uid = b.uid 
    那么应该就不用再去自己建立一个表了吧?就“用户信息表”和“语言水平表”就ok了
    嗯 ,对
    还有一个小小的问题哈,我看了一下他们设计的数据库表格是这样的
    用户信息表:(id,xx,xx)
    语言水平表:(id,uid,xx,xx)语言水平表这里的uid其实指的是用户信息表里面的id,即是user_id的意思呢?嗯 对的,语言水平表的uid,指的就是用户信息表中的id字段
      

  15.   

    那是不是应该就是我理解的,人工再去建立一张表, 字段:(id,uid),其中id是“用户信息表”的主键,uid是“语言水平表”的外键呢?
    是这样的,用户信息表里存储的是用户信息,而语言水平表存储的是语言信息,比如:用户信息表:
    uid , name
    1     张三语言水平表:
    id,uid,语言, 水平
    1   1    英语   高级
    2   1    普通话 熟练
    3   1    广东话 一般 我好像有一点明白了,按照你之上一个回复说的用
    select *
    from 用户表 a
    left join 语言水平表 b
           on a.uid = b.uid 
    那么应该就不用再去自己建立一个表了吧?就“用户信息表”和“语言水平表”就ok了
    嗯 ,对
    还有一个小小的问题哈,我看了一下他们设计的数据库表格是这样的
    用户信息表:(id,xx,xx)
    语言水平表:(id,uid,xx,xx)语言水平表这里的uid其实指的是用户信息表里面的id,即是user_id的意思呢?嗯 对的,语言水平表的uid,指的就是用户信息表中的id字段
    非常感谢你!学校学的东西真是远远不够