社区
基础和管理
帖子详情
外键关联主键是否可以是varchar2字段?
KnowKjava
2010-04-03 09:17:03
比如表A,主键ID是varchar2
表B外键约束,某字段指向表A主键
不知道这样可以否?有什么不好的地方没?
以前这样写的时候,表A的主ID都是number型的说。
...全文
303
11
打赏
收藏
外键关联主键是否可以是varchar2字段?
比如表A,主键ID是varchar2 表B外键约束,某字段指向表A主键 不知道这样可以否?有什么不好的地方没? 以前这样写的时候,表A的主ID都是number型的说。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yugiant
2010-04-10
打赏
举报
回复
当然是可以的,用某些可视化工具直接拖动是才不管你是什么类型呢
yurui05
2010-04-07
打赏
举报
回复
可以。不过一般这个主键不是自己输入的。而是插入记录的时候自动生成的md5码 可保证唯一
ojuju10
2010-04-07
打赏
举报
回复
可以为varchar2类型
类型的选择与字段里面的值有关系的
gll0809
2010-04-07
打赏
举报
回复
学习了
tangren
2010-04-07
打赏
举报
回复
外键所引用的主键是什么类型没有关系的。
但外键还是要谨慎使用,如果不是了解很透彻,可能全产生麻烦。
一般来说,可以通过程序来控制一部分逻辑。
fangpengyu
2010-04-06
打赏
举报
回复
可以的
duqiangcise
2010-04-06
打赏
举报
回复
完全支持。
bestdowt1314
2010-04-03
打赏
举报
回复
没关系,我们的数据库都是用这一类型
horizonlyhw
2010-04-03
打赏
举报
回复
恩 主要还是控制 和 类型没啥关系
codearts
2010-04-03
打赏
举报
回复
>外键关联主键是否可以是varchar2字段?
可以。
但是别忘了,外键上一定要建立索引,否则性能影响严重。
或者,别用索引了,用ORACLE做的系统都不加索引的。
tfwin2
2010-04-03
打赏
举报
回复
没有什么不好的,有时候我们主键就是用VARCHAR2的,只要这个主键不是用户随便输入的,而是你自己根据序列或时间生成的就好,如果用户自己输入,那确实有空格比较的问题。。。。
但是程序做的好,这些也没什么的。
飞机订票系统数据库表.docx
1. 普通用户表(users)
字段
名称 类型 记录内容
是否
为空 备注 user_id
Varchar
2(50) 用户名 0
主键
password
Varchar
2(20) 密码 0 name
Varchar
2(20) 用户姓名 1 telephone
Varchar
2(20) 固定电话 1 mobile
Varchar
2(20) 手机 1 address
Varchar
2(100) 用户地址 1 email
Varchar
2(50) Email 1 管理员表(administrators)
字段
名称 类型 记录内容
是否
为空 备注 admin_id
Varchar
2(50) 用户名 0
主键
password
Varchar
2(20) 密码 0 id_number
Varchar
2(20) 身份证号 0 name
Varchar
2(20) 管理员真实姓名 0 telephone
Varchar
2(20) 固定电话 1 mobile
Varchar
2(20) 手机 0 address
Varchar
2(100) 管理员家庭地址 0 email
Varchar
2(50) Email 0 登录表(login)
字段
名称 类型 记录内容
是否
为空 备注 id
Varchar
2(20) 用户名 0
主键
password
Varchar
2(20) 密码 0 订单表(order)
字段
名称 类型 记录内容
是否
为空 备注 auto number 序号 0
主键
,自增长 order_id Vachar2(100) 订单编号 0 user_id
Varchar
2(20) 用户id 0
外键
(用户表) ticket_id
Varchar
2(40) 票编号 0
外键
(票务信息) time Date 下单时间 0 票务信息(tickets)
字段
名称 类型 记录内容
是否
为空 备注 ticket_id Vachar2(100) 机票编号 0
主键
airline
Varchar
2(50) 所属航空公司 0
外键
(航班信息) filght_number
Varchar
2(50) 航班号 0
外键
(航班信息) cab
Varchar
2(50) 舱位类型 0 pirce number 舱位对应价格 0
外键
(航班信息) 航班信息表(flight_info)
字段
名称 类型 记录内容
是否
为空 备注 filght_number Vachar2(30) 航班号 0 由航空公司提供,
主键
start_time
Varchar
2(40) 出发时间 0 end_time
Varchar
2(40) 到达时间 0 range_type
Varchar
2(10) 往返类型 0 单程,往返 departure
Varchar
2(40) 始发地 0 destination
Varchar
2(40) 目的地 0 airline
Varchar
2(30) 航空公司 0 price number 机票基础价格 0 用户操作记录表(deal_log)
字段
名称 类型 记录内容
是否
为空 备注 auto number 用户编号 0
主键
,自增长 user_id
Varchar
2(30) 用户id 0
外键
(普通用户) op_type
Varchar
2(40) 操作类型 0 订票,退票,改签 ticket_id
Varchar
2(40) 机票编号 0
外键
(票务信息) time
Varchar
2(10) 时间 0
售票系统设计方案.pdf
售票系统设计⽅案 售票系统设计⽅案 1.架构设计 架构设计 1. 系统架构选型 系统架构选型 从软件架构⾓度,本系统采⽤了MVC分层的设计思想,各层级只需要关注本⾝的设计,⽽不需要关注其他层级的内部细节,层与层之间定义了良好的交互⽅式。具体⽽⾔,本系统可 以分为三个⽔平层,分别是展⽰层,业务服务层和数据库层;系统总体结构如下图所⽰。 2. 软件架构风格 软件架构风格 本系统采⽤浏览器-服务模式(B/S模式),该模式是Web兴起后的⼀种⽹络结构模式。相⽐较传统的C/S模式,B/S结构的重要特征就是分布性强、开发简单、共享性强、总体拥有 费⽤低。这种模式统⼀了客户端,将系统功能实现的核⼼部分集中到服务器上,简化了系统的开发、维护和使⽤。 BS架构优势总结如下: 分布性强,客户端零维护。只需有⽹络、浏览器,能够随时随地实⾏查询、浏览等业务处理。 业务扩展简单便利,通过添加⽹页就可以添加服务器功能。 维护简单便利,只须要更改⽹页,就可以完成全部⽤户的同步更新。 开发简单,共享性强。 2. 业务概念原型 业务概念原型 1. ⽤例设计 ⽤例设计 ⽤户主要功能:⽤户注册、⽤户信息维护、查找车票、购买车票、改签及退票 后台管理员主要功能:列车信息维护、站点信息维护、车次设置 2. UML类图设计 类图设计 根据业务需求描述,结合⾯向对象的思想,抽象出类、属性、⽅法,同时确定概念之间的关系,构建UML类图: 3. 数据库设计 数据库设计 采⽤关系数据库mysql进⾏设计 ( (1)⽤户表 )⽤户表 ( (2)⾓⾊表 )⾓⾊表 ( (3) ) ⽤户⾓⾊
关联
表 ⽤户⾓⾊
关联
表 ( (4) ) 车次表 车次表 ( (5) ) 列车表 列车表
字段
名称
字段
名称
字段
类型
字段
类型
字段
描述
字段
描述 userId int
主键
account
varchar
账号 password
varchar
密码 name
varchar
姓名 sex
varchar
性别 phonenum number 电话号码 certificate_type
varchar
证件类型 certificate_num number 证件号码 authority
varchar
权限 info
varchar
其它信息
字段
名称
字段
名称
字段
类型
字段
类型
字段
描述
字段
描述 roleId int
主键
role_type
varchar
⾓⾊类型 authority
varchar
权限 descr
varchar
描述
字段
名称
字段
名称
字段
类型
字段
类型
字段
描述
字段
描述 urId int
主键
userId int ⽤户
主键
【
外键
】 roleId int ⾓⾊
主键
【
外键
】
字段
名称
字段
名称
字段
类型
字段
类型
字段
描述
字段
描述 trainSequenceId int
主键
trainNum number 车次号 trainId int 列车号 start_station
varchar
起点站 end_station
varchar
终点站 launch_time datetime 启动时间
字段
名称
字段
名称
字段
类型
字段
类型
字段
描述
字段
描述 trainId int
主键
( (6) ) 车厢表 车厢表 ( (7) ) 座位表 座位表 ( (8) ) 站点表 站点表 ( (9) ) 车次站点表 车次站点表 ( (10) ) 订单表 订单表 trainName
varchar
列车名称【
外键
】 type
varchar
列车类型 carriage_num int 车厢数 status int 状态
字段
名称
字段
名称
字段
类型
字段
类型
字段
描述
字段
描述 carriageId int
主键
trainId int 列车
主键
【
外键
】 carriage_number int 车厢号 carriage_type int 车厢类型 price_coef int 价格系数
字段
名称
字段
名称
字段
类型
字段
类型
字段
描述
字段
描述 seatId int 座位
主键
carriageId int 车厢
主键
【
外键
】 trainId int 列车
主键
【
外键
】 seat_number int 座位号 bitmap int 座位站点状态位图
字段
名称
字段
名称
字段
类型
字段
类型
字段
描述
字段
描述 stationId int 站点
主键
name
varchar
站点名称 descr
varchar
站点级别
字段
名称
字段
名称
字段
类型
字段
类型
字段
描述
字段
描述 train_sta_Id int 车次站点
主键
trainSequenceId int 车次
主键
【
外键
】 station_sequence int 站点序列 arrive_time datetime 到达
MySQL 数据库的基本操作(数据完整性约束)
Re:MySQL 数据库的基本操作(数据完整性约束) ======================================== # 数据库的基本操作 创建 删除 数据库、创建 删除表 修改 表名 数据类型
字段
名 添加
字段
删除
字段
调整
字段
位置 更换...
OA数据库设计.docx
OA数据库设计 OA数据库设计文档 1、用户信息表(UserInfo)
字段
名称
字段
含义
字段
大小
是否
为空
是否
外键
说明 UserId 用户id Integer 否 否
主键
自增 UserName 用户名
Varchar
(50) 否 否 用户名 PassWord 密码
Varchar
(50) 否 否 密码 Address 地址
varchar
(500) 否 否 地址 RoleId 角色id Integer 否 是
外键
, RoleInfo的RoleId UserState 用户状态 Integer 否 否 0-正常,1-屏蔽 DepartId 部门id Integer 否 是
外键
,DepartInfo的DepartId IsDelete
是否
删除 Integer 否 否 0-未删除,1-删除 UserImage 用户照片
varchar
(50) 否 否 用户头像 Status
是否
在线 Integer 否 否 0-离线1-在线2-忙碌3-离开 2、人事档案表(personalfile)
字段
名称
字段
含义
字段
大小
是否
为空
是否
外键
说明 PfId 档案编号 Integer
SQLServer生成所有
外键
存储过程
SQLServer生成所有
外键
存储过程,需要一次性将所有
varchar
改为N
varchar
,有些表具有
外键
限制不能用代码改。用这个过程,不用再每个表都检查了,不然天量的
字段
,改到什么时候哦。
基础和管理
17,377
社区成员
95,128
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章