javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

sql server-发票,发票行和修订的数据库设计

我正在为一家特许经营的CRM设计一个关系数据库的第二次主要迭代(需要大量重构),我需要有关最佳数据库设计实践的帮助,以存储作业发票和发票行,并对每项所做的任何更改都具有很强的审计追踪能力 发票。

当前模式

InvoiceRevisions桌子

InvoiceId (int) // Primary key
JobId (int)
StatusId (tinyint) // Pending, Paid or Deleted
UserId (int) // auditing user
Reference (nvarchar(256)) // unique natural string key with invoice number
Date (datetime)
Comments (nvarchar(MAX))

InvoiceRevisions Table

LineId (int) // Primary key
InvoiceId (int) // related to Invoices above
Quantity (decimal(9,4))
Title (nvarchar(512))
Comment (nvarchar(512))
UnitPrice (smallmoney)

修订架构

InvoiceRevisions桌子

RevisionId (int) // Primary key
InvoiceId (int)
JobId (int)
StatusId (tinyint) // Pending, Paid or Deleted
UserId (int) // auditing user
Reference (nvarchar(256)) // unique natural string key with invoice number
Date (datetime)
Total (smallmoney)

模式设计注意事项

1.存储发票的“已付款”或“待处理”状态是否明智?

收到的所有发票付款都存储在InvoiceRevisions表中(例如现金,信用卡,支票,银行存款)。 如果可以从Payments表中推断出与给定工作发票相关的所有收入,则在Invoices表中存储“已付款”状态是否有意义?

2.如何跟踪发票行项目修订?

我可以通过将状态更改以及发票总额和审核用户存储在发票修订表中(请参见上面的InvoiceRevisions)来跟踪发票的修订,但是很难维护发票行修订表。 有什么想法吗? 编辑:订单项应该是不变的。 这适用于“草稿”发票。

3.税收

存储发票数据时,应如何计入营业税(或SA中的14%增值税)?


编辑:好的反馈,伙计们。 根据定义,发票和发票行是不可变的,因此跟踪更改是不明智的。 但是,“草稿”发票必须由多个人编辑(例如,经理在技术员创建发票后应用折扣),然后才能发行...

4.定义和跟踪发票状态的最佳方法?

  1. 草案
  2. 发行
  3. 虚空

...必须朝一个方向改变?

trans by 2020-08-11T21:34:39Z

对数据库持久对象进行版本控制,您将如何?

(与版本化数据库模式无关)

与数据库接口的应用程序通常具有由许多表中的数据组成的域对象。 假设应用程序在CVS的意义上支持这些域对象的版本控制。

对于某些任意域对象,您将如何设计数据库架构来满足此要求? 有经验可以分享吗?

trans by 2020-08-11T17:43:10Z

数据库设计-主键的Sql数据类型-SQL Server?

我们应将哪种sql数据类型用于基数主键:

  1. 整型
  2. 比金特
  3. 数字
  4. 浮动
trans by 2020-08-10T15:12:54Z

Java-Firestore-如何构建Feed和关注系统

我将Firebase实时数据库用于我的测试社交网络应用程序,您可以在其中跟踪和接收关注的人的信息。 传统的社交网络。我的数据库结构如下:

Users
--USER_ID_1
----name
----email
--USER_ID_2
----name
----email

Posts
--POST_ID_1
----image
----userid
----date
--POST_ID_2
----image
----userid
----date

Timeline
--User_ID_1
----POST_ID_2
------date
----POST_ID_1
------date

我还有另一个节点“ Content”,其中仅包含所有用户帖子的ID。 因此,如果“ A”跟在“ B”之后,那么B的所有帖子ID都会添加到A的时间轴中。 如果B发布了一些内容,那么它也会被添加到其所有关注者的时间表中。

