Database design 在开始/结束时间将数据写入表

Database design 在开始/结束时间将数据写入表,database-design,Database Design,如果我正确理解NOT NULL(当我将其用于任何可在表创建时写入的数据时),并且如果需要colunm数据,但需要在表创建后写入,则需要默认为NULL或NOT NULL(默认为“xxx”) 用例是会话表。 该行在用户登录时写入。因此,在这一点上,我们写日期、IP、会话id、成员id等。但是当用户注销时,我需要写结束日期时间、他在上的最后一页、注销模式等 因此,对于这些结束列,如果我使用NOTNULL,那么在创建行时将不会写入任何值。关于数据的写入方式,我是正确的还是遗漏了什么?如果您将这些结束列设

如果我正确理解NOT NULL(当我将其用于任何可在表创建时写入的数据时),并且如果需要colunm数据,但需要在表创建后写入,则需要默认为NULL或NOT NULL(默认为“xxx”)

用例是会话表。 该行在用户登录时写入。因此,在这一点上,我们写日期、IP、会话id、成员id等。但是当用户注销时,我需要写结束日期时间、他在上的最后一页、注销模式等


因此,对于这些结束列,如果我使用NOTNULL,那么在创建行时将不会写入任何值。关于数据的写入方式,我是正确的还是遗漏了什么?

如果您将这些结束列设置为非空,则当您尝试在用户登录时写入数据时,数据库将抛出异常。将列设置为NOTNULL意味着在插入新行时它们不能为NULL。在您的例子中,您希望使end列end datetime、last page等为空,而使date、IP、session ID、member ID等列不为空

您可以使用默认值,也可以将结束日期移动到新表中,这样就不必与开始日期同时填充。通常,这两个选项中的任何一个都比使用空日期更好。

我听说使用空colunms不好。因此,如果我使用NOTNULL默认值“xxx”,那么稍后在注销时更改表,是否会增加开销?