1

没有数据库设计经验。我有以下情况:一个有 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"....

在这里Device1并且Device2一直在重复。

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

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

4

2 回答 2

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'
于 2012-11-14T07:57:49.053 回答
-1

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

于 2012-11-14T07:51:36.297 回答