Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中存储DATETIME类型的数组_Mysql_Datetime - Fatal编程技术网

在MySQL中存储DATETIME类型的数组

在MySQL中存储DATETIME类型的数组,mysql,datetime,Mysql,Datetime,我需要知道每一次一个物体被放进容器和从容器中取出。如何为每个“time_in”和“time_out”(单独的列)都设置一个字段,并在每个字段中存储可变数量的DATETIME对象?是否可以在MySQL中存储DATETIME类型数组?这里有一个典型的1:n关系。这可以这样建模: create table item ( item_id integer not null primary key ); create table movement ( item_id integer not nul

我需要知道每一次一个物体被放进容器和从容器中取出。如何为每个“time_in”和“time_out”(单独的列)都设置一个字段,并在每个字段中存储可变数量的DATETIME对象?是否可以在MySQL中存储DATETIME类型数组?

这里有一个典型的1:n关系。这可以这样建模:

create table item
(
  item_id integer not null primary key
);

create table movement
(
  item_id integer not null,
  time_in timestamp not null,
  time_out timestamp not null,
  primary key (item_id, time_in), 
  foreign key (item_id) references item (item_id)
);

insert into item 
values
(1),
(2),
(3);

insert into movement (item_id, time_in, time_out)
values 
(1, timestamp '2014-02-12 00:00:00', timestamp '2014-02-12 14:17:10'),
(1, timestamp '2014-02-12 14:03:00', timestamp '2014-02-12 16:07:40'),
(1, timestamp '2014-02-12 18:00:42', timestamp '2014-02-12 22:10:05'),
(2, timestamp '2014-02-12 01:00:00', timestamp '2014-02-12 06:06:19'),
(2, timestamp '2014-02-12 15:16:17', timestamp '2014-02-12 16:17:18'),
(3, timestamp '2014-02-12 01:01:01', timestamp '2014-02-12 03:03:03'),

你有一个典型的1:n关系。这可以这样建模:

create table item
(
  item_id integer not null primary key
);

create table movement
(
  item_id integer not null,
  time_in timestamp not null,
  time_out timestamp not null,
  primary key (item_id, time_in), 
  foreign key (item_id) references item (item_id)
);

insert into item 
values
(1),
(2),
(3);

insert into movement (item_id, time_in, time_out)
values 
(1, timestamp '2014-02-12 00:00:00', timestamp '2014-02-12 14:17:10'),
(1, timestamp '2014-02-12 14:03:00', timestamp '2014-02-12 16:07:40'),
(1, timestamp '2014-02-12 18:00:42', timestamp '2014-02-12 22:10:05'),
(2, timestamp '2014-02-12 01:00:00', timestamp '2014-02-12 06:06:19'),
(2, timestamp '2014-02-12 15:16:17', timestamp '2014-02-12 16:17:18'),
(3, timestamp '2014-02-12 01:01:01', timestamp '2014-02-12 03:03:03'),

我可能会设计一个表来存储
time\u in
time\u out
如下所示:

object_time

    object_time_id - Int - Auto Increment - Primary Key
    object_id - Int
    object_time - Datetime
    object_time_in_or_out - Char(1) - Default '' - 'I' for In , 'O' for Out
实例化对象(在构造函数中)时,为对象生成一个
唯一id
。从那时起,对于每个
time\u in
time\u out
在上表中添加一个新行


如果在和中有两个单独的
time\u列
,要更新
time\u out
,必须跟踪中的
time\u对应的行。这可以通过两个列都只有一列来消除。

我可能会设计一个表来存储
time\u in
time\u out
,如下所示:

object_time

    object_time_id - Int - Auto Increment - Primary Key
    object_id - Int
    object_time - Datetime
    object_time_in_or_out - Char(1) - Default '' - 'I' for In , 'O' for Out
实例化对象(在构造函数中)时,为对象生成一个
唯一id
。从那时起,对于每个
time\u in
time\u out
在上表中添加一个新行


如果在
和中有两个单独的
time\u列
,要更新
time\u out
,必须跟踪中的
time\u对应的行。这可以通过两个列都只有一列来消除。

我已经有了这两列,我的问题是如何将DATETIME对象数组存储到每个列中。我必须序列化它并作为字符串存储吗?因为一个项目可以放进去一次,取出一次,或者放进去10次,取出10次。我想要一份每次放入和取出的记录,不管发生了多少次。你能再解释一下吗?或者链接到解释它是如何执行的?非常好的解释。如果你把这个作为答案,我会把你标记为正确。我已经有了这两列,我的问题是如何在每列中存储一个DATETIME对象数组。我必须序列化它并作为字符串存储吗?因为一个项目可以放进去一次,取出一次,或者放进去10次,取出10次。我想要一份每次放入和取出的记录,不管发生了多少次。你能再解释一下吗?或者链接到解释它是如何执行的?非常好的解释。如果你把这个作为答案,我再问你一个问题。您将移动的主键设置为('item\u id','time\u in')。但是如果一个项目被多次放置,它没有一个唯一的值,那么这会造成问题吗?你不需要第一个“time_in”作为它的唯一标识符吗?@ejfrancis:这取决于你的要求,你允许同一物品在完全相同的时间进入两次吗?如果是,那么您可能需要一个生成的密钥。如果
item
是具有多个“实例”(例如,一个图书馆有一本书的4个副本)的内容,您可能需要使用附加属性来区分这些“实例”。还有一个问题。您将移动的主键设置为('item\u id','time\u in')。但是如果一个项目被多次放置,它没有一个唯一的值,那么这会造成问题吗?你不需要第一个“time_in”作为它的唯一标识符吗?@ejfrancis:这取决于你的要求,你允许同一物品在完全相同的时间进入两次吗?如果是,那么您可能需要一个生成的密钥。如果
item
具有多个“实例”(例如,一个图书馆有一本书的4个副本),您可能需要使用附加属性来区分这些“实例”。一般来说,我同意,但考虑到MySQL作为DBMS,这种设计存在一定的问题(例如,一个项目在“中”停留了多长时间)-如果不能使用窗口函数,效率会很低)一般来说,我同意,但考虑到MySQL作为DBMS,这种设计会有一些相当大的问题(例如,一个项目“停留”了多长时间)-如果不能使用窗口函数,效率会很低