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"....

ここDevice1Device2は常に繰り返されます。

テーブルを設計する別の方法はありますか? それとも、これが唯一の方法ですか?

また、次のようなクエリを実行する必要があります: :「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 に答える