我有两个表定义如下。索引变量和外键
Create table tickets (id long not null,
reseller long not null,
constraint pk_lock primary key (id));
Create table ticketRegistrations (id long not null,
customer long not null,
constraint fkTicketRegistrationTicket
foreign key (id) references tickets (id) on update cascade);
客户端可以输入票据(因此不会自动增加主键)。由于id是ticketregistrations表的主键AND FOREIGN KEY,因此存在完整性约束和所有爵士乐。我遇到的问题是一个功能请求,它允许使用票证ID(即00070)进行零填充。据我所知,整数不能用零填充进行存储。
我想出了什么解决方案是在ticket表中添加一个ticketID varchar(8)not null列,并将两个表的实际id用作代理键。票证注册表的外键然后指向ticketid。
我的问题是关于效率和速度。以前,我可以在系统中添加票据注册,并且数据库会对添加进行完整性约束,以查看具有相同ID的票证是否在数据库中。现在我有一个varchar字符串作为将被索引的id。
当客户“注册票证”时,将ttytid varchar保留在票据表中并在票证注册表中使用ticketid的外键(也是varchar(8))会更容易吗?
或者在ticketregistrations中不存在ticketid varchar(8)会更容易,将ticket的外键保留为ticketregistrations表的主键,并首先检查ticket表中的ticketid,检索值,并将其输入到ticketregistrations内的一行中?
这将在每次插入ticketsregistrations表之前在票据表上创建索引varchar搜索。
我的初始解决方案并不需要这个,因为参照完整性处理了这个问题。
我很担心寻找时间。
什么数据库系统,以及它的版本? – 2009-09-14 17:01:59