现在这是我的实时数据库解决方案,但显然存在一些可伸缩性问题

  • 如果某人有10,000个关注者,则在10,000个关注者的时间轴中添加了新帖子。
  • 如果某人发布的帖子数量超过每个新关注者在其时间轴中收到的所有帖子。

这些是一些问题。

现在,我正在考虑将整个事情转移到Firestore上,因为它声称是“可伸缩的”。 因此,我应该如何构造数据库,以便可以在Firestore中消除我在实时数据库中遇到的问题。

trans by 2020-08-08T15:59:38Z

在数据库中表示“重复发生的事件”的最佳方法是什么?

我正在尝试使用C#开发一个与调度程序和日历相关的事件应用程序,对此至关重要的要求是代表数据库中的重复事件。在数据库中表示重复事件的最佳方法是什么?

更多细节:

在创建活动时,我还将邀请发送给某些用户,应仅在指定的窗口(会议持续时间)内允许被邀请者登录会议,或者在被邀请者尝试登录前5分钟拒绝登录 会议的预定开始时间。

trans by 2020-08-06T00:31:47Z

数据库-名,中间名,姓。 为什么不全名?

我试图找到一种更好的方法来在表中存储人们的姓名。3个字段比1个字段存储人名有什么好处?

更新

这是有关存储名称和用户体验的有趣讨论和资源。

将名字/姓氏合并到一个字段中

trans by 2020-08-05T00:11:41Z

数据库-命名“用户”表的最佳实践是什么?

命名表格时,我尝试遵循以下三种最佳做法:

  • 切勿使用复数形式命名表(例如“用户”)
  • 切勿使用保留关键字(例如“用户”)命名表
  • 切勿在表名前加上“ tbl”或其他对象类型前缀

牢记所有这些,您如何建议命名将保存用户身份的表?

trans by 2020-08-01T18:09:35Z

SQL Server-唯一约束与唯一索引

我感兴趣的是了解开发人员更喜欢使用哪种技术在SQL Server中实施唯一性:UNIQUE CONSTRAINT或UNIQUE INDEX。 鉴于两者的物理实现几乎没有区别,您如何确定最佳选择?

除了性能以外,还有其他原因可以评估最佳解决方案吗?

两者之间是否具有数据库管理的优势?

trans by 2020-08-01T01:13:48Z

数据库设计-MySQL:bigint与

我一直在使用int(10),只是注意到Wordpress使用bigint(20)-为id自动递增使用bigint(20)和int(10)有什么不同? 我应该为id列使用哪一个?

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,

VS

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

谢谢。

trans by 2020-07-30T13:01:06Z

sql-通常,数据库中的每个表都应具有一个标识字段以用作PK吗?

即使按我的要求,这似乎也是重复的,但是我搜索了却没有找到它。 对于SO来说,这似乎是一个好问题-尽管我确信可以在许多博客等网站上找到它。 因此,与博客相比,辩论的话题更多。

我在加入时遇到了一个问题:获取太多记录。 我认为这是“扩展”。 我在联接集中添加了一个表,并且行数扩展了太多。 通常,发生这种情况时,我会添加联接中涉及的所有ID字段的选择。 这样,扩展发生的位置就很明显了,我可以更改连接的ON来进行修复。 除非在这种情况下,否则我添加的表没有ID字段。 对我来说,这是一个问题。 但是也许我错了。

问题:数据库中的每个表都应该有一个用作PK的IDENTITY字段吗? 每个表中都有一个ID字段是否有任何弊端? 如果您有理由确定该表永远不会在PK / FK关系中使用该怎么办?

相关,但不重复:拥有身份列不是一个好主意吗?

显然,这场辩论已经进行了一段时间。 应当知道。

这篇文章(代理与自然键)也很重要。

trans by 2020-07-28T17:47:52Z

sql-复合主键:是好是坏

