如何处理SQLite表中的重复条目?

时间:2012-11-14 07:44:09

标签: sql sqlite

没有数据库设计经验。我有以下情况: 一个包含5个条目的表。

<DeviceIdentificationstr, data1, data2, data3.... data 5>

一个表可以有多个设备信息。 我设计了这样的东西:

create table mytable (
  sNo integer PRIMARY KEY,
  DeviceIdentificationStr TEXT,
  data1 integer,
  data2 TEXT, ....)

考虑以下场景:

Record 1:    1, "Device1", "data1",  20, "data2", "data3"....
Record 2:    2, "Device2", "data1",  120, "data2", "data3"....
Record 3:    3, "Device2", "data1",  220, "data2", "data3"....
Record 4:    4, "Device1", "data1",  230, "data2", "data3"....

此处Device1Device2一直在重复。

有没有其他方法来设计表格?或者这是唯一的出路?

另外,我需要查询类似::获取“Device1”的所有记录。

2 个答案:

答案 0 :(得分:3)

您可以执行所谓的规范化:创建另一个表devices

CREATE TABLE devices (
    device_id INTEGER PRIMARY KEY,
    DeviceIdentificationStr TEXT,
    DeviceMemory INTEGER,
    -- add more fields that describe device properties...
);

将第一个表更改为:

CREATE TABLE mytable (
    sNo INTEGER PRIMARY KEY,
    device_id INTEGER,
    data1 integer,
    data2 TEXT,
    ...
)

现在,您可以使用联接来获取所需的信息,如下所示:

SELECT m.*,
    d.DeviceMemory,
    ...
FROM mytable m
    JOIN devices d USING (device_id)
WHERE d.DeviceIdentificationStr = 'mydevice'

答案 1 :(得分:-1)

首先,您必须使用SELECT语句检查表中是否存在设备,然后使用UPDATE语句更新该特定行。