我有几个表:帐户和员工,我正在尝试为帐户和员工之间的任何给定组合存储评级和时间戳。对于给定的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);
答案 0 :(得分:1)
使用唯一索引实现唯一约束。
因此,不需要单独创建索引。
中所述在大多数情况下,UNIQUE和PRIMARY KEY约束由。实现 在数据库中创建唯一索引。 (例外是INTEGER 关于WITHOUT ROWID表的PRIMARY KEY和PRIMARY KEY。)
根据您的描述,唯一约束似乎是正确的。