我一直在设计用于在线商店系统的数据库。 我在阅读本网站上的一些帖子时遇到的问题是,尽管在下面我要解释的情况下我可以使用复合主键,但这确实是一个坏习惯(根据我在这方面阅读的帖子) 在stackoveflow上,很多人说这是一个不好的做法,所以这就是我要问的原因。

我想将订单的付款存储在单独的表格中。 原因是,一个订单可以包含许多项目,这些项目以多对多关系的形式在单独的表中处理。 现在,如果我在付款表中不使用复合主键,我将失去我独特的OrderId

[PaymentId] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[OrderId] INT NOT NULL PRIMARY KEY --Also a Foreign Key--

现在,如果我只是删除2986648263299957957760的主键,我将在这里失去一对一的关系,因此Many OrderIds can be associated to many PaymentIds,而我并不想这样做。

这就是为什么先前在这里提出的问题得出的结论(主要是)认为组合键是一个坏主意的原因。 因此,我想为自己澄清一下; 如果不好,那么最佳实践是什么?

trans by 2020-07-28T17:03:48Z

python-Django模型-如何过滤ForeignKey对象的数量

我有一个模型AB,就像这样:

class A(models.Model):
  title = models.CharField(max_length=20)
  (...)

class B(models.Model):
  date = models.DateTimeField(auto_now_add=True)
  (...)
  a = models.ForeignKey(A)

现在,我有一些AB对象,并且我想获得一个查询,该查询选择所有A指向少于B的对象。

A就像一个池子,用户(B)加入池。 如果仅加入1或0,则根本不应该显示该池。

这样的模型设计可能吗? 还是我应该修改一下?

trans by 2020-07-26T07:53:25Z

sql-哪些mysql数据库表和关系将支持带有条件问题的问答调查?

我现在正在开发一个相当简单的调查系统。 数据库模式将很简单:一个question A表与question B表成一对多关系,与A表和PossibleAnswers表成一对多关系。

最近,该客户意识到她希望只向那些对某个先前问题做出特定回答的人显示某些问题(例如,您是否购买香烟?接着是您最喜欢的香烟品牌是什么?),没有必要再问第二个问题了。 向不吸烟者提问)。

现在,我开始怀疑,根据我的数据库模式,实现此条件问题的最佳方法是什么? 如果question A有2个可能的答案:A和B,并且仅当答案是A时才对用户显示question B

编辑:我正在寻找的是一种将有关需求的信息存储在数据库中的方法。 数据的处理可能会在应用程序端完成,因为我的SQL技能很糟糕;)

trans by 2020-07-23T04:31:31Z

数据库设计-为何oracle区分大小写?

有没有原因使Oracle区分大小写,而默认情况下诸如SQL Server和MySQL则不区分大小写?

我知道有启用/禁用区分大小写的方法,但是oracle与其他数据库不同似乎有些奇怪。

我还试图了解区分大小写的原因。 我可以看到“ Table”和“ TaBlE”在哪里等效,而不是等效,但是是否有一个示例,区分大小写实际上会有所不同?

我对数据库有些陌生,目前正在上课。

trans by 2020-07-22T20:49:33Z

如何在MySQL中为数据库中的所有表生成DDL

如何一次为MySQL数据库中的所有表生成DDL。 我知道以下查询将输出表的DDL。 但是我想要一次所有表的DDL,因为我的数据库中有数百个表。

show create table <database name>.<table name>;

例如:

show create table projectdb.customer_details; 

上面的查询将导致customer_details表的DDL。

我在Windows OS上将MySQL与MySQL工作台一起使用。

trans by 2020-07-22T01:12:44Z

就数据库而言,“为了正确而标准化,为了性能而非标准化”是正确的口头禅吗?

规范化导致许多基本和令人希望的特性,包括审美愉悦。 此外,理论上它也是“正确的”。 在这种情况下,将非规范化作为一种折衷方案,即一种修正,以实现性能。除了性能之外,还有其他原因可以使数据库非规范化吗?

