【发布时间】:2019-12-08 07:13:15
【问题描述】:
我对 SQL 语言和 MySQL 非常陌生。 我正在开发一个小时间和考勤应用程序IN PYTHON。它的作用是记录时钟的进出时间。然后计算工作小时数,并根据工作时间返回金额。
我想知道的是存储这些打卡和打卡时间的最佳方式以及如何获得时差?
到目前为止,我已经为员工制作了一张表格,如下所示:
CREATE TABLE employees (employee_id INT(50) AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(20),
last_name VARCHAR(25),
age INT(80),
mobile_number VARCHAR(16),
national_id VARCHAR(15),
guardian_national_id VARCHAR(15),
email_id VARCHAR(150),
password VARCHAR(255),
join_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
这里的join_date 是该员工的创建,其余的我猜是不言自明的。
我想到了 2 件事。要么制作两张单独的桌子,一张用于打卡,一张用于打卡。然后计算并返回在 Python 中工作的时间。为此,我不知道如何在这些表中验证employee_id。我是使用INNER JOIN 还是FOREIGN KEY。
或者,我可以只有一张表包含打卡和打卡列,但我仍然不知道如何验证员工 ID。
我知道start_time 会是TIMESTAMP DEFAULT CURRENT_TIMESTAMP,但是当我去更新下班时间时,这不会再次更新吗?
我迷路了。请帮帮我,这很痛苦。我在任何地方都找不到我的答案。 谢谢,
【问题讨论】:
-
您可以在
employee_id, clock_in_time, clock_out_time上拥有第二张桌子,然后您可以在employee_id上加入您的两张桌子。您还可以执行employee_id | action | timestamp之类的操作,其中操作为"Clock In"或"Clock Out"(目前),然后您只需要在其中一个操作发生时插入表格。有几种方法可以构建此架构。 -
我不认识杰克。我之前写了一个非常详细的问题,但后来我的笔记本电脑关机了,所有进度都丢失了。我非常沮丧。请原谅我。
-
无论您做什么,都不要制作两张单独的桌子(一张用于打卡,一张用于外出)。这些事件的一张桌子会很有意义。不管怎样,你必须把
employee_id作为这个额外表中的一列,因为这是你关键的一部分。 -
@JNevill 感谢您的回复。您能否更详细地描述作为答案?如果它有效,我会接受它。欣赏它:)
-
@JNevill 我明白了。所以只用一张桌子。我将如何设置这个表(CREATE TABLE)?而且我不知道“动作”是 MySQL 的一部分吗?
标签: mysql sql mysql-python