数据库设计:
三范式(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