trans by 2020-07-19T02:03:30Z

数据库-逻辑数据模型和概念数据模型有什么区别?

逻辑数据模型和概念数据模型有什么区别?

trans by 2020-07-18T07:24:52Z

sql-实现软删除的最佳方法是什么?

目前正在处理一个项目,我们必须对大多数用户(用户角色)实施软删除。 我们决定在数据库中的每个表上添加SELECT字段,如果特定用户角色在特定记录上点击了删除按钮,则将其设置为where is_deleted='1'

为了将来进行维护,每个SELECT查询将需要确保它们不包括记录where is_deleted='1'

是否有更好的解决方案来实现软删除?

更新:我还应该注意,我们有一个Audit数据库,该数据库跟踪对Application数据库中所有表/字段的更改(字段,旧值,新值,时间,用户,ip)。

trans by 2020-07-17T22:09:22Z

在Python中将JSON转换为SQLite-如何将JSON键正确映射到数据库列?

我想将创建的JSON文件转换为SQLite数据库。

我的意图是稍后决定最好的数据容器和入口点是json(通过文本编辑器输入数据)或SQLite(通过类似电子表格的GUI(例如SQLiteStudio)输入数据)。

我的json文件是这样的(包含我城市中某些十字路口的交通数据):

...
"2011-12-17 16:00": {
    "local": "Av. Protásio Alves; esquina Ramiro Barcelos",
    "coord": "-30.036916,-51.208093",
    "sentido": "bairro-centro",
    "veiculos": "automotores",
    "modalidade": "semaforo 50-15",
    "regime": "típico",
    "pistas": "2+c",
    "medicoes": [
        [32, 50],
        [40, 50],
        [29, 50],
        [32, 50],
        [35, 50]
        ]
    },
"2011-12-19 08:38": {
    "local": "R. Fernandes Vieira; esquina Protásio Alves",
    "coord": "-30.035535,-51.211079",
    "sentido": "único",
    "veiculos": "automotores",
    "modalidade": "semáforo 30-70",
    "regime": "típico",
    "pistas": "3",
    "medicoes": [
        [23, 30],
        [32, 30],
        [33, 30],
        [32, 30]
        ]
    }
...

并且我用以下几行Python代码创建了具有一对多关系的漂亮数据库:

import sqlite3

db = sqlite3.connect("fluxos.sqlite")
c = db.cursor()

c.execute('''create table medicoes
         (timestamp text primary key,
          local text,
          coord text,
          sentido text,
          veiculos text,
          modalidade text,
          pistas text)''')

c.execute('''create table valores
         (id integer primary key,
          quantidade integer,
          tempo integer,
          foreign key (id) references medicoes(timestamp))''')

但是问题是,当我准备插入带有诸如c.execute("insert into medicoes values(?,?,?,?,?,?,?)" % keys)之类的实际数据的行时,我意识到,由于从JSON文件加载的字典没有特殊顺序,因此无法正确映射到数据库的列顺序 。

因此,我问:“我应使用哪种策略/方法以编程方式从JSON文件中的每个“块”中读取密钥(在本例中为“本地”,“协调”,“ sentido”,“ veiculos”,“ modalidade” “,” regime“,” pistas“和” medicoes“),以相同的顺序创建具有列的数据库,然后插入具有适当值的行”?

我在Python方面有丰富的经验,但是从SQL才刚刚开始,所以我想对一些好的做法提供一些建议,但不一定是准备好的方法。

trans by 2020-07-17T18:37:35Z

数据库-主键与唯一约束?

我目前正在设计一个全新的数据库。 在学校里,我们总是学会在每个桌子上放一个主键。

我读了很多文章/讨论/新闻组的帖子,说最好使用唯一约束(对于某些数据库也称为唯一索引)而不是PK。

您的观点是什么?

trans by 2020-07-13T23:25:03Z

1 2 3 4 5 6 7 8 下一页 共8页