小编raz*_*tia的帖子

审计表:表或一个表的每个字段

除了审计字段之外,我的项目中的一切都很好.只是插入和更新正在我们想象的宇宙中进行审核.

我提出了一个类似于下一个例子的表:

但是我的团队没有想到同样的方式,他们在每个表上放置一列来跟踪更新或插入时间.当我问为什么?他们告诉我,这就是他们在工作中保持轨道的方式.

最后我放弃了,我把每个字段放在每张桌子上.由于除了我以外的所有团队,都告诉我把那些领域.

例:

他们的方法

Table Customer
+-------------+-------------+-----+--------------------------------+-------------+
| Name        | LastName    | ... | LastModification (Audit Field) | User        |
+-------------+-------------+-----+--------------------------------+-------------+
| varchar(30) | varchar(50) | ... | datetime                       | varchar(30) |
+-------------+-------------+-----+--------------------------------+-------------+
Run Code Online (Sandbox Code Playgroud)

我的方法

Table Customer
+-------------+-------------+-----+
| Name        | LastName    | ... |
+-------------+-------------+-----+
| varchar(30) | varchar(50) | ... |
+-------------+-------------+-----+

Table Audit
+-----------+------------+--------+------+-------------+
| TableName | TableField | Action | User | DateAndTime |
+-----------+------------+--------+------+-------------+
Run Code Online (Sandbox Code Playgroud)

所以问题是:

哪个是更好的设计,一个表保存事务的历史记录或每个表的一个字段?(正确和缺点)

database audit

18
推荐指数
1
解决办法
7800
查看次数

保持此架构清晰的最佳方法是什么?

目前我正在开发一个RFID项目,每个标签都附在一个物体上.一个物体可以是一个人,一台电脑,一支铅笔,一个盒子或者老板心中的任何东西.当然,每个对象都有不同的属性.

所以我想要一个表标签,我可以在其中保存系统中每个标签的寄存器(标签的注册).另外一个表格,我可以将标签与对象相关联并描述其他一些属性,这就是我们所做的.(没有真正的架构只是一个简化版本)

在此输入图像描述

突然间,我意识到这个模式在几个表中可以有相同的标记.例如,标签123可以同时在C和B中.这是不可能的,因为每个标签只能附加到一个对象上.

简单来说,我希望每个标记在数据库中不会出现多次.

我目前的做法 在此输入图像描述

我真正想要的是什么 在此输入图像描述

更新: 是的,TagID由最终用户选择.此外,TagID由标签阅读器给出,TagID是128位数.

新更新: 到目前为止的对象是:

- 药物(TagID,comercial_name,generic_name,amount,...)

- 机器(TagID,名称,描述,型号,制造商......)

- 患者(TagID,firstName,lastName,birthday,...)

所有属性(列或您命名的任何属性)都是非常不同的.

更新后更新

我正在研究一个带有医院RFID标签的系统.每个RFID标签都附着在一个物体上以便观察它们,不幸的是每个物体都有许多不同的属性.

对象可以是人,机器或药物,也可以是具有其他属性的新对象.

所以,我只想要一个灵活的切割器架构.这允许我引入新对象的类型,并让我轻松地向一个对象添加新属性.请记住,这个系统可能非常庞大.

例子:

Tag(TagID)
Medicine(generic_name, comercial_name, expiration_date, dose, price, laboratory, ...)
Machine(model, name, description, price, buy_date, ...)
Patient(PatientID, first_name, last_name, birthday, ...)
Run Code Online (Sandbox Code Playgroud)

我们必须只为一个对象关联一个标记.

注意:我真的不会说(或者也写):P抱歉.这里不是母语人士.

database sql-server polymorphic-associations

9
推荐指数
1
解决办法
494
查看次数

为什么比较返回整数而不是布尔值?

我正在测试一些代码

True = 2
print 1 - (1 == 1)
print True == (1 == 1)
Run Code Online (Sandbox Code Playgroud)

然后我就期待着:

-1
True
Run Code Online (Sandbox Code Playgroud)

但我得到了这个:

0
False
Run Code Online (Sandbox Code Playgroud)

所以,我做了任何 Python 程序员都会做的事情:反汇编它。

def f():
    True = 2
    print 1 - (1 == 1)
    print True == (1 == 1)

2           0 LOAD_CONST               1 (2)
            3 STORE_FAST               0 (True)

3           6 LOAD_CONST               2 (1)
            9 LOAD_CONST               2 (1)
           12 LOAD_CONST               2 (1)
           15 COMPARE_OP               2 (==)
           18 BINARY_SUBTRACT     
           19 PRINT_ITEM          
           20 PRINT_NEWLINE       

4          21 LOAD_FAST                0 (True)
           24 …
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
1
解决办法
1526
查看次数

在当前环境中使用点创建环境变量

我知道您可以使用该命令创建环境变量env.

例如:

env A.B=D bash
Run Code Online (Sandbox Code Playgroud)

问题是env需要一个命令,从而创建一个新的子进程.

bash

5
推荐指数
2
解决办法
5134
查看次数