站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题用hibernate的话这样的主键应该用什么来肯定它的唯一性呢

用hibernate的话这样的主键应该用什么来肯定它的唯一性呢

摘要: 用hibernate的话这样的主键应该用什么来肯定它的唯一性呢


我的数据库老差劲了,编程以来,还没用过外键呢,

不知道外键在什么情况下用,这下要做oa了,我想应该要用外键更方便点吧。

所以想知道在什么情况下要用外键。我用mysql。

另外,我扒了别人的数据库,我之前用的主键都是数值,自增的。什么都不用操心,这下,主键也变成字符串了,而且这个主键是用这样的字符串组合成的。

就是这个表的表名+当前日期+0000,后面的0000就是像数值一样的自增了,不知道插入数据的时候这个主键要怎么处理啊,另外用hibernate的话这样的主键应该用什么来肯定它的唯一性呢。


比如现在你有两张table:
table1 是人事员工编号表,字段如下:userID,是主键
userID userName
001 张三
002 李四
table2 是员工出勤流水表,标识公司员工出勤情况,字段如下:ID,是主键
ID userID Date
1 001 "20061030"
2 002 "20061031"
3 001 "20061101"
你就可以建立table1和table2的userID的关联.而userID不是table2的主键,同时它又是table1的主键,那么userID对于table2来讲就是外键.
希望我表达的很清楚!


谢谢,呵呵,终于有好心人回复了,表达的很清楚,谢谢前辈。

那我也举个例子:比方说有一个表
流程表:liuchengid liuchengTypeid
流程1 流程类别1
流程类别表: liuchengTypeid typeName
流程类别1 流程类别

这样的话流程表里的liuchengTypeid也属于外键吗。还是外键一定要既是这个表的主键又是另一个表的主键才算是外键


另外,外键应该怎么建立啊,建了外键,是不是删除了流程类别,就能把该类别下的所有流程全都删除掉啊,如果要这么实现的话,那sql语句该怎么写啊,

不好意思,问题有点多,菜鸟,没办法啊。


先学习数据库原理吧.你这样就开始设计数据库,弄出的系统恐怕难以恭维.得罪之处请包涵


谢谢指教,不过有点受打击哦。

数据库确实没学好,可是咱这是在小公司,没有专门的人设计数据库,只好自己乱学一气了,星期天本来也打算去买几本书看看了,

不过我刚刚把外键建好了,正如我预期的,删了类别就把该类别下的流程全删了,不知道这样算不算成功了,

还是老问题,流程与流程类别的关系,那样到底算不算外键的关系啊。


算外键啊
你这句话有点问题:
还是外键一定要既是这个表的主键又是另一个表的主键才算是外键
外键是:还是外键一定要既是这个表的主键又不是另一个表的主键才算是外键(应该是不是另一个表的主键)
而且在你向流程表插入数据的时候。你的liuchengTypeid的取值必须先在流程类别表中存在!


一个表的外键,必须是引用另外一个表的主键.外键列的值必须是所引用表的主键值,或者为空.oracle没有级联删除功能,如果要实现,使用触发器或程序实现.sqlserver可以设置级联删除.


呵呵,谢谢,我用的是mysql,可以级联删除。 不过老板好像要求用oracle,看来要实现级联删除还麻烦了。

现在单一的外键我倒都能实现,也能理解了,现在的表一个关联一个,有的一个关联好几个,我就乱了。一个表是可以设置多个外键的吧。这个我还没找到这样的脚本。

那如果有一个file表中。它存放的是word文件的名称,路径。它有一个字段叫owner_id 用来标识这个word文件是属于哪个word模板,或是哪个申请表的。而模板和申请表又分别是两个表,也就是说file表的这个字段关联了两个表的主键。

那么这个又该怎么写呢,脚本。

级联似乎包括了挺多种的吧。我在这先多少了解点,然后真的得翻翻书了,怪只怪上学的时候没有好好听,可是那时候真不知道有这么重要。整天不知所云,还觉得老师讲得都是没用的东西。


另外,oracle真的不能实现级联删除吗,在脚本里加上
ON DELETE CASCADE
ON UPDATE CASCADE,
也不行吗

我说错了.oralce不能级联更新.但可以删除.
一个表可以有多个外键.看看书就明白了,先别忙动手


↑返回目录
前一篇: 登陆小程序:布置好后,第一个页面可仿问,但一到下一页面就不行了:
后一篇: 每次执行ftpClient = new FtpClient(hostname, ipPort)时,程序不执行下去