对于store
我有很多store_offers
这是一对多的关系。
然而,对于表
create table store (
id bigserial primary key
);
我可以使用一个主键id
(SQLfiddle):
create table store_offer (
id bigserial primary key,
store_id bigint not null,
constraint fk__store_offer__store
foreign key (store_id)
references store(id)
);
或复合主键(id, store_id)
(SQLFiddle):
create table store_offer (
id bigserial not null,
store_id bigint not null,
constraint fk__store_offer__store
foreign key (store_id)
references store(id),
primary key(id, store_id)
);
我的问题是" 这里更有意义的是什么?"。 Imho复合键应该是正确的方法,因为store_offer
实际上是" 绑定"为store
。但有人可以说,由于第一个版本有一个外键,情况就已如此。另一方面,store_offer
主键实际上不能在创建后更改。你必须创建一个新的store_offer
并删除旧的store_id
如果要丢弃旧的Sub Process_Globals
Dim Timer1 As Timer
....
End Sub
Sub Activity_Create(FirstTime As Boolean)
Timer1.Initialize("Timer1", 1000) ' 1000 = 1 second
Timer1.Enabled = True
...
End Sub
Sub b_reponse1_Click
p= p + 1
If b_reponse1.Text = r5 Then
score = score + 1
b_reponse1.Color=Colors.Green
CallSub("",timer1_tick) ' Here i call sub timer1_tick
b_reponse1.Color=Colors.Gray
Else
b_reponse1.Color=Colors.Red
b_reponse1.Color=Colors.Gray
End If
If nbqpassee = 10 Then
Activity.RemoveAllViews
Activity.LoadLayout("lay_main")
Else
CallSub("",loadq)
End If
End Sub
。但是你不能简单地在第二种方法中改变Sub timer1_tick
t = t + 1
Log(t)
End Sub
。
那么这里的答案是什么?
答案 0 :(得分:0)
使用主键(id,store_id)是个坏主意。这将使许多查询更复杂,更容易出错。听起来你真正想要做的是商店和优惠之间的多对多关系。如果是这种情况,您应该有一个存储表,其中唯一的store_id作为主键,商品表具有唯一的offer_id作为主键,store_offer表具有store_id和offer_id的主键。