一套外企的数据库设计面试题

简介:

 

最近发现园子里面关于数据库方面的文章比较多,正好我也是一个喜欢凑热闹的家伙,那就跟着烧一把火吧。^_^

这是前阵子一个朋友面试外企的一套关于数据库设计的试题,有兴趣的朋友不妨一试。

 

Part I    
 工厂在定义一个新产品的流程如下:

1.  确定产品信息如名字,代号等;
2.  设计部门设计出产品的结构;
3.  在确定结构后就可以得出每个产品所需要的基本零件及其所需的数据。进而可以进行相关财务处理与采购处理。
  
 其相关逻辑如下: 

 .  对于每一种基本零件都有其相关的型号等资料设定; 

 .  对于每个供应商也有其相关资料的设定; 

 .  一个基本零件可以由不同的供应商供应,其价格等资料会有些差异; 

 .  一个供应商也可以供应多种不同的基本零件; 

 .  对于一种产品,可以由多个大部件构成,不同的产品有可能由相同的大部件组成;
       例如,某发动机可以是汽车A的一个大部件,也可以是汽车B的一个大部件。 

 .  在部件结构中,某些部件是由别外一个或多个部件组成的,而所有的部件最终都是由基本零件构成的; 

 .  产品大部件只是存放与产品直接相关的最上层部件。

 

 


Product(产品)
Supplier(供应商)
Part(基本零件)

product_code
supplier_code
part_code

product_name
supplier_name
part_name

product_desc
address_1
part_desc

created_date
address_2
remark



address_3














Product_comp(产品大部件)
Component(部件结构)
component_supply(零件供应)

product_code
comp_id
supply_id

comp_id
component_code
part_code

number_component
component_name
supplier_code

 
parent_comp_id
price



supply_id
ind_active



number_component
 














Prod_part_supp_detail(产品零件明细)



product_code



supply_id  



number_component



   

 

Below is a structure example of product 'P_1' :

   

 

   1. 根据理解画出E-R(或UML)联系图; 
   2. 写脚本来建立所需要的数据库对象,如表、序列、约束等;  
   3. 为上图所示的产品P_1准备初始化数据(prod_part_supp_detail 除外);  
   4. 编写procedure 或function生成指定产品的产品零件明细清单;
   5. Write a SQL to show the supplier and component detail of product. For amount field, use below logic :

 

              If  the “Amount”  <   1000  show “Low”
               
if  “Amount”  >= 1000 < 10000  show “Middle”
               
else  show “High”

 

    The layout is :

     Supplier Name                   Part Name                         Necessary Num     Amount                Type
     ------------------                  ------------------                  --------------             ----------------          ----------
     XXXXXXXXXXXXXXXXXX   XXXXXXXXXXXXXXXXXX    9999999999        999999999.99      XXXXXXXXXX  

 

     如果需要用到递归,以下是一个简单示例:

复制代码
create   or   replace   function  get_char_one_by_one(v_str     varchar2 )
return   varchar2
is
begin
    
if  v_str  is   not   null   and  length(v_str)  >   1    then
       
return  substr(v_str,  1 1 ||   '   '   ||
              get_char_one_by_one(substr(v_str, 
2 ));
    
else
       
return  v_str;
    
end   if ;
end ;
/

set  serveroutput  on
begin
    dbms_output.put_line(get_char_one_by_one(
' I am good boy ' ));
end ;
/  
复制代码

 

 

在以下两题中作选一题  
 Part II     
 There are some tables need copy from one oracle user User1  to another user User2.      
 1. The DB structure of source user is compatiable to the target db user (All field in source db user are exists in target db user, but maybe some fields in target db user not in source db user); 

 2. No DB Link or privilege granted between those two users;       
 3. No primary key or unique key conflict between those two users' data;       
 4. The records number is not very much (at most 10000 for one table).        
   
 Part III  
 There are some tables need copy from one oracle user User1  to another user User2.      
 1. The DB structure of source user is compatiable to the target db user (All field in source db user are exists in target db user, but maybe some fields in target db user not in source db user); 
 2. Can create DB Link or grant priv between those two users;      
 3. No primary key or unique key conflict between those two users' data;      
 4. The records number is not very much (at most 10000 for one table).    

 




本文转自钢钢博客园博客,原文链接:http://www.cnblogs.com/xugang/archive/2008/08/11/1265087.html,如需转载请自行联系原作者


相关文章
|
2月前
|
存储 缓存 数据库
C/C++工程师面试题(数据库篇)
C/C++工程师面试题(数据库篇)
69 9
|
2月前
|
存储 分布式计算 大数据
HBase分布式数据库关键技术与实战:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析了HBase的核心技术,包括数据模型、分布式架构、访问模式和一致性保证,并探讨了其实战应用,如大规模数据存储、实时数据分析及与Hadoop、Spark集成。同时,分享了面试经验,对比了HBase与其他数据库的差异,提出了应对挑战的解决方案,展望了HBase的未来趋势。通过Java API代码示例,帮助读者巩固理解。全面了解和掌握HBase,能为面试和实际工作中的大数据处理提供坚实基础。
120 3
|
2月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
108 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
2月前
|
NoSQL 安全 Unix
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅(中)
Redis源码、面试指南(4)单机数据库、持久化、通知与订阅
30 0
|
2天前
|
SQL 安全 Java
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
Java面试题:什么是JDBC以及如何在Java中使用它进行数据库操作?
5 0
|
2天前
|
druid Java 数据库连接
Java面试题:解释数据库连接池的概念及其作用,讨论常见的连接池实现。
Java面试题:解释数据库连接池的概念及其作用,讨论常见的连接池实现。
9 0
|
2天前
|
SQL Java 关系型数据库
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
13 0
|
2天前
|
SQL 监控 Java
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
Java面试题:简述数据库性能优化的常见手段,如索引优化、SQL语句优化等。
8 0
|
2月前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
460 9
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
2月前
|
存储 NoSQL Redis
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群(下)
Redis源码、面试指南(5)多机数据库、复制、哨兵、集群
240 1