我面试j2ee他问我数据库设计方面的问题,要求如下:1、有两张表:employee(员工) 和 skill(员工的技能)2、一个员工可能有多个技能也可能没有技能3、如何设计这两张表? 如何用sql查出每个员工的所有技能?我数据库太过薄弱这道题答不上来,有人能告诉我吗?
解决方案 »
- MyEclipse启动项目报错,速度求解
- JSF新手:又是关于tomcat报错!
- Jsp新手提问?路过的大虾帮帮忙!
- 有什么开发工具可以方便开发jsp自定义标签??急!!!
- 关于cookies!
- 使用ResultSet rst=stmt.executeQuery("select * from 书籍;");查询数据如何判断它是否找到要查询的数据
- 急求救,大家来帮帮我,我是个新手,不会呀
- 给分
- 生成xml包问题
- 求救,springmvc用户注册代码
- 如何实现拼音转汉字
- 急问: hibernate getHibernateTemplate().save(transientInstance); 没有保存
员工技能表中要包含员工表中的员工ID
然后用外连接查询
left join 或者right join
多方保存 一方的主键作为外键就是员工技能表中需要包含一列为员工ID,并作为外键参照员工表的ID属性。
查询外连接,和嵌套都可以
如果技能不是固定的,也就是说:不存在多个员工拥有同一个技能的话,可以采用这种方式设计数据库
楼主说的问题并不是问题:select t1.ID,t1.员工姓名,t2。技能名 from 员工 t1
left join 技能表 t2 on t1.ID = t2.员工ID
这样查询出来的是一个list 楼主不是数据库太薄弱,你是根本就不会啊。
一个是 员工表,一个技能表,一个对应关系表。
一表主键为员工ID,二表主键为技能ID,三表主键为1表2表的主键。查询 直接在三表查询,select 技能ID from 表3 where 员工ID= ;
create table employee(id int primary key not null,name varchar(20),sex char(4),age smallint);
创建技能表:
create table skill(id int primary key not null,e_id int,skillName varchar(20),
foreign key(e_id) references employee()
)
说明:e_id是外键,参照employee的id。
查出每个员工的所有技能:
select e.name,s.skillName from employee e,skill s where e.id=s.e_id group by e.name;
例如 10001 张三 男 电脑 写作 游泳 一个字段表示出所有的技能 就是这个意思 所以我认为难度是设计上的问题 而不是sql的问题
你的group by 字句行不通啊 不给力哦
例如 10001 张三 男 电脑 写作 游泳 一个字段表示出所有的技能 就是这个意思 所以我认为难度是设计上的问题 而不是sql的问题哥们你是在玩笑么? 如果你需要这样 那更没难度了,
就一个表就可以了员工编号 员工姓名 员工技能
这就是你的 结果了 , 主键员工编号加员工技能, 这么设计全是冗余。如果你要说 员工技能一项存储多项信息, 那是不可能的, 你的设计连第一范式都达不到。他说你错了 很有可能是你把 多对多关系分析成一对多了 你可以看看我上面多对多给出的答案