oracle-数据库联合主键问题,各位大神过过眼

问题描述

数据库联合主键问题,各位大神过过眼

急救,如果这数据库中使用工号(不可使用递增)和日期做联合主键,来确定查询数据的唯一性,我该怎么处理

解决方案

如果你是开发实际项目,建议你的主键不要和任何业务相关,万一你的老板说,工号和日期也允许重复,或者你需要分库并库,你就给自己挖坑了。
你只要把工号日期做一个唯一约束就可以了。

解决方案二:

#机构信息表
T_GX_JGXX = Table('T_GX_JGXX',con.metadata,
Column('YXJGDM', String(30), nullable=False,doc='银行机构代码'),
Column('NBJGH', String(30), nullable=False,primary_key=True,doc="内部机构号" ),
Column('YXJGMC', String(200), nullable=False,doc="银行机构名称" ),
Column('JRXKZH', String(30), nullable=False,doc="金融许可证号" ),
Column('JGLB', String(30), nullable=False, doc="机构类别:其他,总行,分行,支行,网点 "),
Column('YZBM', String(6), nullable=False, doc="邮政编码"),
Column('WDH', String(30), doc="网点号" ),
Column('YYZT', String(10), nullable=False,doc="营运状态:营业,停业,被合并" ),
Column('CLSJ', String(8), nullable=False, doc="成立时间"),
Column('JGGZKSSJ', String(6),doc="机构工作开始时间" ),
Column('JGGZZZSJ', String(6),doc="机构工作终止时间" ),
Column('JGDZ', String(400),nullable=False,doc="机构地址" ),
Column('FZRXM', String(100),doc='负责人姓名'),
Column('FZRZW', String(60),doc='负责人职务'),
Column('FZRLXDH', String(30),doc='负责人联系电话'),
Column('CJRQ',String(8),nullable=False,primary_key=True,doc='采集日期'),
info={'doc':'本表只报送实际发生业务的实体机构,包括业务中心,不报送虚拟机构。上级管理机构名称(SJGLJGMC)应为该表中存在的机构,如果是虚拟机构,则应当归并到同级的实体>机构中'},
)

