我正在努力解决最近求职面试中提出的一个问题 但是我只是跳过了这个问题。 谁能帮我解决SQL查询。
用于发送SMS消息的服务在下表中包含已发送消息的日志:
TABLE smsMessage
messageId INTEGER PRIMARY KEY NOT NULL,
src VARCHAR(30) NOT NULL,
dest VARCHAR(30) NOT NULL,
status INTEGER NOT NULL
消息文本存储在表smsMessageText中。修改提供的SQLite create table语句,以便:
答案 0 :(得分:0)
这有点奇怪。这是0 / 1-1的关系,通常是通过将消息文本放在smsMessage
表中来实现的。通常不会使用第二张表。
create table smsMessage (
messageId INTEGER PRIMARY KEY, -- not null is redundant
src VARCHAR(30) NOT NULL,
dest VARCHAR(30) NOT NULL,
status INTEGER NOT NULL,
messageTextId int,
constraint fk_smsMessage_messageTextId foreign key (messageTextId) references smsMessageText(messageTextId)
);
create table smsMessageText (
messageTextId integer primary key, -- NOT NULL is redundant
messageText text,
constraint unq_messageText unique (messageText)
);
如果您只想存储消息的一个副本,即使它们有很多副本,也将使用第二张表 。在某些情况下,这可能会更有效(在空间方面)。