【问题标题】:Am I defining all my keys correctly? Do I need to add an index?我是否正确定义了所有密钥?我需要添加索引吗?
【发布时间】:2016-05-10 01:35:41
【问题描述】:

我有几个表:Accounts 和Employees,我正在尝试为Accounts 和Employees 之间的任何给定组合存储Rating 和Timestamp。对于给定的 Account + Employee 组合,同一时间戳不可能存在两个评级。

这是我目前所拥有的:

CREATE TABLE main_table (
    _ID INTEGER PRIMARY KEY AUTOINCREMENT, 
    account_id INTEGER NOT NULL, 
    employee_id INTEGER NOT NULL,
    rating REAL NOT NULL, 
    timestamp LONG NOT NULL, 
    FOREIGN KEY(account_id) REFERENCES ACCOUNTS(_ID), 
    FOREIGN KEY(employee_id) REFERENCES EMPLOYEES(_ID), 
    UNIQUE (account_id, employee_id, timestamp));

这是定义我要做什么的正确方法吗?我还需要创建一个单独的索引吗?

CREATE INDEX main_table_idx ON main_table (account_id, employee_id, timestamp);

【问题讨论】:

  • 这是一个 java 还是 android 的问题?
  • 表中的UNIQUE 索引有什么问题?
  • @shmosel Idk 上次我没有说明我使用的是 Java/Android 我受到了责备,所以我现在总是包含它
  • 我要冒昧地猜测上次 Java/Android 是相关的。
  • 在我看来,上次也无关紧要,但你能做什么——有时 StackOverflow 是不可能取悦的。

标签: sqlite indexing foreign-keys unique-constraint


【解决方案1】:

唯一约束是使用唯一索引实现的。

因此,不需要单独创建索引。

documentation中所述:

在大多数情况下,UNIQUE 和 PRIMARY KEY 约束由 在数据库中创建唯一索引。 (例外是整数 WITHOUT ROWID 表上的 PRIMARY KEY 和 PRIMARY KEY。)

根据您的描述,唯一约束似乎是正确的。

【讨论】:

  • 我不确定这如何回答上述问题
  • @user6183183 。 . . “我还需要创建一个单独的索引吗?”
  • 我不明白那个文档 sn-p 在说什么。用简单的英语怎么说?
  • @user6183183 。 . .它只是在说答案中的第一句话。:如果您创建唯一约束,那么您不需要额外的索引。它已经在那里了。
猜你喜欢
  • 1970-01-01
  • 2023-02-03
  • 2021-12-31
  • 2015-09-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多