#员工表
T_GX_YGB = Table('T_GX_YGB',con.metadata,
Column('GH', String(30), nullable=False,primary_key=True,doc='工号'),
Column('YXJGDM', String(30), nullable=False,doc='银行机构代码'),
Column('JRXKZH', String(30), nullable=False,doc="金融许可证号" ),
Column('NBJGH', String(30), ForeignKey('T_GX_JGXX.NBJGH'), nullable=False, doc="内部机构号"),
Column('YXJGMC', String(200), nullable=False,doc="银行机构名称" ),
Column('XM', String(30), nullable=False, doc="姓名"),
Column('SFZH', String(30), nullable=False, doc="身份证号:隐私,监管部门变形"),
Column('LXDH', String(30), doc="联系电话:区号-座机号码/手机"),
Column('WDH', String(30), doc="网点号"),
Column('SSBM', String(60), nullable=False, doc="所属部门"),
Column('ZW', String(60), nullable=False, doc="职务"),
Column('YGZT', String(30), nullable=False, doc="员工状态"),
Column('GWBH', String(60), doc="岗位编号"),
Column('CJRQ', String(8), nullable=False,primary_key=True, doc="采集日期"),
如上所述 如果下表只用上表的“内部机构号”做外键,但是需要采集时间一起确定数据准确性,我该如何处理

解决方案三:

1、不建议做什么外键 不然到时候删除主表数据的时候要判断从表是否有主表数据
2、你用查询确定唯一性 要么给相关的联合字段做唯一约束 要么增加条件

时间: 2024-09-17 04:21:15

oracle-数据库联合主键问题,各位大神过过眼的相关文章

oracle删除主键查看主键约束及创建联合主键_oracle

1,主键的删除 ALTER TABLE TABLENAME DROP PRIMARY_KEY 执行上面的SQL可以删除主键:如果不成功可以用 ALTER TABLE TABLENAME DROP CONSTRAINTS COLUMN CASCADE; --删除约束 ALTER TABLE TABLENAME DISABLE PRIMARY_COLUMN ; --设置被设置为主键的列为无效 DROP INDEX INDEX_NAME; --删除主键索引 2,查看主键约束 SELECT * FROM

mysql auto_increment 与 联合主键冲突问题

mysql 5.5之前,auto_increment字段必须为主键,有的时候,这种自增字段,并没有多大的实际意义,而我们需要多个字段组成主键. 例如: 用户只能对购买的商品,进行一次评价,评价的自增ID,没什么用处,用户的ID和商品ID组成的联合主键,意义就大的多了.如果想保留auto_increment字段,就要使用高版本的mysql了. mysql> ALTER TABLE `order` DROP PRIMARY KEY ,ADD PRIMARY KEY ( `user_id` , `or

oracle联合主键问题,2个主键确定数据

问题描述 oracle联合主键问题,2个主键确定数据 #机构信息表T_GX_JGXX = Table('T_GX_JGXX'con.metadataColumn('YXJGDM' String(30) nullable=Falsedoc='银行机构代码')Column('NBJGH' String(30) nullable=Falseprimary_key=Truedoc=""内部机构号"" )Column('YXJGMC' String(200) nullable

数据库模型设计——主键的设计

在数据库设计时,主要就是对实体和关系的设计,实体表现出来就是表,关系表现出来就是外键.而对于一个表,由两部分组成:主键和属性.主键的简单定义就是表中为每一行数据的唯一标识.其实更准确的说法,每一行数据的唯一标识是候选键(Candidate Key),一个表中可以有很多个候选键,主键是候选键中的一个,主要用于更方便的检索和管理数据.一个表中可以有多个候选键,但是只有一个主键.由于主键常常用于检索数据,也用于表之间的关联,所以主键的设计的好坏将会严重影响数据操作的性能.下面来介绍下主键设计的几个考虑

SQL SERVER数据库表主键设计

1. 序言 当前,随着信息量的急剧增加,对于数据的存储和管理方式,各企业都逐渐摆脱了之前的依靠文件系统(文本文件或者Excel)或者一些桌面型的小型数据库系统(如Access.FoxBASE或者DBase)的状态,转而通过一些大型数据库来管理企业的信息.这些大型数据库系统包括Oracle.MS SQL Server或者IBM DB2.尽管目前数据库系统也在向面向对象的数据库系统方向发展,但是上述的传统的关系型数据库系统依然占据着主要位置. 笔者从九十年代末开始以关系型数据库系统为基础为客户进行管

如何解决Oracle GoldenGate 没有主键的问题?

如何解决Oracle GoldenGate 没有主键的问题? 本站文章除注明转载外,均为本站原创: 转载自love wife & love life -Roger 的Oracle技术博客 本文链接地址: 如何解决Oracle GoldenGate 没有主键的问题? 针对没有主键的情况,GoldenGate大概提供了3种方案,大致如下: 1.默认使用所有列当主键,通过keycols来实现,这种其实存在一定的问题,在这次的项目中直接否定. 2.通过在源端表中添加ogg_key_id列的方式来实现,这

Hibernate(5)—— 联合主键 、一对一关联关系映射(xml和注解) 和 领域驱动设计

俗话说,自己写的代码,6个月后也是别人的代码--复习!复习!复习!涉及的知识点总结如下: One to One 映射关系 一对一单向外键(XML/Annotation) 一对一双向外键关联(XML/Annotation) 联合主键 一对一单向外键联合主键(Xml/Annotation) 一对一组件关联(XML/Annotation) 理解组件 领域驱动设计--自动生成数据库脚本 一对一关系的小结 一些出错问题的总结   自动生成数据库脚本 一般在项目开发过程中,我们的习惯是先建好数据库和表,然后

【HIBERNATE框架开发之四】HIBERNATE-ANNOTATION常用的注解归总&&ID的生成策略&&联合主键

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/hibernate/811.html 这篇主要讲解Hibernate中Annotation的常用注解和ID的生成策略以及联合主键三块:     首先介绍些常用的Annotation注解: 1.  当表名与类名不一致: @Table(name="数据库表名")        (javax.persistence)      如果类名与

联合主键问题

问题描述 因为开发环境问题.无法粘贴代码,只有截图了:不要嫌弃呀主键类:实体类:调用:错误:初学java请大神指点.查询的这个表无主键.但可以做这样一个联合主键.结果还是报错.求指正 解决方案 本帖最后由 sun280660410 于 2014-07-02 21:11:04 编辑解决方案二:主键类里是重写了hashcode没有截上