2 qqqwwweeerrrttt123 qqqwwweeerrrttt123 于 2016.01.20 23:04 提问

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

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

3个回答

caozhy
caozhy   Ds   Rxr 2016.01.20 23:15

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

qqqwwweeerrrttt123
qqqwwweeerrrttt123   2016.01.21 08:40

#机构信息表
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="采集日期"),
如上所述 如果下表只用上表的“内部机构号”做外键,但是需要采集时间一起确定数据准确性,我该如何处理

beau_lily
beau_lily   2016.01.21 10:39

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!