我们可以在数据库中存储多个数据条目,只对应一个主键/序列ID?

时间:2014-07-18 06:53:34

标签: mysql sql database database-design database-schema

是否可以在数据库中插入与一个id对应的多个数据条目。 我想插入如下所示的数据:

   Seq_id    Name            Value

    1.       Bill.billNo     1234
             Bill.date       25/07/2014
             Person.fname     abc
             Person.lname     xyz

    2.       Bill.billNo     1220
             Bill.date       11/07/2014
             Person.fname     def
             Person.lname     ghy

1 个答案:

答案 0 :(得分:3)

将表格定义为:

CREATE TABLE YourTable (
    seq_id INT NOT NULL,
    name VARCHAR(30) NOT NULL,
    value VARCHAR(100),
    PRIMARY KEY (seq_id, name)
);

表格内容为:

Seq_id    Name            Value

1        Bill.billNo     1234
1        Bill.date       25/07/2014
1        Person.fname     abc
1        Person.lname     xyz

2        Bill.billNo     1220
2        Bill.date       11/07/2014
2        Person.fname     def
2        Person.lname     ghy

如果您希望seq_id为每个名称单独自动递增,则应为:

CREATE TABLE YourTable (
    seq_id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(30) NOT NULL,
    value VARCHAR(100),
    PRIMARY KEY (name, seq_id)
) ENGINE=MyISAM;

您必须对PRIMARY KEY子句中的列重新排序,因为自动增量列必须是键中的辅助列。您必须使用MyISAM,因为InnoDB中无法使用辅助列自动增量。

确保在添加行时,同时添加特定seq_id的所有名称。否则,当它自动递增时,它们会在名称之间失去同步。