数据库设计:
三范式(OLD)
列的值唯一,不能有重复的列值
属性完全依赖于主键
必须满足第一范式
必须有主键
其他列必须完全依赖于主键
属性不依赖于其他非主属性(第二的加强)
必须满足第二范式
去除传递依赖
(在特定的场合,对效率的考虑 如:专门做冗余的时候,不要遵守第三)
Oracle 序列
可以通过序列来生成主键 一般的一个序列为一个表服务,也可以多个
创建序列
create sequence 序列名 start with 数值 incremet by 数值
| 不写 都是 1 |
删除序列
drop sequence 序列名
通过伪列 nextval 获取下一个值
select seq_stu.nextval from dual;
获取当前值 currval
select seq_stu.currval from dual;
create sequence seq_stu start with 100 incremet by5; select seq_stu.nextval from dual; insert into stu (id) values(seq_stu.nextval);
完整:
create table stu( s_id number(10), s_name varchar2(50), constraint s_pk primary key(s_id) ) create sequence Seq_stu start with 100 increment by 5; select * from stu;
package jdbc;
public class Stu {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}package jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class StuDAO {
private static final String SQL = "insert into stu(s_id,s_name) values(seq_stu.nextval,?)";
public void save(Stu stu) throws Exception{
Connection con = null;
try{
con = DBUtils.getConnection();
PreparedStatement stmt = con.prepareStatement(SQL);
stmt.setString(1,stu.getName());
stmt.executeUpdate();
}catch(Exception e){
throw e;
}finally{
if(con != null){
con.close();
}
}
}
}package jdbc;
import static org.junit.Assert.*;
import org.junit.Test;
public class TestStuDAO {
@Test
public void test() throws Exception {
StuDAO s = new StuDAO();
Stu ss = new Stu();
ss.setName("lmdtx");
s.save(ss);
}
} ER图(开源社区有真相)
找你喜欢的或者公司习惯的(工具) 实在不行a4纸
研究业务需求
设计绘制E-R关系图
设计文档
该写啥就写啥
本文出自 “浪漫的偷笑” 博客,请务必保留此出处http://lmdtx.blog.51cto.com/6942028/1840339
原文:http://lmdtx.blog.51cto.com/6942028/1840339